summaryrefslogtreecommitdiff
path: root/obsolete/support
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /obsolete/support
Initial commit
Diffstat (limited to 'obsolete/support')
-rw-r--r--obsolete/support/abcwin/read1st.txt135
-rw-r--r--obsolete/support/atops/atops.doc79
-rw-r--r--obsolete/support/atops/readme5
-rw-r--r--obsolete/support/epspdf-extra/README6
-rw-r--r--obsolete/support/ghostscript/AFPL/Commprod.htm314
-rw-r--r--obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_1.41p1.diff.bz2bin0 -> 1801 bytes
-rw-r--r--obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_MD5SUMS25
-rw-r--r--obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_SHA1SUMS25
-rw-r--r--obsolete/support/ghostscript/AFPL/Index82
-rw-r--r--obsolete/support/ghostscript/AFPL/PUBLIC229
-rw-r--r--obsolete/support/ghostscript/AFPL/README10
-rw-r--r--obsolete/support/ghostscript/AFPL/gs854/MD5SUMS7
-rw-r--r--obsolete/support/ghostscript/AFPL/gs854/SHA1SUMS7
-rw-r--r--obsolete/support/latex2html/README238
-rw-r--r--obsolete/support/latex2html/manual.pdfbin0 -> 935594 bytes
-rw-r--r--obsolete/support/latex2html/manual.ps.gzbin0 -> 422992 bytes
-rw-r--r--obsolete/support/latexmk/BUGS5
-rw-r--r--obsolete/support/latexmk/README93
-rw-r--r--obsolete/support/latexmk/TODO7
-rw-r--r--obsolete/support/latexmk/contrib/README22
-rw-r--r--obsolete/support/latexmk/contrib/events.c.patch32
-rw-r--r--obsolete/support/latexmk/contrib/xdvi.c.patch32
-rw-r--r--obsolete/support/latexmk/file_id.lst9
-rw-r--r--obsolete/support/latexmk/latexmk1340
-rw-r--r--obsolete/support/latexmk/latexmk.1474
-rw-r--r--obsolete/support/pdftexenc/8x.enc259
-rw-r--r--obsolete/support/pdftexenc/8xi.enc260
-rw-r--r--obsolete/support/pdftexenc/ACaslon-AltBold.enc260
-rw-r--r--obsolete/support/pdftexenc/ACaslon-AltBoldItalic.enc260
-rw-r--r--obsolete/support/pdftexenc/ACaslon-AltItalic.enc260
-rw-r--r--obsolete/support/pdftexenc/ACaslon-AltRegular.enc260
-rw-r--r--obsolete/support/pdftexenc/ACaslon-AltSemibold.enc260
-rw-r--r--obsolete/support/pdftexenc/ACaslon-AltSemiboldItalic.enc260
-rw-r--r--obsolete/support/pdftexenc/ACaslon-Ornaments.enc260
-rw-r--r--obsolete/support/pdftexenc/AGaramondAlt-Italic.enc260
-rw-r--r--obsolete/support/pdftexenc/AGaramondAlt-Regular.enc260
-rw-r--r--obsolete/support/pdftexenc/DidotLH-OrnamentsOne.enc260
-rw-r--r--obsolete/support/pdftexenc/DidotLH-OrnamentsTwo.enc260
-rw-r--r--obsolete/support/pdftexenc/Symbol.enc58
-rw-r--r--obsolete/support/pdftexenc/ZapfDingbats.enc260
-rw-r--r--obsolete/support/pdftexenc/ascii.enc50
-rw-r--r--obsolete/support/pdftexenc/cmex.enc90
-rw-r--r--obsolete/support/pdftexenc/cminch.enc69
-rw-r--r--obsolete/support/pdftexenc/cmitext.enc71
-rw-r--r--obsolete/support/pdftexenc/cmittext.enc71
-rw-r--r--obsolete/support/pdftexenc/cmmex.enc90
-rw-r--r--obsolete/support/pdftexenc/cmmi.enc71
-rw-r--r--obsolete/support/pdftexenc/cmr.enc260
-rw-r--r--obsolete/support/pdftexenc/cmsy.enc80
-rw-r--r--obsolete/support/pdftexenc/cmtex.enc71
-rw-r--r--obsolete/support/pdftexenc/cmtext.enc70
-rw-r--r--obsolete/support/pdftexenc/cmtextf.enc70
-rw-r--r--obsolete/support/pdftexenc/cmtextit.enc71
-rw-r--r--obsolete/support/pdftexenc/cmttext.enc70
-rw-r--r--obsolete/support/pdftexenc/csinch.enc74
-rw-r--r--obsolete/support/pdftexenc/csitext.enc77
-rw-r--r--obsolete/support/pdftexenc/csittext.enc78
-rw-r--r--obsolete/support/pdftexenc/cstext.enc83
-rw-r--r--obsolete/support/pdftexenc/cstextf.enc80
-rw-r--r--obsolete/support/pdftexenc/csttext.enc81
-rw-r--r--obsolete/support/pdftexenc/euex.enc260
-rw-r--r--obsolete/support/pdftexenc/eufb.enc260
-rw-r--r--obsolete/support/pdftexenc/eufm.enc260
-rw-r--r--obsolete/support/pdftexenc/eurm.enc260
-rw-r--r--obsolete/support/pdftexenc/eusm.enc260
-rw-r--r--obsolete/support/pdftexenc/isolatin1.enc54
-rw-r--r--obsolete/support/pdftexenc/lasy.enc258
-rw-r--r--obsolete/support/pdftexenc/lcircle.enc260
-rw-r--r--obsolete/support/pdftexenc/line.enc261
-rw-r--r--obsolete/support/pdftexenc/logo.enc260
-rw-r--r--obsolete/support/pdftexenc/msam.enc260
-rw-r--r--obsolete/support/pdftexenc/msbm.enc260
-rw-r--r--obsolete/support/pdftexenc/pdftex.map678
-rw-r--r--obsolete/support/pdftexenc/standard.enc52
-rw-r--r--obsolete/support/pdftexenc/symbol.enc58
-rw-r--r--obsolete/support/pdftexenc/xyatip.enc260
-rw-r--r--obsolete/support/pdftexenc/xybsql10.enc260
-rw-r--r--obsolete/support/pdftexenc/xycirc10.enc260
-rw-r--r--obsolete/support/pdftexenc/xycm.enc260
-rw-r--r--obsolete/support/pdftexenc/xydash10.enc260
-rw-r--r--obsolete/support/png2pdf/DOCU/ChooseDirectory.pngbin0 -> 310 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/Exit.pngbin0 -> 364 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/capa01.pngbin0 -> 27410 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/capa02.pngbin0 -> 42311 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/capa03.pngbin0 -> 45203 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/capa04.pngbin0 -> 46502 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/capa05.pngbin0 -> 44013 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/capa06.pngbin0 -> 44573 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/old/index.html29
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/old/install.html51
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/old/usage.html304
-rw-r--r--obsolete/support/png2pdf/DOCU/HTML/stefan_255_rgba.pngbin0 -> 12887 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/Options.pngbin0 -> 420 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/Run.pngbin0 -> 419 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/beamtest.nav8
-rw-r--r--obsolete/support/png2pdf/DOCU/beamtest.pdfbin0 -> 30249 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/beamtest.snm0
-rw-r--r--obsolete/support/png2pdf/DOCU/beamtest.tex21
-rw-r--r--obsolete/support/png2pdf/DOCU/capa01.pngbin0 -> 27410 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/capa02.pngbin0 -> 42311 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/capa03.pngbin0 -> 45203 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/capa04.pngbin0 -> 46502 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/capa05.pngbin0 -> 44013 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/capa06.pngbin0 -> 44573 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/changes.html122
-rw-r--r--obsolete/support/png2pdf/DOCU/create-rectangle.pngbin0 -> 20629 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/depgr.fig151
-rw-r--r--obsolete/support/png2pdf/DOCU/depgr.mp1416
-rw-r--r--obsolete/support/png2pdf/DOCU/depgr.mps1160
-rw-r--r--obsolete/support/png2pdf/DOCU/errors366
-rw-r--r--obsolete/support/png2pdf/DOCU/faq.html70
-rw-r--r--obsolete/support/png2pdf/DOCU/fbt.pngbin0 -> 7310 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/fbt/fbt.pl95
-rw-r--r--obsolete/support/png2pdf/DOCU/fbt/fbt.pngbin0 -> 7310 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/fbt/fbt.svg51
-rw-r--r--obsolete/support/png2pdf/DOCU/fbt/test.html6
-rw-r--r--obsolete/support/png2pdf/DOCU/index.html70
-rw-r--r--obsolete/support/png2pdf/DOCU/inst_w32.pdfbin0 -> 113282 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/inst_w32.tex376
-rw-r--r--obsolete/support/png2pdf/DOCU/install.html123
-rw-r--r--obsolete/support/png2pdf/DOCU/interpolate.html73
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/create-rectangle.pngbin0 -> 20629 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/mgrid.pngbin0 -> 30295 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/original.svg157
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.fig27
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.pngbin0 -> 4372 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.svg157
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/test.html7
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/x.out104
-rw-r--r--obsolete/support/png2pdf/DOCU/logo/zoom-in.pngbin0 -> 28447 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/makefile61
-rw-r--r--obsolete/support/png2pdf/DOCU/mgrid.pngbin0 -> 30295 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/mkdocu.sh3
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-1507.pdfbin0 -> 104961 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-logo.fig25
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-logo.fig.bak21
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-logo.pdf143
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-logo.pngbin0 -> 4372 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-logo.svg157
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-logo1.pdf172
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-logo2.pdf173
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf-logo3.pdf52
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf.pdfbin0 -> 159359 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf.ps2945
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf.svg157
-rw-r--r--obsolete/support/png2pdf/DOCU/png2pdf.tex471
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg01.pngbin0 -> 6689 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg02.pngbin0 -> 7220 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg03.pngbin0 -> 7590 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg04.pngbin0 -> 30819 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg05.pngbin0 -> 6938 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg06.pngbin0 -> 7490 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg07.pngbin0 -> 7819 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg08.pngbin0 -> 15959 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg09.pngbin0 -> 7457 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg10.pngbin0 -> 7749 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg11.pngbin0 -> 7536 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg12.pngbin0 -> 7440 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg13.pngbin0 -> 7554 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppg14.pngbin0 -> 22676 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/ppgui.html282
-rw-r--r--obsolete/support/png2pdf/DOCU/projbody.txt83
-rw-r--r--obsolete/support/png2pdf/DOCU/projects.html129
-rw-r--r--obsolete/support/png2pdf/DOCU/projfoot.txt14
-rw-r--r--obsolete/support/png2pdf/DOCU/projhead.txt29
-rw-r--r--obsolete/support/png2pdf/DOCU/sfl1.pdf131
-rw-r--r--obsolete/support/png2pdf/DOCU/sfl1.pngbin0 -> 50194 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/sfl2.pdf150
-rw-r--r--obsolete/support/png2pdf/DOCU/sfl2.pngbin0 -> 47506 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/sflogo.pngbin0 -> 5076 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/stefan_255_rgba.bb1
-rw-r--r--obsolete/support/png2pdf/DOCU/stefan_255_rgba.pngbin0 -> 12887 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/style.css241
-rw-r--r--obsolete/support/png2pdf/DOCU/usage.html288
-rw-r--r--obsolete/support/png2pdf/DOCU/x1.eps95
-rw-r--r--obsolete/support/png2pdf/DOCU/x1.pdf93
-rw-r--r--obsolete/support/png2pdf/DOCU/x2.eps314
-rw-r--r--obsolete/support/png2pdf/DOCU/x2.pdf189
-rw-r--r--obsolete/support/png2pdf/DOCU/x3.eps50
-rw-r--r--obsolete/support/png2pdf/DOCU/x3.pdf233
-rw-r--r--obsolete/support/png2pdf/DOCU/x4.pdf241
-rw-r--r--obsolete/support/png2pdf/DOCU/x5-u.pdfbin0 -> 98422 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/x5.pdf376
-rw-r--r--obsolete/support/png2pdf/DOCU/xx.pdfbin0 -> 149696 bytes
-rw-r--r--obsolete/support/png2pdf/DOCU/zoom-in.pngbin0 -> 28447 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/Makefile.in13
-rwxr-xr-xobsolete/support/png2pdf/Java/Png2PdfGUI/bin/create-jar7
-rwxr-xr-xobsolete/support/png2pdf/Java/Png2PdfGUI/bin/manifest.in2
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ChooseDirectory.pngbin0 -> 310 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/Exit.pngbin0 -> 364 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/Options.pngbin0 -> 420 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfController.java627
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfDialog.java550
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfFileFilter.java21
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfGUI.java42
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfWindow.java1155
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/Run.pngbin0 -> 419 bytes
-rwxr-xr-xobsolete/support/png2pdf/Java/Png2PdfGUI/src/compile-archive17
-rwxr-xr-xobsolete/support/png2pdf/Java/Png2PdfGUI/src/compile-archive.in16
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg01.pngbin0 -> 6689 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg02.pngbin0 -> 7220 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg03.pngbin0 -> 7590 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg04.pngbin0 -> 30819 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg05.pngbin0 -> 6938 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg06.pngbin0 -> 7490 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg07.pngbin0 -> 7819 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg08.pngbin0 -> 15959 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg09.pngbin0 -> 7457 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg10.pngbin0 -> 7749 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg11.pngbin0 -> 7536 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg12.pngbin0 -> 7440 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg13.pngbin0 -> 7554 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg14.pngbin0 -> 22676 bytes
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppgui.html212
-rw-r--r--obsolete/support/png2pdf/Java/Png2PdfGUI/src/style.css241
-rw-r--r--obsolete/support/png2pdf/Makefile.in72
-rw-r--r--obsolete/support/png2pdf/README96
-rw-r--r--obsolete/support/png2pdf/bsdlic.txt35
-rwxr-xr-xobsolete/support/png2pdf/config.h.in50
-rwxr-xr-xobsolete/support/png2pdf/configure8035
-rwxr-xr-xobsolete/support/png2pdf/configure.in70
-rw-r--r--obsolete/support/png2pdf/diff.ouzt128
-rw-r--r--obsolete/support/png2pdf/makefile.msc201
-rw-r--r--obsolete/support/png2pdf/man/man1/png2pdf.1274
-rw-r--r--obsolete/support/png2pdf/png2pdf-gui.in8
-rw-r--r--obsolete/support/png2pdf/png2pdf.c1891
-rw-r--r--obsolete/support/png2pdf/png2pdf.ctr1848
-rw-r--r--obsolete/support/png2pdf/png2pdf.h241
-rw-r--r--obsolete/support/png2pdf/png2pdf.str153
-rw-r--r--obsolete/support/png2pdf/png2pdfm.c591
-rw-r--r--obsolete/support/png2pdf/png2pdfm.ctr579
-rw-r--r--obsolete/support/png2pdf/pod/pod1/png2pdf.pod169
-rwxr-xr-xobsolete/support/png2pdf/prep-dist.sh11
-rwxr-xr-xobsolete/support/png2pdf/share/png2pdf/de/png2pdf.txt112
-rwxr-xr-xobsolete/support/png2pdf/share/png2pdf/en/png2pdf.txt112
-rw-r--r--obsolete/support/png2pdf/sources.lst8
-rwxr-xr-xobsolete/support/prv/prv1907
-rwxr-xr-xobsolete/support/prv/prvps183
-rw-r--r--obsolete/support/texshell/ts-9804.Readme.HPUX10
-rw-r--r--obsolete/support/texshell/ts.lsm19
-rw-r--r--obsolete/support/ttf2tex/README102
-rw-r--r--obsolete/support/ttf2tex/ttf2tex.cfg129
-rw-r--r--obsolete/support/ttf2tex/ttf2tex.pdfbin0 -> 157083 bytes
-rw-r--r--obsolete/support/ttf2tex/ttf2tex.sh2565
-rw-r--r--obsolete/support/ttf2tex/ttf2tex.tex519
-rw-r--r--obsolete/support/undump/0UNSUPPORTED5
-rw-r--r--obsolete/support/undump/Encore/BU-README12
-rw-r--r--obsolete/support/undump/Encore/Makefile13
-rw-r--r--obsolete/support/undump/Encore/dumpcore.c43
-rw-r--r--obsolete/support/undump/Encore/dumpit.c74
-rw-r--r--obsolete/support/undump/Encore/undo.c480
-rw-r--r--obsolete/support/undump/Encore/undo.h70
-rw-r--r--obsolete/support/undump/Encore/undump.128
-rw-r--r--obsolete/support/undump/Encore/undump.c374
-rw-r--r--obsolete/support/undump/Encore/unexec.c1143
-rw-r--r--obsolete/support/undump/Encore/unexec.c-dist1134
-rw-r--r--obsolete/support/undump/Encore/unexec.diff91
-rw-r--r--obsolete/support/undump/Makefile.BALANCE11
-rw-r--r--obsolete/support/undump/Makefile.PYR9
-rw-r--r--obsolete/support/undump/Makefile.SUN414
-rw-r--r--obsolete/support/undump/Makefile.SUN_V214
-rw-r--r--obsolete/support/undump/Makefile.SUN_V314
-rw-r--r--obsolete/support/undump/Makefile.SYS_V14
-rw-r--r--obsolete/support/undump/Makefile.VAX4_213
-rw-r--r--obsolete/support/undump/Makefile.VAX4_313
-rw-r--r--obsolete/support/undump/Setup.BALANCE4
-rw-r--r--obsolete/support/undump/Setup.PYR7
-rw-r--r--obsolete/support/undump/Setup.SUN45
-rw-r--r--obsolete/support/undump/Setup.SUN_V25
-rw-r--r--obsolete/support/undump/Setup.SUN_V35
-rw-r--r--obsolete/support/undump/Setup.SYS_V5
-rw-r--r--obsolete/support/undump/Setup.VAX4_25
-rw-r--r--obsolete/support/undump/Setup.VAX4_34
-rw-r--r--obsolete/support/undump/scanargs.1446
-rw-r--r--obsolete/support/undump/scanargs.c879
-rw-r--r--obsolete/support/undump/undump.128
-rw-r--r--obsolete/support/undump/undump.BALANCE.c298
-rw-r--r--obsolete/support/undump/undump.PYR.c287
-rw-r--r--obsolete/support/undump/undump.SUN4.c367
-rw-r--r--obsolete/support/undump/undump.SUN_V2.c352
-rw-r--r--obsolete/support/undump/undump.SUN_V3352
-rw-r--r--obsolete/support/undump/undump.SUN_V3.c352
-rw-r--r--obsolete/support/undump/undump.SYS_V.c250
-rw-r--r--obsolete/support/undump/undump.VAX4_2.c272
-rw-r--r--obsolete/support/undump/undump.VAX4_3.c264
-rw-r--r--obsolete/support/win32-emacs-auctex/LICENSES316
-rw-r--r--obsolete/support/win32-emacs-auctex/README.md69
-rw-r--r--obsolete/support/win32-emacs-auctex/doc/auctex.pdfbin0 -> 623816 bytes
-rw-r--r--obsolete/support/win32-emacs-auctex/doc/dired-ref.pdfbin0 -> 80830 bytes
-rw-r--r--obsolete/support/win32-emacs-auctex/doc/elisp.pdfbin0 -> 3809242 bytes
-rw-r--r--obsolete/support/win32-emacs-auctex/doc/emacs-ref.pdfbin0 -> 111813 bytes
-rw-r--r--obsolete/support/win32-emacs-auctex/doc/emacs-xtra.pdfbin0 -> 382565 bytes
-rw-r--r--obsolete/support/win32-emacs-auctex/doc/emacs.pdfbin0 -> 2503294 bytes
-rw-r--r--obsolete/support/win32-emacs-auctex/doc/preview-latex.pdfbin0 -> 360782 bytes
-rw-r--r--obsolete/support/win32-emacs-auctex/doc/tex-ref.pdfbin0 -> 153763 bytes
-rw-r--r--obsolete/support/windex/windex.c927
-rw-r--r--obsolete/support/windex/windex.tex66
-rw-r--r--obsolete/support/windex/windexample.idx61
-rw-r--r--obsolete/support/windex/windexample.index22
-rw-r--r--obsolete/support/windex/windexdoc.tex403
-rw-r--r--obsolete/support/xpdf/CHANGES2149
-rw-r--r--obsolete/support/xpdf/README2
302 files changed, 60606 insertions, 0 deletions
diff --git a/obsolete/support/abcwin/read1st.txt b/obsolete/support/abcwin/read1st.txt
new file mode 100644
index 0000000000..fb17bb96e1
--- /dev/null
+++ b/obsolete/support/abcwin/read1st.txt
@@ -0,0 +1,135 @@
+ ABCWIN Package
+ May 4, 1995
+
+The files in this directory are an informal compilation of stripped-down
+software that is intended for Windows users to take .abc music notation text
+files and convert them to viewable and printable music notation.
+
+WARNING: Setting this up requires familiarity with a number of aspects
+of MSDOS. A Windows-only user will most likely get lost doing this. This
+is not a user-friendly setup process. Anyone who can contribute better
+installation instructions is heartily welcome.
+
+All enclosed software was written by other people, and credit is given in the
+appropriate read-me files 00README.TXT (LaTex), SB39TEX.DOC (sbTeX),
+SB39TM01.RME (big sbTeX for 386 machines), MUSICTEX.RME (MusicTex), and
+README1.4 (ABC2MTEX). The reason this package was created was because the
+process of setting all those packages up from scratch, including the obstacle
+of required FTP access, was a major hindrance to wider usage of the abc
+musical notation, especially centered around the exchanging of Irish dance
+tunes on IRTRAD-L.
+
+Necessary files: ------------------------------------
+ (if you're downloading this from celtic.stanford.edu, they're all in
+ \pub\tunes\abcwin)
+ (if you're downloading this from CTAN, you'll find dviwin29 under
+ \dviware\dviwin)
+
+1. readme.1st (this file)
+2. dviwin29.zip
+3. abcwin.zip
+4. { abcfonts.zip (if you have a 360-dots-per-inch printer)
+ { (or)
+ { not360.zip (fonts for other printer resolutions than 360 dpi).
+5. pkz204g.exe (if you don't already have an unzipper of some kind)
+
+ ------------------------------------
+
+ More fonts (and other optional TeX-related stuff) are available
+ via FTP from the CTAN archives:
+ (Texas) ftp.shsu.edu
+ (England) ftp.tex.ac.uk
+ (Germany) ftp.dante.de
+
+ If at some point you use TeX for something more ambitious than
+ just printing usrguide.tex and folk tunes, you'll run into all
+ sorts of file-not-found errors, but you can get the missing files at
+ the above sites. The Texas site has a search utility if you access
+ it via the Web: http://www.shsu.edu/cgi-bin/ctan-index
+
+ -------------------------------------
+
+
+ INSTALLATION
+
+(If you don't have PKUNZIP, there's a copy of PKZ204G.EXE in \pub\tunes\abcwin,
+and you just have to run it, i.e., issue the MSDOS command pkz204g, probably
+within an empty directory that you've copied it to. Read the documentation.)
+
+1) Begin with dviwin29.zip, unzip it in an empty directory and follow
+ the directions in README, especially parts 1 and 2.
+
+2) Then unzip either abcfonts.zip or not360.zip, according to what
+ resolution printer you have. These PK fonts are necessary for, and
+ are explained in, DVI2WIN. You need to tell DVI2WIN where they are.
+
+Now you can test the Windows part of all this. Test DVI2WIN with the test
+document included with dviwin29.zip (you should get one page with an economics-
+related graph and some text). Then test DVI2WIN with the file
+\abcwin\abc2mtex\usrguide.dvi
+If you get a blank screen or garbage then DVI2WIN didn't find the .pk fonts
+which you unzipped in step 2 above. Fix this first (see the DVI2WIN docs).
+
+3) Unzip abcwin in any empty directory and follow the directions in
+ ABC2DVI.TXT.
+
+4) Then, after following all those directions (yes, it may take a while
+ to do everything), you should be able to issue the command
+
+latex usrguide (from inside your new ABC2MTEX directory)
+ (do this twice, ignore all the complaints from TeX the first pass)
+
+ then in Windows, open DVI2WIN, and with that, open the file
+ usrguide.dvi that you just created. Read this, which is
+ Chris Walshaw's ABC2MTEX ver 1.4 manual, and try printing it.
+ This is also a good test that your whole setup is working.
+
+
+ WHAT'S WHERE
+
+Inside \abcwin you should have:
+ ..\bigfmt (2 format files necessary for TeX and laTeX to run)
+ ..\abc2mtex (Chris Walshaw's ABC2MTEX v 1.4)
+ I also store all my abc tunes in this directory,
+ with suffix ".abc"
+ ..\fonttfms (font files necessary for TeX to generate .dvi files)
+ ..\inputs (TeX macro files called during .dvi generation)
+
+Then in your \texfonts directory are all your .pk fonts divided up into
+ subdirectories named by their dpi resolutions.
+
+
+ EXAMPLE OF USAGE
+
+You can now take, for example, emailed tunes like:
+
+X:1
+T:Off to California
+M:4/4
+R:hornpipe
+E:7
+K:G
+(3DEF|GFGB AGED|GBdg e2 (3def|gfgd edBG|ABAG E2 (3DEF|GFGB AGED|\
+GBdg e2 (3def|gfgd edBG|(3ABA GF G2::d|gfeg fedf|edef edB2|\
+(3def gd edBG|ABAG E2 (3DEF|GFGB AGED|GBdg e2 (3def|gfgd edBG|(3ABA GF G3:|
+
+cut and paste them into a text file, (try that with this example) run it
+through ABC2MTEX and then TeX (see below) from within a DOS session under
+Windows (you know, the big MS-DOS icon in the Main menu), jump over to
+DVI2WIN and instantly (depending on the speed of your computer) see real
+music! If you don't mind reading off of your screen, you have now eliminated
+all paper from the process of receiving an email and learning the tune in it.
+
+An example of the commands you would give using the above hornpipe, put in a
+text file called EXAMPLE.ABC in the directory c:\abcwin\abc2mtex\, if you're
+set up in drive C:, looks like this:
+
+C:\ABCWIN\ABC2MTEX>abc2mtex m example
+C:\ABCWIN\ABC2MTEX>tex music
+
+That's it! Then, back in Windows, use DVI2WIN to open the file
+"c:\abcwin\abc2mtex\music.dvi", which TeX just generated for you.
+
+Alan Ng
+agng@students.wisc.edu
+Madison, WI
diff --git a/obsolete/support/atops/atops.doc b/obsolete/support/atops/atops.doc
new file mode 100644
index 0000000000..4bb3d8957d
--- /dev/null
+++ b/obsolete/support/atops/atops.doc
@@ -0,0 +1,79 @@
+ATOPS V1.0 1993 (ASCII Text to Postscript converter)
+
+USAGE: ATOPS [options] file(s) [options] files(s) ...
+
+where options apply to all following files on the command line unless later
+changed. Default options can be obtained by specifying a '-' character
+immediately after the option character. Files can be specified using UNIX
+wildcard specifications. Available options w/defaults are:
+
+ -a e|o; print (e)ven or (o)dd sheets. Default: print all sheets.
+ must be used before first file spec only
+ -A ; list ADOBE font codes. Default: none
+ -b ; do not draw border around pages. Default: draw border
+ -c ; clip printed line to line width. Default: wrap lines
+ -d ; encapsulate file with control D characters. Default: no control D.
+ must be used before first file spec only
+ -D n|t; print file in duplex mode on supported printer and optionally
+ [(n)o](t)umble back side. Default: no duplex, no tumble. must be used
+ before first file spec only
+ -f FcFs; fontcode,Fc and fontsize,Fs (e.g. C11 => Courier at 11pt).
+ fontcode is based on the 35 standard Adobe typefaces. if fontcode
+ is not recognized, it will be used as the fontname. The codes are:
+
+ agb AvantGarde-Book hnbo Helvetica-Narrow-BoldOblique
+ abgo AvantGarde-BookOblique hno Helvetica-Narrow-Oblique
+ agd AvantGarde-Demi ho Helvetica-Oblique
+ agdo AvantGarde-DemiOblique ncsb NewCenturySchlbk-Bold
+ bd Bookman-Demi ncsbi NewCenturySchlbk-BoldItalic
+ bdi Bookman-DemiItalic ncsi NewCenturySchlbk-Italic
+ bl Bookman-Light ncsr NewCenturySchlbk-Roman
+ bli Bookman-LightItalic pb Palatino-Bold
+ c Courier pbi Palatino-BoldItalic
+ cb Courier-Bold pi Palatino-Italic
+ cbo Courier-BoldOblique pr Palatino-Roman
+ co Courier-Oblique s Symbol
+ h Helvetica tb Times-Bold
+ hb Helvetica-Bold tbi Times-BoldItalic
+ hbo Helvetica-BoldOblique ti Times-Italic
+ hn Helvetica-Narrow tr Times-Roman
+ hnb Helvetica-Narrow-Bold zcmi ZapfChancery-MediumItalic
+ zd ZapfDingbats
+ Default: C11 note - if printer cannot find font,
+ it will default to Courier
+ -F ; ignore formfeeds in input file. Default: obey formfeeds.
+ -h ; do not print file date/time stamp header. Default: print
+ -l n; print n lines per page. Default: 66
+ -L n; print n(1|2|4) pages per sheet. Default: 4
+ -m lN[U],rN[U],tN[U],bN[U]; specify any or all margin offsets for the
+ (l)eft,(r)ight,(t)op,& (b)ottom edges of paper in units,U of in-inches
+ ,cm-centimeters,mm-millimeters, or postscript points(72 points=1in).
+ if units are not specified postscript points are assumed.
+ (e.g. r0.5in,b0.5in). Default: l18,r18,b18,t18
+ -n[w] ; print line numbers to right of line in a field width of w digits.
+ Default: no print [w=6]
+ -N ; start next file on next subpage. Default: start on next sheet
+ -o fn; output file name/device. Default: lpt1
+ must be used before first file spec only
+ -O p|l; orientation of printout, (p)ortrait or (l)andscape. Default: p
+ -p PR; range of pages,PR to print seperated by commas.(e.g. 1,3-5,11,20-
+ will print pages 1,3 through 5, 11, and 20 until end of file
+ or -10 will print all pages from start of file to and including
+ page 10). Default: print all pages
+ -P fn; copy file,fn to prolog section of output file. For use with
+ Type 3 fonts. Default: none. must be used before first
+ file spec only
+ -s letter|legal|a4; specify paper size. Default: letter
+ -S e|o; swap margins on (e)ven or (o)dd sheets during duplex printing.
+ Default: no swap
+ -t n; expand tab character to n spaces. Default: 8
+ -T 1[m]|2[m]; specify papertray and manual feed option. Default: 1
+ -u ; when printing 4 pages per sheet, order pages top-bottom=>left-right.
+ Default: order left-right=>top-bottom
+ -w n; set line width to n characters. Default: 80
+
+Default values for all options can be saved in the environment variable
+"ATOPS", and later modified on the command line.
+(e.g. "SET ATOPS=-t6 -w90 -ml0.5in" will set the defaults; expand tabs to
+6 spaces,line width of 90 characters, and left margin of 0.5 inches
+respectively.) Options should be seperated with a space" " or ";"
diff --git a/obsolete/support/atops/readme b/obsolete/support/atops/readme
new file mode 100644
index 0000000000..65ac3d9d57
--- /dev/null
+++ b/obsolete/support/atops/readme
@@ -0,0 +1,5 @@
+ATOPS is a small utility written for ibm/ibm compatable pc's to transform
+ascii text files into postscript. I've tried to eliminate all errors in
+the program; however, if you find one, please send it to
+ "cevens@unix1.sncc.lsu.edu" on the internet.
+-Anthony
diff --git a/obsolete/support/epspdf-extra/README b/obsolete/support/epspdf-extra/README
new file mode 100644
index 0000000000..23b4a7315f
--- /dev/null
+++ b/obsolete/support/epspdf-extra/README
@@ -0,0 +1,6 @@
+Epspdf is an ps/eps/pdf converter which can be used both from the
+command-line and as a GUI application.
+
+Epspdf-extra contains a Windows installer epspdf.x.x.x.exe which
+installs a version of epspdftk with embedded Tcl/Tk runtime. It
+replaces the standard epspdf package.
diff --git a/obsolete/support/ghostscript/AFPL/Commprod.htm b/obsolete/support/ghostscript/AFPL/Commprod.htm
new file mode 100644
index 0000000000..0bcf26782a
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/Commprod.htm
@@ -0,0 +1,314 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Conditions to distribute Ghostscript in a commercial context</title>
+<!-- $Id: Commprod.htm,v 1.5 2000/11/03 20:15:55 giles Exp $ -->
+<!-- Originally: commprod.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Conditions on distributing Ghostscript in a commercial context</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<ul>
+<li><a href="#Free_version">The use of the public-access "free" version of Ghostscript</a>
+<li><a href="#GPL">The GNU General Public License (GPL)</a>
+</ul>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document sets forth the conditions under which Ghostscript may be
+distributed in a commercial context: under a written license from
+<a href="#Artifex">Artifex Software</a> Inc., Aladdin Enterprises'
+exclusive commercial licensing partner, or under certain other very limited
+conditions.
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<hr>
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Free_version"></a>Use of the public-access "free"
+version of Ghostscript</h2>
+
+<p>
+Ghostscript is a copyrighted work whose copyright is owned by Aladdin
+Enterprises. Some versions of Ghostscript are distributed freely under the
+name AFPL Ghostscript; these versions are always distributed with a
+license, called the <a href="Public.htm">Aladdin Free Public
+License</a>
+(also known as the AFPL), which permits AFPL Ghostscript to be
+redistributed freely under certain conditions. These conditions will
+almost always be met easily by individuals in their personal use of AFPL
+Ghostscript. AFPL Ghostscript may be <em>used</em> freely, including by
+commercial entities for evaluation or unsupported internal use. However,
+<em>distribution</em> for commercial purposes of Ghostscript, or anything
+containing or derived from Ghostscript in whole or in part, generally
+requires a written commercial license from <a href="#Artifex">Artifex
+Software Inc.</a>, the sole entity authorized by Aladdin Enterprises to
+grant such licenses. More specifically, the AFPL states:
+
+<blockquote>
+Distribution of the Program or any work based on the Program by a
+commercial organization to any third party is prohibited if any payment is
+made in connection with such distribution, whether directly (as in payment
+for a copy of the Program) or indirectly (as in payment for some service
+related to the Program, or payment for some product or service that
+includes a copy of the Program "without charge"; these are only examples,
+and not an exhaustive enumeration of prohibited activities). However, the
+following methods of distribution involving payment shall not in and of
+themselves be a violation of this restriction:
+
+<dl compact>
+<dt>(i)<dd>Posting the Program on a public access information storage and
+retrieval service for which a fee is received for retrieving information
+(such as an on-line service), provided that the fee is not
+content-dependent (i.e., the fee would be the same for retrieving the same
+volume of information consisting of random data).
+
+<dt>(ii)<dd>Distributing the Program on a CD-ROM, provided that the files
+containing the Program are reproduced entirely and verbatim on such CD-ROM,
+and provided further that all information on such CD-ROM be redistributable
+for non-commercial purposes without charge.
+</dl>
+</blockquote>
+
+<p>
+The intent of the exception provided in clause (i) is to allow commercial
+organizations operating an FTP server or a bulletin board to distribute
+AFPL Ghostscript freely from it, provided that:
+
+<dl compact>
+<dt>(1)<dd>the organization complies with the other provisions of the
+AFPL, which include among other things a requirement to distribute the
+full source code of AFPL Ghostscript and of any derived work, and to
+distribute the AFPL itself along with AFPL Ghostscript;
+
+<dt>(2)<dd>the only charge for downloading AFPL Ghostscript is a charge
+based on the distribution service and not one based on the content of the
+information being retrieved (i.e., the charge would be the same for
+retrieving a random collection of bits of the same size);
+
+<dt>(3)<dd>the server or BBS is accessible to the general public, i.e.,
+the phone number or IP address is not kept secret, and anyone may obtain
+access to the information (possibly by paying a subscription or access fee
+that is not dependent on or related to purchasing anything else).
+</dl>
+
+<p>
+Similarly, the exception in clause (ii) is intended to allow inclusion of
+AFPL Ghostscript on "freeware" CD-ROMs that contain only material that
+is in the public domain, or is freely redistributable provided only that a
+copyright notice is retained (such as the Independent JPEG Group
+libraries), or is distributed under some other kind of license allowing
+free redistribution such as the GNU
+<a href="http://www.gnu.org/copyleft/gpl.html">General Public License</a>.
+
+<p>
+If you want to distribute software in a commercial context that
+incorporates Ghostscript and you do <em>not</em> want to meet these
+conditions, you should contact <a href="#Artifex">Artifex Software</a> to
+find out about commercial licensing. Commercial licenses involve a
+(negotiated) payment, and include support and other benefits. These are
+the only ways you legally can distribute Ghostscript or anything containing
+Ghostscript: either by distributing AFPL Ghostscript under the
+requirements of the AFPL, or by getting a commercial license from Artifex
+Software.
+
+<p>
+<a name="Artifex"></a>For commercial licensing, please contact:
+
+<blockquote><address>
+Licensing Information<br>
+Artifex Software Inc.<br>
+454 Las Gallinas Ave., suite 108<br>
+San Rafael, CA 94903 U.S.A.<br>
++1-415-492-9861 telephone<br>
++1-415-492-9862 fax<br>
+<a href="mailto:info@artifex.com">info@artifex.com</a><br>
+<a href="http://www.artifex.com/">http://www.artifex.com/</a>
+</address></blockquote>
+
+<p>
+If you have questions about the information in this document, please
+contact:
+
+<blockquote><address>
+artofcode LLC<br>
+940 Tyler St. Studio 6<br>
+Benicia CA 94510 U.S.A.<br>
++1-707-746-6398 fax<br>
+<a href="mailto:raph@artofcode.com">raph@artofcode.com</a><br>
+<a href="http://www.ghostscript.com/">http://www.ghostscript.com/</a>
+</address></blockquote>
+
+<h2><a name="GPL"></a>The GNU General Public License (GPL)</h2>
+
+<p>
+Older versions of Ghostscript (versions of 5.50 and previous) were
+distributed with a license called the GNU
+<a href="http://www.gnu.org/copyleft/gpl.html">General Public License</a>
+(also known as the "GNU License", the "GPL", or "copyleft"), which
+allowed distribution with commercial products under certain conditions.
+Aladdin Enterprises may choose to distribute other versions of Ghostscript
+with the GPL in the future; however, these versions will be identified as
+"GNU Ghostscript." The remainder of this section applies only to versions
+identified explicitly as GNU Ghostscript versions; the generic name
+Ghostscript, when applied to versions above 4.03, refers to AFPL
+Ghostscript, which is governed by the Aladdin Free Public License, not the
+GPL.
+
+<p>
+The full GPL is included under the name
+<b><tt>COPYING</tt></b> in the GNU Ghostscript fileset, and
+can also be obtained directly from the Free Software Foundation:
+
+<blockquote><address><a name="FSF_address"></a>
+Free Software Foundation, Inc. (FSF)<br>
+59 Temple Place, Suite 330<br>
+Boston, MA 02111-1307 U.S.A.<br>
++1-617-542-5942 telephone<br>
++1-617-542-2652 fax (including Japan):<br>
+<a href="mailto:gnu@gnu.org">gnu@gnu.org</a><br>
+<a href="http://www.gnu.org/">http://www.gnu.org/</a>
+</address></blockquote>
+
+<p>
+or in Japan by free dial fax:
+
+<blockquote><address>
+0031-13-2473 (KDD)<br>
+0066-3382-0158 (IDC)
+</address></blockquote>
+
+<p>
+The GPL gotten directly from the FSF or the contents of the
+<b><tt>COPYING</tt></b> file are authoritative, but for those
+unfamiliar with the GPL, we now summarize its provisions.
+
+<dl compact>
+<dt>1.<dd>Anyone may copy and distribute GNU Ghostscript (both source and
+object code), but they must distribute the source code as well as the
+object code (or, if they distribute only the object code, they must
+include an offer in writing to provide the source code at no more than
+reproduction cost), keep all copyright and other notices, and include the
+GPL with the copies. (Note that this allows anyone receiving such a copy
+to distribute it freely as well.)
+
+<dt>2.<dd>Anyone may modify GNU Ghostscript, but the provisions of (1)
+apply to modified or derived works as well.
+
+<dt>3.<dd>GNU Ghostscript may be "aggregated" with another program; in
+this case, (1) and (2) do not apply to the other program, but only to GNU
+Ghostscript.
+</dl>
+
+<p>
+Provision (1) makes it much harder to have a commercial business based only
+on selling copies of GNU Ghostscript (as distributed with the GPL) or
+products that contain GNU Ghostscript, since any customer is free to make
+as many copies as they want for any purpose. Provision (2) effectively
+prevents the development of proprietary commercial products that
+incorporate GNU Ghostscript without a commercial license as a part, since
+these are "derived works" in the legal sense.
+
+<p>
+Questions have arisen at times in particular cases regarding provision (3)
+as to whether GNU Ghostscript is "aggregated" with other parts of a
+commercial product, or whether the product has become a "derived work."
+Normally, combining GNU Ghostscript with another piece of software creates
+a "derived work"; we consider GNU Ghostscript to be "aggregated" with
+another piece of software, which we will refer to as "the application",
+only if all of the following conditions are met:
+
+<ul>
+<li> The code and documentation for GNU Ghostscript are physically
+separated from the code and documentation for the application. For
+electronic form, it is both necessary and sufficient to put the GNU
+Ghostscript code and documentation in their own directory tree(s).
+
+<li> GNU Ghostscript, as delivered with the application, is usable
+independently of the application. More precisely, if a user deletes from
+the computer system all files delivered with the application except those
+in the GNU Ghostscript directories, the user will still be able to use GNU
+Ghostscript as described in GNU Ghostscript's documentation. Among other
+things, this requires that GNU Ghostscript not call any routines in the
+application, and not require any data or other files supplied as part of
+the application.
+
+<li> The application calls GNU Ghostscript in a way that allows an ordinary
+user to substitute another program for GNU Ghostscript. (Typically this
+requires use of a shell script or batch file, or a system call like
+"<b><tt>exec</tt></b>".) More precisely, if the user deletes from the
+computer system all the files in the GNU Ghostscript directories, and
+replaces the GNU Ghostscript executable with another program with the same
+name and conforming to the same documentation, the application will
+continue to work with it. One implication of this is that the GNU
+Ghostscript documentation must specify all properties of GNU Ghostscript on
+which the application relies; for example, if GNU Ghostscript has been
+modified by the addition of command line switches or language elements such
+as new operators, the documentation must describe any such additions that
+the application uses.
+
+<li> The conditions of the GPL are met with respect to GNU Ghostscript,
+including the requirement for propagation of the GPL and the requirement
+for delivering (or an offer to deliver) source code.
+</ul>
+
+<p>
+Regarding this last point, the GPL clearly intends that if the distributor
+only offers to provide the GNU Ghostscript source code (as opposed to
+actually distributing the source code with every copy of the application),
+then they must deliver the source code in a timely way to anyone
+requesting it.
+
+<p>
+The GPL makes it clear that if someone receives GNU Ghostscript only in
+its GPL-licensed form, they only have a right to distribute it if they
+comply with the GPL. Aladdin Enterprises, as the copyright holder, takes
+this requirement very seriously, and will, if necessary, take legal action
+to ensure that anyone distributing GNU Ghostscript with the GPL complies
+with the conditions set forth above.
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises.
+All rights reserved.</small>
+
+<p>
+<small>This file is part of AFPL Ghostscript. See the <a
+href="Public.htm">Aladdin Free Public License</a> (the "License") for full
+details of the terms of using, copying, modifying, and redistributing AFPL
+Ghostscript.</small>
+
+<p>
+<small>Ghostscript version 6.30, 2 October 2000</small>
+
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>
diff --git a/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_1.41p1.diff.bz2 b/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_1.41p1.diff.bz2
new file mode 100644
index 0000000000..b1178eef45
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_1.41p1.diff.bz2
Binary files differ
diff --git a/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_MD5SUMS b/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_MD5SUMS
new file mode 100644
index 0000000000..09106b68d5
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_MD5SUMS
@@ -0,0 +1,25 @@
+4cd6b2d6bb3fe1c0d61a25057cb84f95 ghostpcl-1.35.tar.gz
+a441ae1a6beab1e4e4fa96187f324d29 ghostpcl_1.37.tar.bz2
+b7edf9cdba7c0d9df2a6afeb87f8992f ghostpcl_1.37.tar.gz
+0c36b28392e84cfa11f60495cd4a020f ghostpcl_1.37.zip
+f772a913ee48897f22f9ed916e8f84d7 ghostpcl_1.37a.tar.gz
+8a508b10439dc0f7f3de32b92f5f5f86 ghostpcl_1.38.tar.bz2
+7e8239d96eb511098486115b0eb9151d ghostpcl_1.38.tar.gz
+247075444b9f90af48b840c1a49e7d79 ghostpcl_1.38beta.tar.gz
+7070d5c71a41647371749ad0962cac04 ghostpcl_1.38p1.tar.bz2
+5067678a6b3b682423f74c92b5c82013 ghostpcl_1.38p1.tar.gz
+ee1fd17aaeb8a357dbceea4d9201affa ghostpcl_138.patch_1
+8faccaeac6566b188a473d89ac80a6d3 urwfonts-1.37.tar.bz2
+fbe47236e35051cd3735fd3af63347f2 urwfonts-1.37.tar.gz
+c8f2b2b174f7fdad546ae87aed22901f urwfonts-1.37.zip
+45c219d489acf77b4f3a63badd499441 urwfonts-1.40.tar.bz2
+babebe09eeb32af156689e754459a62f urwfonts-1.40.tar.gz
+b17ac540e45ba1a703f73d0e55cee583 urwfonts-1.40.zip
+440f82eb2da0660460bf5c36cf5de6ff ghostpcl_1.40.tar.bz2
+f5cac50caed1e3306d64599e455513ba ghostpcl_1.40.tar.gz
+598184c7716a5b71fc742a6b5913bb8a ghostpcl_1.41.tar.bz2
+4ab6f7b19bfb01d507a386ae1e3ecc41 ghostpcl_1.41.tar.gz
+6d65230fa5e9783a0b5942b55dc5219f urwfonts-1.41.tar.bz2
+248b1bc2ad929771b7dfa6cf41957c92 urwfonts-1.41.tar.gz
+a90c214ada939774a760785bb7633a91 ghostpcl_1.41p1.diff.bz2
+cf4cab8c3cae64190940c978f6e9b920 ghostpcl_1.41p1.tar.bz2
diff --git a/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_SHA1SUMS b/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_SHA1SUMS
new file mode 100644
index 0000000000..66befee543
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/GhostPCL/ghostpcl_SHA1SUMS
@@ -0,0 +1,25 @@
+e2a60ad81b39f12f618ba9540b298bfb08bca8af ghostpcl-1.35.tar.gz
+6b1819e127038602bd1585fecdecca537a4534dc ghostpcl_1.37.tar.bz2
+7410484a32358a78860c3bff6550f67c76c4a743 ghostpcl_1.37.tar.gz
+139ce7417e684345d20efd605c15e1cbfcebe1fc ghostpcl_1.37.zip
+4edd4ecaaebe46ad1a4937c3b934fce28d2a2cb8 ghostpcl_1.37a.tar.gz
+d6af46eb1bc5ab1cb3daaa5084f9af756ea3afc5 ghostpcl_1.38.tar.bz2
+2984424aca1e36c4aee56480118b61f3e4459cda ghostpcl_1.38.tar.gz
+fde8c6ab3d51041b1810e6463897f109acdfb18c ghostpcl_1.38beta.tar.gz
+8fb5afdebe829a93b9b65b310f02a7d9995c2062 ghostpcl_1.38p1.tar.bz2
+3510906300dc2f6568c315aa4705385a38e946af ghostpcl_1.38p1.tar.gz
+e02c47e4094c651091b0c8daf4812ae888360a7e ghostpcl_138.patch_1
+2373ffd365d9dd213e6bd49c996fc8ec095fdf3e urwfonts-1.37.tar.bz2
+8bf4ec426ec8d0e185a27f361100bb698f5bb3a4 urwfonts-1.37.tar.gz
+25297e536cca81a8a7af78bd9b7bdb8b3fd36cd6 urwfonts-1.37.zip
+b36d3476e3dc6b289004b0414c44ca3dd3e8e019 urwfonts-1.40.tar.bz2
+b4477c04f8222e5a42d4d92ebb8953534de33041 urwfonts-1.40.tar.gz
+8f4a5c5002d34421e41631cb12ff96e5ab068a74 urwfonts-1.40.zip
+48dda650f2ac1b064eaeaceec6813b964ae9cf7a ghostpcl_1.40.tar.bz2
+c6e94003caf83f678dc7f04fa093232c3e161565 ghostpcl_1.40.tar.gz
+0dbc63c813fd463dd28f43dd0629934f34135c3c ghostpcl_1.41.tar.bz2
+53c325f970f819a80f68c33a9a3ab6c054e6d7e0 ghostpcl_1.41.tar.gz
+bf7e331083aef9fc763bdce5cc998ebdc5567db1 urwfonts-1.41.tar.bz2
+6388f7bd13336160cfd4d3344636fe593110e849 urwfonts-1.41.tar.gz
+166b671080e9b0f0844525ef7dbac1bea703c68b ghostpcl_1.41p1.diff.bz2
+de8f7806b6d119a137248f34e3fa90d30bf62fc6 ghostpcl_1.41p1.tar.bz2
diff --git a/obsolete/support/ghostscript/AFPL/Index b/obsolete/support/ghostscript/AFPL/Index
new file mode 100644
index 0000000000..cde1cafb72
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/Index
@@ -0,0 +1,82 @@
+Index to the files in the AFPL subdirectory
+==============================================
+
+Each version of Ghostscript is stored in a separate directory.
+For example, AFPL Ghostscript 6.50 is in the subdirectory 'gs650'.
+
+Within each Ghostscript subdirectory there are two sets of files.
+The .tar.gz files have been archived with tar and compressed with gzip.
+These programs are available on almost all Unix systems; DOS/Windows
+versions of them are also available. The .zip files in this directory
+have been created from the tar.gz files.
+
+The file names below have {N} or ### in them in some places. Replace {N}
+with the desired version number of Ghostscript (e.g., 3.0, 3.01, 3.1, ...);
+replace ### with the version number spelled out as exactly 3 digits (e.g.,
+300, 301, 310, ....)
+
+Font files in the 'gsNNN' directories are links to files in the
+'fonts' directory.
+
+Instructions on how to obtain AFPL Ghostscript are available from
+ http://www.cs.wisc.edu/~ghost/
+
+tar.gz files
+============
+PUBLIC The Aladdin Free Public License, which specifies
+ the terms under which AFPL Ghostscript may be
+ distributed.
+Commprod.htm Some additional explanation about commercial distribution of
+ AFPL Ghostscript.
+ghostscript-{N}.tar.gz
+ The main source code for AFPL Ghostscript {N}. You will
+ need this if you are going to compile Ghostscript.
+ This also includes all the documentation, examples,
+ utilities, scripts, etc., except for a few that are
+ convered by the GNU License (see below).
+ghostscript-{N}jpeg.tar.gz
+ The Independent JPEG Group library source code. You will
+ also need this if you are going to compile Ghostscript.
+ Starting with Ghostscript version 3.12, this name is
+ a link to the 3rdparty directory, which contains a verbatim
+ copy of the IJG distribution.
+ Note that this file, unlike all the other archives, does
+ not include gs{N} in the file names. You will have to
+ cd to gs### before unpacking this file.
+ghostscript-{N}gnu.tar.gz
+ GNU-Licensed device drivers and utility programs for
+ AFPL Ghostscript {N}.
+ **************** IMPORTANT NOTE ****************
+ Since AFPL Ghostscript itself is not GNU-Licensed,
+ if you distribute AFPL Ghostscript further, you
+ must keep this GNU-Licensed code separate from all
+ the rest of the code (if you distribute this
+ GNU-Licensed code at all), and you must not
+ distribute any executables that incorporate both
+ this GNU-Licensed code and any other part of AFPL
+ Ghostscript.
+ghostscript-fonts-std-{N}.tar.gz
+ Fonts equivalent to the standard 35 PostScript fonts.
+ You will need this if you are going to run Ghostscript,
+ unless you have a full set of (Type 1) PostScript fonts
+ from some other source (e.g., some X Windows
+ installations).
+ghostscript-fonts-other-{N}.tar.gz
+ Other fonts -- Hershey fonts, free Cyrillic and Japanese
+ Kana fonts, Bitstream Charter, Utopia, and a couple of
+ URW fonts. You probably don't need this.
+
+zip/exe file
+============
+gs###src.zip Ghostscript {N} sources
+ created from ghostscript-{N}.tar.gz
+gs###os2.zip Ghostscript {N} EXE for OS/2 2.1 or Warp
+ not from any tar.gz file
+gs###w32.exe Ghostscript {N} EXE for MS-Windows Win32
+ compiled from sources in ghostscript-{N}.tar.gz
+jpegXXXX.zip JPEG sources
+zlibXXXX.zip zlib compression library sources
+lpngXXX.zip libpng library sources
+
+GSview, a previewer for MS-Windows or OS/2 based on AFPL Ghostscript
+is available in the directory ../ghostgum/
diff --git a/obsolete/support/ghostscript/AFPL/PUBLIC b/obsolete/support/ghostscript/AFPL/PUBLIC
new file mode 100644
index 0000000000..dc78263713
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/PUBLIC
@@ -0,0 +1,229 @@
+ Aladdin Free Public License
+ (Version 9, September 18, 2000)
+
+ Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000 Aladdin Enterprises,
+ Menlo Park, California, U.S.A. All rights reserved.
+
+ NOTE: This License is not the same as any of the GNU Licenses
+ published by the Free Software Foundation. Its terms are
+ substantially different from those of the GNU Licenses. If you are
+ familiar with the GNU Licenses, please read this license with
+ extra care.
+
+Aladdin Enterprises hereby grants to anyone the permission to apply this
+License to their own work, as long as the entire License (including the
+above notices and this paragraph) is copied with no changes, additions, or
+deletions except for changing the first paragraph of Section 0 to include a
+suitable description of the work to which the license is being applied and
+of the person or entity that holds the copyright in the work, and, if the
+License is being applied to a work created in a country other than the
+United States, replacing the first paragraph of Section 6 with an
+appropriate reference to the laws of the appropriate country.
+
+This License is not an Open Source license: among other things, it places
+restrictions on distribution of the Program, specifically including sale of
+the Program. While Aladdin Enterprises respects and supports the philosophy
+of the Open Source Definition, and shares the desire of the GNU project to
+keep licensed software freely redistributable in both source and object
+form, we feel that Open Source licenses unfairly prevent developers of
+useful software from being compensated proportionately when others profit
+financially from their work. This License attempts to ensure that those who
+receive, redistribute, and contribute to the licensed Program according to
+the Open Source and Free Software philosophies have the right to do so,
+while retaining for the developer(s) of the Program the power to make those
+who use the Program to enhance the value of commercial products pay for the
+privilege of doing so.
+
+0. Subject Matter
+
+This License applies to the computer program known as "AFPL Ghostscript."
+The "Program", below, refers to such program. The Program is a copyrighted
+work whose copyright is held by artofcode LLC, located in Benicia,
+California (the "Licensor"). Please note that AFPL Ghostscript is neither
+the program known as "GNU Ghostscript" nor the version of Ghostscript
+available for commercial licensing from Artifex Software Inc.
+
+A "work based on the Program" means either the Program or any derivative
+work of the Program, as defined in the United States Copyright Act of 1976,
+such as a translation or a modification.
+
+BY MODIFYING OR DISTRIBUTING THE PROGRAM (OR ANY WORK BASED ON THE PROGRAM),
+YOU INDICATE YOUR ACCEPTANCE OF THIS LICENSE TO DO SO, AND ALL ITS TERMS AND
+CONDITIONS FOR COPYING, DISTRIBUTING OR MODIFYING THE PROGRAM OR WORKS BASED
+ON IT. NOTHING OTHER THAN THIS LICENSE GRANTS YOU PERMISSION TO MODIFY OR
+DISTRIBUTE THE PROGRAM OR ITS DERIVATIVE WORKS. THESE ACTIONS ARE PROHIBITED
+BY LAW. IF YOU DO NOT ACCEPT THESE TERMS AND CONDITIONS, DO NOT MODIFY OR
+DISTRIBUTE THE PROGRAM.
+
+1. Licenses.
+
+Licensor hereby grants you the following rights, provided that you comply
+with all of the restrictions set forth in this License and provided,
+further, that you distribute an unmodified copy of this License with the
+Program:
+
+(a) You may copy and distribute literal (i.e., verbatim) copies of the
+ Program's source code as you receive it throughout the world, in any
+ medium.
+(b) You may modify the Program, create works based on the Program and
+ distribute copies of such throughout the world, in any medium.
+
+2. Restrictions.
+
+This license is subject to the following restrictions:
+
+(a) Distribution of the Program or any work based on the Program by a
+ commercial organization to any third party is prohibited if any payment
+ is made in connection with such distribution, whether directly (as in
+ payment for a copy of the Program) or indirectly (as in payment for
+ some service related to the Program, or payment for some product or
+ service that includes a copy of the Program "without charge"; these are
+ only examples, and not an exhaustive enumeration of prohibited
+ activities). The following methods of distribution involving payment
+ shall not in and of themselves be a violation of this restriction:
+ (i) Posting the Program on a public access information storage and
+ retrieval service for which a fee is received for retrieving
+ information (such as an on-line service), provided that the fee is
+ not content-dependent (i.e., the fee would be the same for
+ retrieving the same volume of information consisting of random
+ data) and that access to the service and to the Program is
+ available independent of any other product or service. An example
+ of a service that does not fall under this section is an on-line
+ service that is operated by a company and that is only available
+ to customers of that company. (This is not an exhaustive
+ enumeration.)
+ (ii) Distributing the Program on removable computer-readable media,
+ provided that the files containing the Program are reproduced
+ entirely and verbatim on such media, that all information on such
+ media be redistributable for non-commercial purposes without
+ charge, and that such media are distributed by themselves (except
+ for accompanying documentation) independent of any other product
+ or service. Examples of such media include CD-ROM, magnetic tape,
+ and optical storage media. (This is not intended to be an
+ exhaustive list.) An example of a distribution that does not fall
+ under this section is a CD-ROM included in a book or magazine.
+ (This is not an exhaustive enumeration.)
+(b) Activities other than copying, distribution and modification of the
+ Program are not subject to this License and they are outside its scope.
+ Functional use (running) of the Program is not restricted, and any
+ output produced through the use of the Program is subject to this
+ license only if its contents constitute a work based on the Program
+ (independent of having been made by running the Program).
+(c) You must meet all of the following conditions with respect to any work
+ that you distribute or publish that in whole or in part contains or is
+ derived from the Program or any part thereof ("the Work"):
+ (i) If you have modified the Program, you must cause the Work to carry
+ prominent notices stating that you have modified the Program's
+ files and the date of any change. In each source file that you
+ have modified, you must include a prominent notice that you have
+ modified the file, including your name, your e-mail address (if
+ any), and the date and purpose of the change;
+ (ii) You must cause the Work to be licensed as a whole and at no charge
+ to all third parties under the terms of this License;
+ (iii)
+ If the Work normally reads commands interactively when run, you
+ must cause it, at each time the Work commences operation, to print
+ or display an announcement including an appropriate copyright
+ notice and a notice that there is no warranty (or else, saying
+ that you provide a warranty). Such notice must also state that
+ users may redistribute the Work only under the conditions of this
+ License and tell the user how to view the copy of this License
+ included with the Work. (Exceptions: if the Program is interactive
+ but normally prints or displays such an announcement only at the
+ request of a user, such as in an "About box", the Work is required
+ to print or display the notice only under the same circumstances;
+ if the Program itself is interactive but does not normally print
+ such an announcement, the Work is not required to print an
+ announcement.);
+ (iv) You must accompany the Work with the complete corresponding
+ machine-readable source code, delivered on a medium customarily
+ used for software interchange. The source code for a work means
+ the preferred form of the work for making modifications to it. For
+ an executable work, complete source code means all the source code
+ for all modules it contains, plus any associated interface
+ definition files, plus the scripts used to control compilation and
+ installation of the executable code. If you distribute with the
+ Work any component that is normally distributed (in either source
+ or binary form) with the major components (compiler, kernel, and
+ so on) of the operating system on which the executable runs, you
+ must also distribute the source code of that component if you have
+ it and are allowed to do so;
+ (v) If you distribute any written or printed material at all with the
+ Work, such material must include either a written copy of this
+ License, or a prominent written indication that the Work is
+ covered by this License and written instructions for printing
+ and/or displaying the copy of the License on the distribution
+ medium;
+ (vi) You may not impose any further restrictions on the recipient's
+ exercise of the rights granted herein.
+
+If distribution of executable or object code is made by offering the
+equivalent ability to copy from a designated place, then offering equivalent
+ability to copy the source code from the same place counts as distribution
+of the source code, even though third parties are not compelled to copy the
+source code along with the object code.
+
+3. Reservation of Rights.
+
+No rights are granted to the Program except as expressly set forth herein.
+You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy,
+modify, sublicense or distribute the Program is void, and will automatically
+terminate your rights under this License. However, parties who have received
+copies, or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+4. Other Restrictions.
+
+If the distribution and/or use of the Program is restricted in certain
+countries for any reason, Licensor may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is
+permitted only in or among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the body of this
+License.
+
+5. Limitations.
+
+THE PROGRAM IS PROVIDED TO YOU "AS IS," WITHOUT WARRANTY. THERE IS NO
+WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE
+RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
+THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+LICENSOR, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM
+AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
+SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
+DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
+OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+6. General.
+
+This License is governed by the laws of the State of California, U.S.A.,
+excluding choice of law rules.
+
+If any part of this License is found to be in conflict with the law, that
+part shall be interpreted in its broadest meaning consistent with the law,
+and no other parts of the License shall be affected.
+
+For United States Government users, the Program is provided with RESTRICTED
+RIGHTS. If you are a unit or agency of the United States Government or are
+acquiring the Program for any such unit or agency, the following apply:
+
+ If the unit or agency is the Department of Defense ("DOD"), the
+ Program and its documentation are classified as "commercial
+ computer software" and "commercial computer software
+ documentation" respectively and, pursuant to DFAR Section
+ 227.7202, the Government is acquiring the Program and its
+ documentation in accordance with the terms of this License. If the
+ unit or agency is other than DOD, the Program and its
+ documentation are classified as "commercial computer software" and
+ "commercial computer software documentation" respectively and,
+ pursuant to FAR Section 12.212, the Government is acquiring the
+ Program and its documentation in accordance with the terms of this
+ License.
diff --git a/obsolete/support/ghostscript/AFPL/README b/obsolete/support/ghostscript/AFPL/README
new file mode 100644
index 0000000000..50e30f7118
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/README
@@ -0,0 +1,10 @@
+The file Index contains an index to the files in this directory.
+
+If you have any questions about the relationship between AFPL
+Ghostscript and GNU Ghostscript, or between the Aladdin
+Free Public License (on the file PUBLIC in this directory) and the GNU
+License, please read the file README in the parent directory of this
+one and also the file Commprod.htm in this directory.
+
+Instructions on how to obtain AFPL Ghostscript are available from
+ http://www.cs.wisc.edu/~ghost/
diff --git a/obsolete/support/ghostscript/AFPL/gs854/MD5SUMS b/obsolete/support/ghostscript/AFPL/gs854/MD5SUMS
new file mode 100644
index 0000000000..3d2321fcfb
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/gs854/MD5SUMS
@@ -0,0 +1,7 @@
+58f688190dcc5e9e337edad22b23fc0d ghostscript-8.54.tar.bz2
+022c1f716b97da55bf06796466e913d5 ghostscript-8.54.tar.gz
+6865682b095f8c4500c54b285ff05ef6 ghostscript-fonts-std-8.11.tar.gz
+e801824084a704dfbca76930cb120b17 gs854os2.zip
+7549ff2574da58089960872849cb4c16 gs854src.zip
+c705f6aebc65ad70f286bb613ebf823e gs854w32.exe
+5427701ab434869dcf05a6c1b7b31e43 gs854w64.exe
diff --git a/obsolete/support/ghostscript/AFPL/gs854/SHA1SUMS b/obsolete/support/ghostscript/AFPL/gs854/SHA1SUMS
new file mode 100644
index 0000000000..1ad7e1ad3b
--- /dev/null
+++ b/obsolete/support/ghostscript/AFPL/gs854/SHA1SUMS
@@ -0,0 +1,7 @@
+72bf35b3bf89f5187530162aece6bfc401f5512f ghostscript-8.54.tar.bz2
+dafbd000a2b645772d6571b4dcbda4292cad0bb2 ghostscript-8.54.tar.gz
+2a7198e8178b2e7dba87cb5794da515200b568f5 ghostscript-fonts-std-8.11.tar.gz
+82b61979a5ebe8402f86ce6090d43cf034865898 gs854os2.zip
+b48d37524beeb483e12603f0cfaa067cb5b78703 gs854src.zip
+3c4bccb24d2c6a493fdfaddd9db12cbaa0078f1f gs854w32.exe
+ab9f9076a6643adbcff41fb4cc7639b6b02f8335 gs854w64.exe
diff --git a/obsolete/support/latex2html/README b/obsolete/support/latex2html/README
new file mode 100644
index 0000000000..d2259d36b4
--- /dev/null
+++ b/obsolete/support/latex2html/README
@@ -0,0 +1,238 @@
+LaTeX2HTML README
+=================
+
+Contents
+********
+
+Overview
+Pointers to the User Manual
+Requirements
+Installation
+Troubleshooting
+Support and More Information
+
+Overview
+********
+
+The LaTeX2HTML translator:
+
+ o breaks up a document into one or more components as specified by
+ the user,
+ o provides optional iconic navigation panels on every page which
+ contain links to other parts of the document,
+ o handles inlined equations, right-justified
+ numbered equations, tables, or figures and any arbitrary environment,
+ o can produce output suitable for browsers that support inlined images
+ or character based browsers (as specified by the user),
+ o handles definitions of new commands, environments, and theorems
+ even when these are defined in external style files,
+ o handles footnotes, tables of contents, lists of figures and tables,
+ bibliographies, and can generate an Index,
+ o translates cross-references into hyperlinks and extends the
+ LaTeX cross-referencing mechanism to work not just
+ within a document but between documents which may reside in
+ remote locations,
+ o translates accent and special character
+ commands to the equivalent ISO-LATIN-1
+ character set where possible,
+ o recognizes hypertext links (to multimedia resources or arbitrary
+ internet services such as sound/video/ftp/http/news) and links which
+ invoke arbitrary program scripts, all expressed as LaTeX commands,
+ o recognizes conditional text which is intended only for the hypertext
+ version, or only for the paper (DVI) version,
+ o can include raw HTML in a LaTeX document (e.g. in order to specify
+ interactive forms),
+ o can deal sensibly with all the commands and environments commonly used
+ with LaTeX as summarized at the back of the LaTeX blue book [1],
+ and many of the packages described in the LaTeX Companion, and others.
+ o will try to translate any document with embedded LaTeX commands
+ irrespective of whether it is complete or syntactically legal.
+
+Pointers to the User Manual
+***************************
+
+The LaTeX2HTML program includes its own manual page.
+The manual page can be viewed by saying "perldoc latex2html"
+or "latex2html -help".
+
+See the online documentation at
+ http://www-texdev.ics.mq.edu.au/l2h/docs/manual/
+for more information and examples.
+
+Other useful links can be found at: www.latex2html.org
+and at the mailing-list site:
+ http://tug.org/mailman/listinfo/latex2html
+
+In particular see the pages:
+ support.html , Snode1.html , Snode2.html , Snode3.html
+for instructions on how to install the program
+and make your own local copy of the manual in HTML.
+
+Requirements
+************
+
+Please consult the section "Requirements" of the online manual at
+
+ http://www-texdev.ics.mq.edu.au/l2h/docs/manual/Snode2.html
+
+for more information as well as *active* links to any utilities
+that you may require.
+
+
+The requirements for using LaTeX2HTML depend on the kind of
+translation it is asked to perform as follows:
+
+ 1. LaTeX commands but without equations, figures, tables, etc.
+ o Perl 5.003 (Perl5 Patch level 3) or higher.
+------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ o DBM or NDBM, the Unix DataBase Management system.
+ Alternatively, Perl5's SDBM DataBase system.
+------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ Do not care unless you get misconfiguration errors from LaTeX2HTML.
+
+ 2. LaTeX commands with equations, figures, tables, etc.
+ As above plus
+ o latex (version 2e recommended but 2.09 acceptable),
+ o dvips (version 5.516 or later) or dvipsk.
+ Version 5.62 or higher enhances the performance of image creation
+ with a *significant* speed-up. See l2conf.pm for this
+ after you are done with the installation.
+ Do not use the 'dvips -E' feature unless you have 5.62, else you
+ will get broken images.
+------^^^^
+ o gs (Ghostscript version 4.03 or later),
+------------------------------^^^^
+ with the ppmraw device driver, or even better pnmraw.
+ Upgrade to 5.10 or later if you want to go sure about seldom problems
+ with 4.03 to avoid (yet unclarified).
+ o The netpbm library (ftp://ftp.x.org/R5contrib/).
+ Netpbm 1 March 1994 is recommended. Check with 'pnmcrop -version'.
+ Some of the filters in those libraries are used during the postscript
+ to image conversion.
+ o If you want PNG images, you need pnmtopng (current version is 2.31).
+ It is not part of netpbm and requires libpng (version 0.89c) and
+ libz (1.0.4). pnmtopng supports transparency and interlace mode.
+ Hurray!!! Netscape 4.04 has been reported to grok PNG images!
+------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ That means your PNG option is not longer ahead of its time!
+ Unfortunately Netscape still does not make use of the alpha
+ channel... still not transparency.
+
+ 3. Transparent inlined GIFs
+ If you dislike the gray background color of the generated inlined images
+ then the best thing you can do is get the netpbm library (instead of
+ the older pbmplus) OR install the giftrans filter by Andreas Ley
+ <ley@rz.uni-karlsruhe.de>. Version 1.10.2 is known to work without
+ problems but later versions should also be OK.
+
+ LaTeX2HTML also supports the shareware program giftool (by Home Pages, Inc.,
+ version 1.0), too. It can also create interlaced GIFs.
+
+Because by default the translator makes use of inlined images in the final
+HTML output, it would be better to have a viewer which supports the <IMG>
+tag, such as NCSA Mosaic. If only a character based browser is available or
+if you want the generated documents to be more portable then the translator
+can be used with the -ascii_mode option.
+
+If ghostscript or netpbm library are not available
+it is still possible to use the translator with the -no_images option.
+
+If you intend to use any of the special features of the translator
+then you have to include the html.sty file in any LaTeX documents that
+use them.
+
+
+Installation
+************
+
+Please consult the section "Installing LaTeX2HTML" of the online manual at
+
+ http://www-texdev.ics.mq.edu.au/l2h/docs/manual/Snode3.html
+
+Also consult the page at
+
+ http://tug.org/mailman/listinfo/latex2html
+
+for links to special instructions on some platforms.
+
+
+To install LaTeX2HTML please read the file INSTALL.
+
+Troubleshooting
+***************
+
+Please refer to the FAQ file that came with your distribution.
+
+
+Support and More Information
+****************************
+
+Announcements, discussion archives, bug reporting forms and
+more are kept at the LaTeX2HTML home at
+http://cbl.leeds.ac.uk/nikos/tex2html/doc/latex2html/latex2html.html.
+
+*** this site has not been updated since November 1996.
+Many of the links are still valid, leading to useful information.
+
+
+A LaTeX2HTML mailing list had been set up at the Argonne National Labs
+(thanks to Ian Foster <itf@mcs.anl.gov> and Bob Olson <olson@mcs.anl.gov>).
+
+*** This list is no longer functional; it has now been taken over by the
+ TeX User Group (TUG). Thank you Argonne, for the 5+ years of support.
+
+To join the list, visit the web-page at:
+
+ http://tug.org/mailman/listinfo/latex2html
+
+and follow the instructions found there.
+
+If this is not possible for some reason, then send a message to:
+ latex2html-request@tug.org
+with the contents
+ subscribe
+
+
+To be removed from the list follow the instructions at:
+
+ http://tug.org/mailman/listinfo/latex2html
+
+If this is not possible for some reason, then send a message to:
+ latex2html-request@tug.org
+with the contents
+ unsubscribe
+
+
+An archive of the mailing list, from 1999 onwards,
+can be browsed at:
+
+ http://tug.org/pipermail/latex2html/
+
+This mailing list also has a searchable online archive,
+from 1994 up until 2003-08, at
+
+ http://www.xray.mpe.mpg.de/mailing-lists/latex2html/
+
+
+Enjoy!
+
+
+Original Author:
+ Nikos Drakos <nikos@cbl.leeds.ac.uk>
+ Computer Based Learning Unit
+ University of Leeds.
+
+Most Recent Author:
+ Ross Moore <ross@maths.mq.edu.au>
+ Mathematics Department
+ Macquarie University, Sydney.
+
+Former Authors:
+ Marek Rouchal <marek@saftsack.fs.uni-bayreuth.de>
+ Infineon Technologies AG
+ Munich, Germany
+
+ Jens Lippmann <lippmann@rbg.informatik.tu-darmstadt.de>
+ Technische Universit"at Darmstadt.
+
diff --git a/obsolete/support/latex2html/manual.pdf b/obsolete/support/latex2html/manual.pdf
new file mode 100644
index 0000000000..07ff9d8578
--- /dev/null
+++ b/obsolete/support/latex2html/manual.pdf
Binary files differ
diff --git a/obsolete/support/latex2html/manual.ps.gz b/obsolete/support/latex2html/manual.ps.gz
new file mode 100644
index 0000000000..f9327f149d
--- /dev/null
+++ b/obsolete/support/latex2html/manual.ps.gz
Binary files differ
diff --git a/obsolete/support/latexmk/BUGS b/obsolete/support/latexmk/BUGS
new file mode 100644
index 0000000000..73be50de4e
--- /dev/null
+++ b/obsolete/support/latexmk/BUGS
@@ -0,0 +1,5 @@
+latexmk doesn't handle the following:
+
+\newcommand{\tpic}[1]{\input{#1}\centerline{\box\graph}}
+
+It complains that it can't find the file #1 in my search path.
diff --git a/obsolete/support/latexmk/README b/obsolete/support/latexmk/README
new file mode 100644
index 0000000000..b2b30dc670
--- /dev/null
+++ b/obsolete/support/latexmk/README
@@ -0,0 +1,93 @@
+Hi, and thanks for checking out latexmk.
+
+LatexMk completely automates the process of generating a LaTeX document.
+Essentially, it is a highly specialized cousin of the general make
+utility. Given the source files for a document, latexmk issues the
+appropriate sequence of commands to generate a .dvi, .ps or hardcopy
+version of the document.
+
+Please read the man page for a run down on how good it is and what all
+the features are. A copy of the fast help that can be seen by doing
+"latexmk -h" is at the end of this file.
+
+The LatexMk perl script was modified by Evan McLean
+(emm@rdt.monash.edu.au) from the original script called "go" written
+by David J. Musliner. LatexMk is no longer supported by the author.
+With changes in work situation, the author no longer uses latex, and hence
+does not use LatexMk. Having no access to latex also makes it difficult
+to test fixes.
+
+The start of the script file has disclaimers and modification history
+for those who are interested.
+
+NOTES:-
+
+1) Portability: This first line of the perl script is:
+
+ #!/usr/local/bin/perl
+
+ This might not be the right path for your perl compiler/interpreter
+ (assuming you have one). Modify to the right place for you system if
+ you need to. Likely candidates are:
+
+ #!/usr/bin/perl
+ #!/bin/perl
+
+2) LatexMk is archived on the CTAN tex archive in
+ /tex-archive/support/latexmk Which is on the following hosts (amoung
+ many other mirror sites): ftp.tex.ac.uk, ftp.shsu.edu, ftp.dante.de,
+ ftp.cs.rmit.oz.au
+
+3) The -pvc option uses a feature of xtex that reloads the current file
+ if is receives a SIGUSR1 signal. Using -pvc with a previewer that
+ does not have this feature will not work (SEE NOTE 4).
+
+4) Included is a patch to the source for the xdvi previewer to make it
+ reload the current file if it receives a SIGUSR1 signal. This make
+ xdvi usable as the previewer for the -pvc option. See the contrib
+ directory.
+
+5) System V UNIX users may have to change the "$pscmd" variable in their
+ RC file if they are using the -pvc option. Refer to $pscmd in the
+ man page.
+
+Hope you find this useful.
+
+Evan McLean
+
+---------------------------- "latexmk -h" ----------------------------
+LatexMk 2.0: Automatic LaTeX document generation routine
+
+Usage: latexmk [latexmk_options] [filename ...]
+
+ LatexMk_options:
+ -bm <message> - Print message across the page when converting to postscript
+ -bi <intensity> - Set contrast or intensity of banner
+ -bs <scale> - Set scale for banner
+ -c - clean up (remove) all nonessential files
+ -C - clean up (remove) all nonessential files
+ including dvi and postscript files
+ -d - Print `DRAFT' across the page when converting to postscript
+ -dF <filter> - Filter to apply to dvi file
+ -f - force continued processing past errors
+ -F - Ignore non-existent files when making dependencies
+ -g - process regardless of file timestamps
+ -h - print help
+ -i - rescan for includes if depenancy file older than tex file
+ -I - force rescan for includes
+ -l - force landscape mode
+ -ps - generate postscript
+ -pF <filter> - Filter to apply to postscript file
+ -p - print document after generating postscript
+ -pv - preview document
+ -pvc - preview document and continuously update
+ -r <file> - Read custom RC file
+ -s - set slide mode
+ -v - display program version
+ filename = the root filename of LaTeX document
+
+ -p, -pv and -pvc are mutually exclusive
+ -h, -c and -C overides all other options.
+ -pv and -pvc require one and only one filename specified
+ Contents of RC file specified by -r overrides options specified
+ before the -r option on the command line
diff --git a/obsolete/support/latexmk/TODO b/obsolete/support/latexmk/TODO
new file mode 100644
index 0000000000..c1996a3ce0
--- /dev/null
+++ b/obsolete/support/latexmk/TODO
@@ -0,0 +1,7 @@
+- Custom dependancies for making include files e.g. \cprogfile{foobar.c}
+
+- Make help screen pause if output is to the tty directly.
+
+- Allow use of spell checker on file and input files.
+
+- Make clean cleanup aux files for \included files.
diff --git a/obsolete/support/latexmk/contrib/README b/obsolete/support/latexmk/contrib/README
new file mode 100644
index 0000000000..dcdc83e490
--- /dev/null
+++ b/obsolete/support/latexmk/contrib/README
@@ -0,0 +1,22 @@
+CONTRIBUTIONS
+
+The stuff in this directory is not required for LatexMK, but may come
+in handy to some people.
+
+----------------------------------------------------------------------
+
+xdvi.c.patch - Patches xdvi version 1.7 to reload the DVI file to make
+ it reload the current file if it receives a SIGUSR1 signal. This
+ make xdvi usable as the previewer for the -pvc option.
+ CONTRIBUTED by Evan McLean (evan@dnd.icp.nec.com.au)
+
+----------------------------------------------------------------------
+
+events.c.patch - Same as xdvi.c.patch but for version 1.8 of XDVI.
+ CONTRIBUTED by Evan McLean (evan@dnd.icp.nec.com.au)
+
+----------------------------------------------------------------------
+
+Got anything you think would be good here??
+Contact Evan McLean (evan@dnd.icp.nec.com.au)
+
diff --git a/obsolete/support/latexmk/contrib/events.c.patch b/obsolete/support/latexmk/contrib/events.c.patch
new file mode 100644
index 0000000000..3b17873334
--- /dev/null
+++ b/obsolete/support/latexmk/contrib/events.c.patch
@@ -0,0 +1,32 @@
+To Apply, try "patch < events.c.patch" in the directory with the xdvi sources.
+Works for xdvi version 1.8.
+
+*** events.c Tue Sep 13 16:54:18 1994
+--- events.c Thu Sep 22 10:34:43 1994
+***************
+*** 1452,1457 ****
+--- 1452,1465 ----
+ windowrec->max_x = windowrec->max_y = 0;
+ }
+
++ static void
++ handle_sigusr1() {
++ --dvi_time; /* then it will notice a change */
++ canit = True;
++ redraw(&mane); /* Send an event to wake xdvi up */
++ (void) signal(SIGUSR1, handle_sigusr1);
++ }
++
+ #if HAS_SIGIO
+ /* ARGSUSED */
+ static void
+***************
+*** 1490,1495 ****
+--- 1498,1504 ----
+ #if HAS_SIGIO
+ enable_intr();
+ #endif
++ (void) signal(SIGUSR1, handle_sigusr1);
+ #ifdef __convex__
+ /* convex C turns off optimization for the entire function
+ if setjmp return value is discarded.*/
diff --git a/obsolete/support/latexmk/contrib/xdvi.c.patch b/obsolete/support/latexmk/contrib/xdvi.c.patch
new file mode 100644
index 0000000000..95d43724de
--- /dev/null
+++ b/obsolete/support/latexmk/contrib/xdvi.c.patch
@@ -0,0 +1,32 @@
+To Apply, try "patch < xdvi.c.patch" in the directory with the xdvi sources.
+Works for xdvi version 1.7.
+
+*** xdvi.c Tue Jun 29 15:37:17 1993
+--- xdvi.c Wed Aug 17 14:21:08 1994
+***************
+*** 2033,2038 ****
+--- 2033,2046 ----
+ windowrec->max_x = windowrec->max_y = 0;
+ }
+
++ static void
++ handle_sigusr1() {
++ --dvi_time; /* then it will notice a change */
++ canit = True;
++ redraw(&mane); /* Send an event to wake xdvi up */
++ (void) signal(SIGUSR1, handle_sigusr1);
++ }
++
+ #ifdef HAS_SIGIO
+ static void
+ handle_intr() {
+***************
+*** 2072,2077 ****
+--- 2080,2086 ----
+ #ifdef HAS_SIGIO
+ enable_intr();
+ #endif
++ (void) signal(SIGUSR1, handle_sigusr1);
+ #ifdef __convex__
+ /* convex C turns off optimization for the entire function
+ if setjmp return value is discarded.*/
diff --git a/obsolete/support/latexmk/file_id.lst b/obsolete/support/latexmk/file_id.lst
new file mode 100644
index 0000000000..f3dee1f846
--- /dev/null
+++ b/obsolete/support/latexmk/file_id.lst
@@ -0,0 +1,9 @@
+README - Readme file, introduction and notes on porting problems.
+BUGS - Things I really should fix one day
+TODO - Things that I may do one day
+file_id.lst - This list
+latexmk - The perl script of the utility itself
+latexmk.1 - Man page for latexmk
+contrib - Directory of extra stuff contributed but not
+ essential for LatexMk. See contrib/README file for
+ list of contributions.
diff --git a/obsolete/support/latexmk/latexmk b/obsolete/support/latexmk/latexmk
new file mode 100644
index 0000000000..225be281e6
--- /dev/null
+++ b/obsolete/support/latexmk/latexmk
@@ -0,0 +1,1340 @@
+#!/usr/local/bin/perl
+## latexmk - version 2.0
+##
+## Modified by Evan McLean (emm@rdt.monash.edu.au)
+## Original script (RCS version 2.3) called "go" written by David J. Musliner
+##
+## - fully automated LaTeX document generation routine.
+## - checks to see if .bib or .tex source files (or included other files)
+## have been changed since last run (which made .aux).
+## - see sub print_help for info.
+##
+## LatexMk is no longer supported by the author. With changes in work
+## situation, the author no longer uses latex, and hence does not use
+## LatexMk. Having no access to latex also makes it difficult to test fixes.
+##
+##-----------------------------------------------------------------------
+## Here's the copyright notice that Mr. Musliner required to be
+## kept here.
+##-----------------------------------------------------------------------
+##Copyright 1992 by David J. Musliner and The University of Michigan.
+##
+## All Rights Reserved
+##
+##Permission to use, copy, modify, and distribute this software and its
+##documentation for any purpose and without fee is hereby granted,
+##provided that the above copyright notice and this permission notice appear in
+##all copies and modified versions.
+##
+##THE COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+##INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+##SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+##CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+##DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+##TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+##PERFORMANCE OF THIS SOFTWARE.
+##-----------------------------------------------------------------------
+##While I am not copyrighting my modifications (I don't even know if I
+##can) I do include my own disclaimer:
+##
+##THE AUTHOR/MODIFIER(S) DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+##INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+##SHALL THE AUTHOR/MODIFIER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+##CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+##DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+##TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+##PERFORMANCE OF THIS SOFTWARE.
+##-----------------------------------------------------------------------
+$version_num = '2.0';
+##Modification History:
+## 2.0 - Final release, no enhancements. LatexMk is no longer supported
+## by the author.
+## 1.9 - Fixed bug that was introduced in 1.8 with path name fix.
+## - Fixed buglet in man page.
+## 1.8 - Add not about announcement mailling list above.
+## - Added texput.dvi and texput.aux to files deleted with -c and/or
+## the -C options.
+## - Added landscape mode (-l option and a bunch of RC variables).
+## - Added sensing of "\epsfig{file=...}" forms in dependency generation.
+## - Fixed path names when specified tex file is not in the current
+## directory.
+## - Fixed combined use of -pvc and -s options.
+## - Fixed a bunch of speling errors in the source. :-)
+## - Fixed bugs in xdvi patches in contrib directory.
+## 1.7 - Fixed -pvc continuous viewing to reattach to pre-existing
+## process correctly.
+## - Added $pscmd to allow changing process grepping for different
+## systems.
+## 1.6 - Fixed buglet in help message
+## - Fixed bugs in detection of input and include files.
+## 1.5 - Removed test message I accidentally left in version 1.4
+## - Made dvips use -o option instead of stdout redirection as some
+## people had problems with dvips not going to stdout by default.
+## - Fixed bug in input and include file detection
+## - Fixed dependency resolution process so it detects new .toc file
+## and makeindex files properly.
+## - Added dvi and postscript filtering options -dF and -pF.
+## - Added -v version commmand.
+## 1.4 - Fixed bug in -pvc option.
+## - Made "-F" option include non-existant file in the dependency list.
+## (RC variable: $force_include_mode)
+## - Added .lot and .lof files to clean up list of extentions.
+## - Added file "texput.log" to list of files to clean for -c.
+## - LatexMk now handles file names in a similar fashion to latex.
+## The ".tex" extention is no longer enforced.
+## - Added $texfile_search RC variable to look for default files.
+## - Fixed \input and \include so they add ".tex" extention if necessary.
+## - Allow intermixing of file names and options.
+## - Added "-d" and banner options (-bm, -bs, and -bi).
+## (RC variables: $banner, $banner_message, $banner_scale,
+## $banner_intensity, $tmpdir)
+## - Fixed "-r" option to detect an command line syntax errors better.
+## 1.3 - Added "-F" option, patch supplied by Patrick van der Smagt.
+## 1.2 - Added "-C" option.
+## - Added $clean_ext and $clean_full_ext variables for RC files.
+## - Added custom dependency generation capabilities.
+## - Added command line and variable to specify custom RC file.
+## - Added reading of rc file in current directly.
+## 1.1 - Fixed bug where Dependency file generation header is printed
+## rependatively.
+## - Fixed bug where TEXINPUTS path is searched for file that was
+## specified with absolute an pathname.
+## 1.0 - Ripped from script by David J. Musliner (RCS version 2.3) called "go"
+## - Fixed a couple of file naming bugs
+## e.g. when calling latex, left the ".tex" extention off the end
+## of the file name which could do some interesting things
+## with some file names.
+## - Redirected output of dvips. My version of dvips was a filter.
+## - Cleaned up the rc file mumbo jumbo and created a dependency file
+## instead. Include dependencies are always searched for if a
+## dependency file doesn't exist. The -i option regenerates the
+## dependency file.
+## Getting rid of the rc file stuff also gave the advantage of
+## not being restricted to one tex file per directory.
+## - Can specify multiple files on the command line or no files
+## on the command line.
+## - Removed lpr options stuff. I would guess that generally,
+## you always use the same options in which case they can
+## be set up from an rc file with the $lpr variable.
+## - Removed the dviselect stuff. If I ever get time (or money :-) )
+## I might put it back in if I find myself needing it or people
+## express interest in it.
+## - Made it possible to view dvi or postscript file automatically
+## depending on if -ps option selected.
+## - Made specification of dvi file viewer seperate for -pv and -pvc
+## options.
+##-----------------------------------------------------------------------
+
+## default document processing programs.
+$latex = 'latex';
+$bibtex = 'bibtex';
+$slitex = 'slitex';
+$makeindex = 'makeindex';
+$dvips = 'dvips';
+$dvips_landscape = 'dvips -tlandscape';
+$dviselect = 'dviselect';
+$ps_previewer = 'gv';
+$ps_previewer_landscape = 'gv -swap';
+$dvi_previewer = 'xdvi -s 4';
+$dvi_previewer_landscape = 'xdvi -s 4 -paper a4r';
+$dvi_cont_previewer = 'xtex';
+$dvi_cont_previewer_landscape = 'xtex';
+$lpr = 'lpr';
+$tmpdir = '/usr/tmp';
+$pscmd = 'ps -x'; # This works for SunOs. Solaris should just be 'ps'
+
+## default flag settings.
+$bibtex_mode = 0; # is there a bibliography needing bibtexing?
+$index_mode = 0; # is there an index needing makeindex run?
+$landscape_mode = 0; # default to portrait mode
+$sleep_time = 2; # time to sleep b/w checks for file changes in -pvc mode
+$banner = 0; # Non-zero if we have a banner to insert
+$banner_scale = 220; # Original default scale
+$banner_intensity = 0.95; # Darkness of the banner message
+$banner_message = 'DRAFT'; # Original default message
+$dvi_filter = ''; # DVI filter command
+$ps_filter = ''; # Postscript filter command
+
+## Read rc files.
+# Read system rc file.
+$rcfile = '/usr/local/lib/latexmk/LatexMk';
+if ( -e $rcfile )
+{
+ # Read the system rc file
+ do "$rcfile";
+}
+
+# Read user rc file.
+$rcfile = "$ENV{'HOME'}/.latexmkrc";
+if ( -e $rcfile )
+{
+ # Read the user rc file
+ do "$rcfile";
+}
+
+# Read rc file in current directory.
+$rcfile = "latexmkrc";
+if ( -e $rcfile )
+{
+ # Read the user rc file
+ do "$rcfile";
+}
+
+
+## Process command line args.
+@the_file_list = ( );
+while ($_ = $ARGV[0])
+{
+ shift;
+ if (/^-c$/) { $cleanup_mode = 1; }
+ elsif (/^-C$/) { $cleanup_mode = 1; $cleanup_full_mode = 1; }
+ elsif (/^-d$/) { $banner = 1; }
+ elsif (/^-f$/) { $force_mode = 1; }
+ elsif (/^-F$/) { $force_include_mode = 1; }
+ elsif (/^-g$/) { $go_mode = 1; }
+ elsif (/^-h$/) { &print_help; }
+ elsif (/^-i$/) { $generate_and_save_includes = 1; }
+ elsif (/^-I$/) { $force_generate_and_save_includes = 1; }
+ elsif (/^-l$/) { $landscape_mode = 1; }
+ elsif (/^-pvc$/) { $preview_continuous_mode = 1; }
+ elsif (/^-pv$/) { $preview_mode = 1; }
+ elsif (/^-ps$/) { $postscript_mode = 1; }
+ elsif (/^-p$/) { $printout_mode = 1; }
+ elsif (/^-s$/) { $slide_mode = 1; }
+ elsif (/^-v$/) { warn "\nLatexMk $version_num\n"; exit; }
+ elsif (/^-r$/) { if ( $ARGV[0] eq '' ) {
+ warn "LatexMk: No RC file specified\n"; &print_help; }
+ if ( -e $ARGV[0] ) {
+ do "$ARGV[0]"; } else {
+ die "LatexMk: RC file [$ARGV[0]] does not exist\n"; }
+ shift; }
+ elsif (/^-bm$/) { if ( $ARGV[0] eq '' ) {
+ warn "LatexMk: No message specified\n"; &print_help; }
+ $banner = 1; $banner_message = $ARGV[0];
+ shift; }
+ elsif (/^-bi$/) { if ( $ARGV[0] eq '' ) {
+ warn "LatexMk: No intensity specified\n"; &print_help; }
+ $banner_intensity = $ARGV[0];
+ shift; }
+ elsif (/^-bs$/) { if ( $ARGV[0] eq '' ) {
+ warn "LatexMk: No scale specified\n"; &print_help; }
+ $banner_scale = $ARGV[0];
+ shift; }
+ elsif (/^-dF$/) { if ( $ARGV[0] eq '' ) {
+ warn "LatexMk: No dvi filter specified\n"; &print_help; }
+ $dvi_filter = $ARGV[0];
+ shift; }
+ elsif (/^-pF$/) { if ( $ARGV[0] eq '' ) {
+ warn "LatexMk: No ps filter specified\n"; &print_help; }
+ $ps_filter = $ARGV[0];
+ shift; }
+ elsif (/^-/) { warn "LatexMk: $_ bad option\n"; }
+ else { @the_file_list = ( @the_file_list, $_ ); }
+}
+@ARGV = @the_file_list;
+
+# Check we haven't selected mutually exclusive modes.
+# Note that -c overides all other options, but doesn't cause
+# an error if they are selected.
+if (($printout_mode && ( $preview_mode || $preview_continuous_mode ))
+ || ( $preview_mode && $preview_continuous_mode ))
+{
+ warn "LatexMk: Conflicting options (-p, -pv, -pvc) selected\n";
+ &print_help;
+}
+
+
+# If seleced a previewer mode, make sure one and only one filename was specified
+if ($preview_mode || $preview_continuous_mode)
+{
+ if (($ARGV[0] eq '') || ($ARGV[1] ne ''))
+ {
+ warn"LatexMk: Need to specify one and only one filename for previewer mode\n";
+ &print_help;
+ }
+}
+
+# If no files specified, try and find some
+if ($ARGV[0] eq '')
+{
+ @ARGV=<*.tex $texfile_search>;
+}
+# If still no files, exit.
+if ($ARGV[0] eq '')
+{
+ warn "LatexMk: No file name specified\n";
+ &print_help; ## print_help function exits.
+}
+
+# If landscape mode, change modes
+if ( $landscape_mode )
+{
+ $dvips = $dvips_landscape;
+ $dvi_previewer = $dvi_previewer_landscape;
+ $dvi_cont_previewer = $dvi_cont_previewer_landscape;
+ $ps_previewer = $ps_previewer_landscape;
+}
+
+# Process for each file.
+foreach $filename ( @ARGV )
+{
+ ## remove extention from filename if was given.
+ if ( &find_basename($filename, $root_filename, $texfile_name) )
+ {
+ die "LatexMk: Could not find file [$texfile_name]\n";
+ }
+
+ if ($cleanup_mode)
+ {
+ ## Do clean if necessary
+ &cleanup;
+ if ($cleanup_full_mode)
+ {
+ &cleanup_full;
+ }
+ }
+ else
+ {
+ ## Make file. ##
+ ## Find includes.
+ $includes = '';
+ $read_depend = 0; # True to read depend file, false to generate it.
+ $depfile = "$root_filename.dep";
+
+ ## Figure out if we read the dependency file or generate a new one.
+ if ( ! $force_generate_and_save_includes )
+ {
+ if ( $generate_and_save_includes )
+ {
+ if ( -e $depfile )
+ {
+ # Compare timestamp of dependency file and root tex file.
+ $dep_mtime = &get_mtime("$depfile");
+ $tex_mtime = &get_mtime("$texfile_name");
+ if ( $tex_mtime < $dep_mtime )
+ {
+ $read_depend = 1;
+ }
+ }
+ }
+ elsif ( -e $depfile ) # If dependency file already exists.
+ {
+ $read_depend = 1;
+ }
+ }
+
+ if ( $read_depend )
+ {
+ # Read the dependency file
+ open(depfile) || die "LatexMk: Couldn't open dependency file [$root_filename.dep]\n";
+ while(<depfile>) { eval; }
+ close(depfile);
+ }
+ else
+ {
+ # Generate dependency file.
+ # get search paths for includes.
+ $psfigsearchpath = '.';
+ $TEXINPUTS = $ENV{'TEXINPUTS'};
+ if (!$TEXINPUTS) { $TEXINPUTS = '.'; }
+ $BIBINPUTS = $ENV{'BIBINPUTS'};
+ if (!$BIBINPUTS) { $BIBINPUTS = $TEXINPUTS; }
+
+ &scan_for_includes("$texfile_name");
+ &update_depend_file;
+ }
+
+ ## put root tex file into list of includes.
+ $includes .= " $texfile_name";
+
+ ## before munging, save existing .aux file.
+ ## - if latex bombs, kill .aux, restore this backup to get back most
+ ## useful bib/ref info.
+ system("cp -p $root_filename.aux $root_filename.aux.bak > /dev/null 2>&1");
+
+ #************************************************************
+
+ &make_dependents("$includes");
+ if ($slide_mode)
+ {
+ &make_slitex_dvi;
+ }
+ else
+ {
+ &make_latex_dvi;
+ }
+ &make_dvi_filtered;
+ &make_preview_continous;
+ &make_postscript;
+ &make_preview;
+ &make_printout;
+ }
+}
+
+#************************************************************
+#### Subroutines
+#************************************************************
+
+sub make_latex_dvi
+{
+ $changed_dvi = 0 ; # flag if anything changed.
+ ## get initial last modified times.
+ $tex_mtime = &get_latest_mtime($includes);
+ $aux_mtime = &get_mtime("$root_filename.aux");
+ $bbl_mtime = &get_mtime("$root_filename.bbl");
+ $ilg_mtime = &get_mtime("$root_filename.ilg");
+ $ind_mtime = &get_mtime("$root_filename.ind");
+
+ ## - if no dvi file, or .aux older than tex file or bib file, run latex.
+ if ( $go_mode || !(-e "$root_filename.dvi")
+ || ($aux_mtime < $tex_mtime)
+ || ($aux_mtime < $bbl_mtime)
+ || ($aux_mtime < $ilg_mtime)
+ || ($aux_mtime < $ind_mtime)
+ || !(-e "$root_filename.aux"))
+ {
+ warn "------------\nRunning first $latex [$texfile_name]\n------------\n";
+ &backup_toc;
+ $return = system("$latex $texfile_name");
+ $changed_dvi = 1;
+
+ if (!$force_mode && $return)
+ {
+ &exit_msg('Latex encountered an error',1);
+ }
+
+ if ($index_mode)
+ {
+ warn "------------\nRunning $makeindex [$root_filename]\n------------\n";
+ $return = system("$makeindex $root_filename");
+
+ if (!$force_mode && $return)
+ {
+ &exit_msg('Makeindex encountered an error');
+ }
+ $ilg_mtime = &get_mtime("$root_filename.ilg");
+ $ind_mtime = &get_mtime("$root_filename.ind");
+ }
+ }
+
+ $bib_mtime = &get_latest_mtime($bib_files);
+ ## if no .bbl or .bib changed since last bibtex run, run bibtex.
+ if ($bibtex_mode && (&check_for_bad_citation || !(-e "$root_filename.bbl")
+ || ($bbl_mtime < $bib_mtime)))
+ {
+ warn "------------\nRunning $bibtex [$root_filename]\n------------\n";
+ $return = system("$bibtex $root_filename");
+ $bbl_mtime = &get_mtime("$root_filename.bbl");
+ }
+
+ if ($bibtex_mode && &check_for_bibtex_errors)
+ {
+ if (!$force_mode)
+ {
+ # touch a .bib file so that will rerun bibtex to fix errors.
+ @split_bib_files = split(' ',$bib_files);
+ system("touch $split_bib_files[0]");
+ &exit_msg('Bibtex reported an error');
+ }
+ }
+
+ ## now, if need to, rerun latex up to twice to generate valid .dvi
+ ## w/ citations resolved.
+
+ $dvi_mtime = &get_mtime("$root_filename.dvi");
+ if ( ($dvi_mtime <= $bbl_mtime) || &check_for_reference_change
+ || ($dvi_mtime <= $ilg_mtime)
+ || ($dvi_mtime <= $ind_mtime)
+ || (&check_toc))
+ {
+ warn "------------\nRunning second $latex [$texfile_name]\n------------\n";
+ &backup_toc;
+ $return = system("$latex $texfile_name");
+ $changed_dvi = 1;
+ }
+
+ if (!$force_mode && $return)
+ {
+ &exit_msg('Latex encountered an error',1);
+ }
+
+ if (&check_for_reference_change || &check_toc)
+ {
+ warn "------------\nRunning third $latex [$texfile_name]\n------------\n";
+ &backup_toc;
+ $return = system("$latex $texfile_name");
+ $changed_dvi = 1;
+ }
+
+ if (!$force_mode && &check_for_bad_reference)
+ {
+ &exit_msg('Latex could not resolve all references');
+ }
+
+ if (!$force_mode && &check_for_bad_citation)
+ {
+ &exit_msg('Latex could not resolve all citations or labels');
+ }
+
+ return(1);
+}
+
+#************************************************************
+
+sub make_slitex_dvi
+{
+ $tex_mtime = &get_latest_mtime($includes);
+ $dvi_mtime = &get_mtime("$root_filename.dvi");
+ if ( $go_mode || !(-e "$root_filename.dvi") || ($dvi_mtime < $tex_mtime) )
+ {
+ warn "------------\nRunning $slitex [$texfile_name]\n------------\n";
+ $return = system("$slitex $texfile_name");
+ }
+ if (!$force_mode && $return)
+ {
+ &exit_msg('Slitex encountered an error');
+ }
+}
+
+#************************************************************
+
+sub make_dvi_filtered
+{
+ return if ( length($dvi_filter) == 0 );
+ warn "------------\nRunning $dvi_filter [$root_filename]\n------------\n";
+ system("$dvi_filter < $root_filename.dvi > $root_filename.dviF");
+}
+
+#************************************************************
+# Finds the basename of the root file
+# Arguments:
+# 1 - Filename to breakdown
+# 2 - Where to place base file
+# 3 - Where to place tex file
+# Returns non-zero if tex file exists
+sub find_basename
+{
+ local($base_name,$ch,$ext,$base_path);
+
+ $ch = '';
+ $ext = '';
+ $base_path = $_[0];
+ while (( $ch ne '.' ) && ( $ch ne '/' ) && ( $base_path ne '' ))
+ {
+ $ext = $ch . $ext;
+ $ch = chop $base_path;
+ }
+ if (( $ch eq '.' ) && ( $base_path ne '' ))
+ {
+ ## Found extention stuff
+ $_[2] = $base_path . '.' . $ext;
+ }
+ else
+ {
+ ## No extention
+ $base_path = $_[0];
+ $_[2] = $_[0];
+ }
+ $ch = '';
+ $base_name = '';
+ while (( $ch ne '/' ) && ( $base_path ne '' ))
+ {
+ $ch = chop $base_path;
+ if ( $ch ne '/' )
+ {
+ $base_name = $ch . $base_name;
+ }
+ }
+ $_[1] = $base_name;
+ if ( ! -e $_[2] )
+ {
+ ## File does not exist, try adding a ".tex" extention
+ if ( -e "$_[2].tex" )
+ {
+ # Adding the extention works, so put the extention back on the
+ # basename
+ $_[1] = $_[2];
+ $_[2] .= '.tex';
+ return(0);
+ }
+ return(1);
+ }
+ return(0);
+}
+
+#************************************************************
+
+sub make_dependents
+{
+ local($file,$dep,$base_name,$ch,$toext,$fromext,$proptoext,$must,$func_name,$return);
+
+ foreach $file (split(' ',$_[0]))
+ {
+ $ch = '';
+ $toext = '';
+ $base_name = $file;
+ while (( $ch ne '.' ) && ( $ch ne '/' ) && ( $base_name ne '' ))
+ {
+ $toext = $ch . $toext;
+ $ch = chop $base_name;
+ }
+ if (( $ch eq '.' ) && ( $base_name ne '' ))
+ {
+ #Extracted proper extention.
+ foreach $dep ( @cus_dep_list )
+ {
+ ($fromext,$proptoext,$must,$func_name) = split(' ',$dep);
+ if ( $toext eq $proptoext )
+ {
+ # Found match
+ if ( -e "$base_name.$fromext" )
+ {
+ # From file exists, now check if it is newer
+ if (( ! (-e "$base_name.$toext" ))
+ || ( &get_mtime("$base_name.$toext")
+ < &get_mtime("$base_name.$fromext") ))
+ {
+ warn "------------\nRunning $func_name [$base_name]\n------------\n";
+ $return = &$func_name($base_name);
+ if ( !$force_mode && $return )
+ {
+ &exit_msg("$func_name encountered an error");
+ }
+ }
+ }
+ else
+ {
+ if ( !$force_mode && ( $must != 0 ))
+ {
+ &exit_msg("File '$base_name.$fromext' does not exist to build '$base_name.$toext'\n");
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+#************************************************************
+
+sub make_printout
+{
+ return if (!$printout_mode);
+ local ($ext);
+ if ( length($ps_filter) == 0 )
+ {
+ $ext = '.ps';
+ }
+ else
+ {
+ $ext = '.psF';
+ }
+ warn "------------\nPrinting using $lpr [$root_filename]\n------------\n";
+ system("$lpr $root_filename$ext");
+}
+
+#************************************************************
+
+sub make_postscript
+{
+ if ( ! $banner )
+ {
+ return if (!$postscript_mode && !$printout_mode);
+ }
+ local ($tmpfile,$header,$dvi_file);
+
+ # Figure out the dvi file name
+ if ( length($dvi_filter) == 0 )
+ {
+ $dvi_file = "$root_filename.dvi";
+ }
+ else
+ {
+ $dvi_file = "$root_filename.dviF";
+ }
+
+ # Do banner stuff
+ if ( $banner )
+ {
+ ## Make temp banner file
+ local(*INFILE,*OUTFILE,$count);
+
+ $tmpfile = "$tmpdir/latexmk.$$";
+ $count = 0;
+ while ( -e $tmpfile )
+ {
+ $count = $count + 1;
+ $tmpfile = "$tmpdir/latexmk.$$.$count";
+ }
+ if ( ! open(OUTFILE, ">$tmpfile") ) {
+ die "LatexMk: Could not open temporary file [$tmpfile]\n"; }
+ print OUTFILE "userdict begin /bop-hook{gsave 200 30 translate\n";
+ print OUTFILE "65 rotate /Times-Roman findfont $banner_scale scalefont setfont\n";
+ print OUTFILE "0 0 moveto $banner_intensity setgray ($banner_message) show grestore}def end\n";
+ close(OUTFILE);
+ $header = "-h $tmpfile";
+ }
+ else
+ {
+ $header = '';
+ }
+
+ $ps_mtime = &get_mtime("$root_filename.ps");
+ $dvi_mtime = &get_mtime("$dvi_file");
+ if (( $ps_mtime < $dvi_mtime ) || $banner )
+ {
+ warn "------------\nRunning $dvips [$root_filename]\n------------\n";
+ system("$dvips $header $dvi_file -o $root_filename.ps");
+ }
+
+ if ( $banner )
+ {
+ unlink("$tmpfile");
+ }
+
+ ## Do we have postscript filtering?
+ if ( length($ps_filter) != 0 )
+ {
+ warn "------------\nRunning $ps_filter [$root_filename]\n------------\n";
+ system("$ps_filter < $root_filename.ps > $root_filename.psF");
+ }
+}
+
+#************************************************************
+# run appropriate previewer.
+
+sub make_preview
+{
+ return if (!$preview_mode);
+ $viewer = $dvi_previewer;
+ $ext = '.dvi';
+ if ($postscript_mode)
+ {
+ $viewer = $ps_previewer;
+ $ext = '.ps';
+ if ( length($ps_filter) != 0 )
+ {
+ $ext = '.psF';
+ }
+ }
+ else
+ {
+ if ( length($dvi_filter) != 0 )
+ {
+ $ext = '.dviF';
+ }
+ }
+ warn "------------\nStarting previewer: $viewer $root_filename$ext\n------------\n";
+ exec("$viewer $root_filename$ext");
+ warn "LatexMk: Could not start previewer [$viewer $root_filename$ext]";
+ exit;
+}
+
+sub backup_toc
+{
+ if ( -e "$root_filename.toc" )
+ {
+ system(
+ "cp -p $root_filename.toc $root_filename.toc.bak > /dev/null 2>&1");
+ }
+}
+
+#************************************************************
+# Compare the toc file with the backup. If they differ then
+# return non-zero.
+sub check_toc
+{
+ local($return);
+
+ if ( -e "$root_filename.toc" )
+ {
+ if ( -e "$root_filename.toc.bak" )
+ {
+ $return = system(
+ "diff $root_filename.toc.bak $root_filename.toc > /dev/null 2>&1");
+ }
+ else
+ {
+ $return = 1;
+ }
+ }
+ else
+ {
+ $return = 0;
+ }
+ return($return);
+}
+
+#************************************************************
+# arg1 = name
+
+sub find_process_id
+{
+ local(@command, $lookingfor);
+ @ps_output = `$pscmd`;
+ shift(@ps_output); # Discard the header line from ps
+ foreach (@ps_output)
+ {
+# s/\s+/ /g; #Compress multiple spaces.
+ ($pid,$tt,$stat,$time,@command) = split(' ',$_);
+ if ("@command" eq "$_[0]")
+ {
+ return($pid);
+ }
+ }
+ return(0);
+}
+
+#************************************************************
+
+sub make_preview_continous
+{
+ return if (!$preview_continuous_mode);
+ #
+ local ($dvi_file);
+ # get the value of SIGUSR1, defaults to SPARC value.
+ if (!(do 'signal.ph'))
+ {
+ eval 'sub SIGUSR1 {30;}';
+ }
+ # Figure out the dvi file name
+ if ( length($dvi_filter) == 0 )
+ {
+ $dvi_file = "$root_filename.dvi";
+ }
+ else
+ {
+ $dvi_file = "$root_filename.dviF";
+ }
+ # note, we only launch a previewer if one isnt already running...
+ # otherwise we'll send reopen signals to the existing previewer.
+ if ($previewer_pid = &find_process_id("$dvi_cont_previewer $dvi_file"))
+ {
+ warn "------------\nReattached to existing previewer, pid=$pid\n------------\n";
+ kill &SIGUSR1,$previewer_pid;
+ }
+ else
+ {
+ if (!($previewer_pid = fork))
+ {
+ # in forked child, close off from parent so previewer runs on
+ # after parent 'latexmk' dies.
+ setpgrp($$,0);
+ warn "------------\n$dvi_cont_previewer $dvi_file\n------------\n";
+ exec("$dvi_cont_previewer $dvi_file");
+ warn "LatexMk: Failed to exec file viewer\n";
+ exit;
+ }
+ }
+ # Loop forever, rebuilding .dvi as necessary.
+ while ( 1 )
+ {
+ sleep($sleep_time);
+ if ($slide_mode)
+ {
+ &make_slitex_dvi;
+ }
+ else
+ {
+ &make_latex_dvi;
+ }
+ if ($changed_dvi)
+ {
+ kill &SIGUSR1,$previewer_pid;
+ }
+ }
+}
+
+#************************************************************
+
+sub get_mtime
+{
+ local ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,
+ $ctime,$blksize,$blocks) = stat($_[0]);
+ $mtime;
+}
+
+#************************************************************
+
+sub check_for_reference_change
+{
+ local($logfile) = "$root_filename.log";
+ open(logfile) || die "LatexMk: Could not open log file to check for reference check\n";
+ while(<logfile>)
+ {
+ if (/Rerun to get/) { return 1; }
+ }
+ 0;
+}
+
+#************************************************************
+
+sub check_for_bad_reference
+{
+ local($logfile) = "$root_filename.log";
+ open(logfile) || die "LatexMk: Could not open log file to check for bad reference\n";
+ while (<logfile>)
+ {
+ if (/LaTeX Warning: Reference[^\001]*undefined./) { return 1; }
+ }
+ 0;
+}
+
+#************************************************************
+# check for citation which latex couldnt resolve.
+
+sub check_for_bad_citation
+{
+ local($logfile) = "$root_filename.log";
+ open(logfile) || die "LatexMk: Could not open log file to check for bad citation\n";
+ while (<logfile>)
+ {
+ if (/LaTeX Warning: Citation[^\001]*undefined./) { return 1; }
+ }
+ 0;
+}
+
+#************************************************************
+# check for citation which bibtex didnt find.
+
+sub check_for_bibtex_errors
+{
+ local($logfile) = "$root_filename.blg";
+ open(logfile) || die "LatexMk: Could not open bibtex log file error check\n";
+ while (<logfile>)
+ {
+ if (/Warning--/) { return 1; }
+ if (/error message/) { return 1; }
+ }
+ 0;
+}
+
+#************************************************************
+# cleanup
+# - erases all generated files, exits w/ no other processing.
+
+sub cleanup
+{
+ unlink("$root_filename.aux");
+ unlink("$root_filename.aux.bak");
+ unlink("$root_filename.bbl");
+ unlink("$root_filename.blg");
+ unlink("$root_filename.log");
+ unlink("$root_filename.ind");
+ unlink("$root_filename.idx");
+ unlink("$root_filename.ilg");
+ unlink("$root_filename.toc");
+ unlink("$root_filename.toc.bak");
+ unlink("$root_filename.lof");
+ unlink("$root_filename.lot");
+ unlink("$root_filename.dep");
+ unlink("texput.log");
+ unlink("texput.aux");
+
+ # .aux files are also made for \include'd files
+ foreach $include (split(' ',$includes))
+ {
+ $include =~ s/\.[^\.]*$/.aux/;
+ unlink($include);
+ }
+ # Do any other file extentions specified
+ foreach $ext (split(' ',$clean_ext))
+ {
+ unlink("$root_filename.$ext");
+ }
+}
+
+#************************************************************
+sub cleanup_full
+{
+ unlink("$root_filename.dvi");
+ unlink("$root_filename.ps");
+ unlink("$root_filename.dviF");
+ unlink("$root_filename.psF");
+ unlink("texput.dvi");
+ # Do any other file extentions specified
+ foreach $ext (split(' ',$clean_full_ext))
+ {
+ unlink("$root_filename.$ext");
+ }
+}
+
+#************************************************************
+sub print_help
+{
+ warn "LatexMk $version_num: Automatic LaTeX document generation routine\n\n";
+ warn "Usage: latexmk [latexmk_options] [filename ...]\n\n";
+ warn " LatexMk_options:\n";
+ warn " -bm <message> - Print message across the page when converting to postscript\n";
+ warn " -bi <intensity> - Set contrast or intensity of banner\n";
+ warn " -bs <scale> - Set scale for banner\n";
+ warn " -c - clean up (remove) all nonessential files\n";
+ warn " -C - clean up (remove) all nonessential files\n";
+ warn " including dvi and postscript files\n";
+ warn " -d - Print `DRAFT' across the page when converting to postscript\n";
+ warn " -dF <filter> - Filter to apply to dvi file\n";
+ warn " -f - force continued processing past errors\n";
+ warn " -F - Ignore non-existent files when making dependencies\n";
+ warn " -g - process regardless of file timestamps\n";
+ warn " -h - print help\n";
+ warn " -i - rescan for includes if depenancy file older than tex file\n";
+ warn " -I - force rescan for includes\n";
+ warn " -l - force landscape mode\n";
+ warn " -ps - generate postscript\n";
+ warn " -pF <filter> - Filter to apply to postscript file\n";
+ warn " -p - print document after generating postscript\n";
+ warn " -pv - preview document\n";
+ warn " -pvc - preview document and continuously update\n";
+ warn " -r <file> - Read custom RC file\n";
+ warn " -s - set slide mode\n";
+ warn " -v - display program version\n";
+ warn " filename = the root filename of LaTeX document\n";
+ warn "\n -p, -pv and -pvc are mutually exclusive\n";
+ warn " -h, -c and -C overides all other options.\n";
+ warn " -pv and -pvc require one and only one filename specified\n";
+ warn " Contents of RC file specified by -r overrides options specified\n";
+ warn " before the -r option on the command line\n";
+
+ exit;
+}
+
+#************************************************************
+# - stats all files listed in first arg, returns most recent modify time of all.
+
+sub get_latest_mtime
+{
+ local($return_mtime) = 0;
+ foreach $include (split(' ',$_[0]))
+ {
+ $include_mtime = &get_mtime($include);
+ if ($include_mtime > $return_mtime)
+ {
+ $return_mtime = $include_mtime;
+ }
+ }
+ $return_mtime;
+}
+
+#************************************************************
+# - looks recursively for included & inputted and psfig'd files and puts
+# them into $includes.
+# - note only primitive comment removal: cannot deal with escaped %s, but then,
+# when would they occur in any line important to LatexMk??
+
+sub scan_for_includes
+{
+ warn "------------\nGenerating Dependency File [$root_filename]\n------------\n";
+ &scan_for_includes_($_[0]);
+}
+
+sub scan_for_includes_
+{
+ local(*FILE,$orig_filename,$full_filename1,$full_filename2);
+ if (!open(FILE,$_[0]))
+ {
+ warn "LatexMk: could not open input file [$_[0]]\n";
+ return;
+ }
+ while(<FILE>)
+ {
+ ($_,$junk) = split('%',$_); # primitive comment removal.
+ if (/\\include[{\s]+([^\001\040\011}]*)[\s}]/)
+ {
+ $full_filename = $1;
+ $orig_filename = $full_filename;
+ $full_filename1 = &find_file($full_filename,$TEXINPUTS,'1');
+
+ if (( $full_filename1 eq '' ) || ( ! -e $full_filename1 ))
+ {
+ $full_filename2 = &find_file("$full_filename.tex",$TEXINPUTS,'1');
+ if (( $full_filename2 ne '' ) && ( -e $full_filename2 ))
+ {
+ $full_filename = $full_filename2;
+ }
+ else
+ {
+ $full_filename = $full_filename1;
+ }
+ }
+ else
+ {
+ $full_filename = $full_filename1;
+ }
+
+ if ($full_filename)
+ {
+ $includes .= "$full_filename ";
+ if ( -e $full_filename )
+ {
+ warn " Found include for file [$full_filename]\n";
+ &scan_for_includes_($full_filename);
+ }
+ else
+ {
+ if ( $orig_filename =~ /^\// )
+ {
+ warn "LatexMk: Could not find file [$orig_filename]\n";
+ }
+ else
+ {
+ warn "LatexMk: Could not find file [$orig_filename] in path [$TEXINPUTS]\n";
+ warn " assuming in current directory ($full_filename)\n";
+ }
+ }
+ }
+ else
+ {
+ if ( ! $force_include_mode )
+ {
+ if ( $orig_filename =~ /^\// )
+ {
+ die "LatexMk: Could not find file [$orig_filename]\n";
+ }
+ else
+ {
+ die "LatexMk: Could not find file [$orig_filename] in path [$TEXINPUTS]\n";
+ }
+ }
+ }
+ }
+ elsif (/\\input[{\s]+([^\001\040\011}]*)[\s}]/)
+ {
+ $full_filename = $1;
+ $orig_filename = $full_filename;
+ $full_filename1 = &find_file($full_filename,$TEXINPUTS,'1');
+
+ if (( $full_filename1 eq '' ) || ( ! -e $full_filename1 ))
+ {
+ $full_filename2 = &find_file("$full_filename.tex",$TEXINPUTS,'1');
+ if (( $full_filename2 ne '' ) && ( -e $full_filename2 ))
+ {
+ $full_filename = $full_filename2;
+ }
+ else
+ {
+ $full_filename = $full_filename1;
+ }
+ }
+ else
+ {
+ $full_filename = $full_filename1;
+ }
+
+ if ($full_filename)
+ {
+ $includes .= "$full_filename ";
+ warn "added '$full_filename'\n";
+ if ( -e $full_filename )
+ {
+ warn " Found input for file [$full_filename]\n";
+ &scan_for_includes_($full_filename);
+ }
+ else
+ {
+ if ( $orig_filename =~ /^\// )
+ {
+ warn "LatexMk: Could not find file [$orig_filename]\n";
+ }
+ else
+ {
+ warn "LatexMk: Could not find file [$orig_filename] in path [$TEXINPUTS]\n";
+ warn " assuming in current directory ($full_filename)\n";
+ }
+ }
+ }
+ else
+ {
+ if ( ! $force_include_mode )
+ {
+ if ( $orig_filename =~ /^\// )
+ {
+ die "LatexMk: Could not find file [$orig_filename]\n";
+ }
+ else
+ {
+ die "LatexMk: Could not find file [$orig_filename] in path [$TEXINPUTS]\n";
+ }
+ }
+ }
+ }
+ elsif (/\\blackandwhite{([^\001\040\011}]*)}/ || /\\colorslides{([^\001}]*)}/)
+ {
+ $slide_mode = 1;
+ $full_filename = $1;
+ if ($1 =~ m/\./)
+ {
+ $full_filename = &find_file($full_filename,$TEXINPUTS);
+ }
+ else
+ {
+ $full_filename = &find_file("$full_filename.tex",$TEXINPUTS);
+ }
+ if ($full_filename)
+ {
+ $includes .= "$full_filename ";
+ if ( -e $full_filename )
+ {
+ warn " Found slide input for file [$full_filename]\n";
+ &scan_for_includes_($full_filename);
+ }
+ }
+ }
+ elsif (/\\psfig{file=([^,}]+)/ || /\\psfig{figure=([^,}]+)/)
+ {
+ $full_filename = &find_file($1,$psfigsearchpath);
+ if ($full_filename)
+ {
+ $includes .= "$full_filename ";
+ if ( -e $full_filename )
+ {
+ warn " Found psfig for file [$full_filename]\n";
+ }
+ }
+ }
+ elsif ( /\\epsfbox{([^}]+)}/ || /\\epsfbox\[[^\]]*\]{([^}]+)}/ ||
+ /\\epsffile{([^}]+)}/ || /\\epsffile\[[^\]]*\]{([^}]+)}/ ||
+ /\\epsfig{file=([^,}]+)/ || /\\epsfig{figure=([^,}]+)/ )
+ {
+ $full_filename = &find_file($1,$TEXINPUTS);
+ if ($full_filename)
+ {
+ $includes .= "$full_filename ";
+ if ( -e $full_filename )
+ {
+ warn " Found epsf for file [$full_filename]\n";
+ }
+ }
+ }
+ elsif (/\\documentstyle[^\000]+landscape/)
+ {
+ warn " Detected landscape mode\n";
+ $landscape_mode = 1;
+ }
+ elsif (/\\bibliography{([^}]+)}/)
+ {
+ $bib_files = $1;
+ $bib_files =~ tr/,/ /;
+ $bib_files = &find_file_list($bib_files,'.bib',$BIBINPUTS);
+ warn " Found bibliography files [$bib_files]\n";
+ $bibtex_mode = 1;
+ }
+ elsif (/\\psfigsearchpath{([^}]+)}/)
+ {
+ $psfigsearchpath = $1;
+ }
+ elsif (/\\makeindex/)
+ {
+ $index_mode = 1;
+ warn " Detected index mode\n";
+ }
+ }
+}
+
+#************************************************************
+# given filename and path, return full name of file, or die if none found.
+# when force_include_mode=1, only warn if an include file was not
+# found, and return 0 (PvdS).
+
+sub find_file
+{
+ if ( $_[0] =~ /^\// )
+ {
+ if ($force_include_mode)
+ {
+ if ( $_[2] eq '' )
+ {
+ warn "LatexMk: Could not find file [$_[0]]\n";
+ }
+ return("$_[0]");
+ }
+ else
+ {
+ if (-e $_[0])
+ {
+ return("$_[0]");
+ }
+ die "LatexMk: Could not find file [$_[0]]\n";
+ }
+ }
+ foreach $dir (split(':',$_[1]))
+ {
+ if (-e "$dir/$_[0]")
+ {
+ return("$dir/$_[0]");
+ }
+ }
+ if ($force_include_mode)
+ {
+ if ( $_[2] eq '' )
+ {
+ warn "LatexMk: Could not find file [$_[0]] in path [$_[1]]\n";
+ warn " assuming in current directory (./$_[0])\n";
+ }
+ return("./$_[0]");
+ }
+ else
+ {
+ if ( $_[2] ne '' )
+ {
+ return('');
+ }
+ die "LatexMk: Could not find file [$_[0]] in path [$_[1]]\n";
+ }
+}
+
+#************************************************************
+# given space sep list of filenames, a file suffix, and a path, return list of
+# full names of files, or die w/ warning if not found.
+# When $force_include_mode=1, don't die and don't append the file names (PvdS).
+
+sub find_file_list
+{
+ local($tmp_file,$return_list) = '';
+ foreach $file (split(' ',$_[0]))
+ {
+ $tmp_file = &find_file("$file$_[1]",$_[2]);
+ if ($tmp_file)
+ {
+ $return_list .= $tmp_file . " ";
+ }
+ }
+ $return_list;
+}
+
+#************************************************************
+sub exit_msg
+{
+ warn "\n------------\n";
+ warn "LatexMk: $_[0].\n";
+ warn "-- Use the -f option to force complete processing.\n";
+ if ($_[1])
+ {
+ warn "LatexMk: restoring last $root_filename.aux file\n";
+ system("cp -p $root_filename.aux.bak $root_filename.aux > /dev/null 2>&1");
+ }
+ exit;
+}
+
+#************************************************************
+
+sub update_depend_file
+{
+ warn "Writing dependency file [$root_filename.dep]\n";
+ $rcfile = ">$root_filename.dep";
+ open(rcfile) || die "LatexMk: Unable to open dependency file [$rcfile] for updating\n";
+ print rcfile '$includes = \'' . "$includes';\n";
+ print rcfile '$bib_files = \'' . "$bib_files';\n";
+ if ($slide_mode)
+ {
+ print rcfile '$slide_mode = 1;' . "\n";
+ }
+ if ($bibtex_mode)
+ {
+ print rcfile '$bibtex_mode = 1;' . "\n";
+ }
+ if ($index_mode)
+ {
+ print rcfile '$index_mode = 1;' . "\n";
+ }
+ close rcfile;
+}
diff --git a/obsolete/support/latexmk/latexmk.1 b/obsolete/support/latexmk/latexmk.1
new file mode 100644
index 0000000000..0cf0103e41
--- /dev/null
+++ b/obsolete/support/latexmk/latexmk.1
@@ -0,0 +1,474 @@
+.TH LATEXMK 1L "27 Jan 1995" ""
+.SH NAME
+latexmk \- generate LaTeX document
+.SH SYNOPSIS
+.B latexmk
+[-bm message] [-bs scale] [-bi intensity] [-c] [-C] [-d] [-dF filter] [-f] [-F] [-g] [-h] [-i] [-I] [-l] [-p] [-ps] [-pF filter] [-pv] [-pvc] [-r rcfile] [-s] [file ...]
+.SH DESCRIPTION
+.I LatexMk
+completely automates the process of generating a LaTeX document.
+Essentially, it is a highly specialized relative of the general
+\fImake\fR utility. Given the source files for a document,
+\fIlatexmk\fR issues the appropriate sequence of commands to generate
+a .dvi, .ps or hardcopy version of the document.
+.PP
+\fILatexmk\fR recognizes the commands that are unique to SliTeX
+documents; slide mode is automatically turn on when it finds a
+\\colorslides or \\blackandwhite include command.
+.PP
+\fILatexmk\fR will scan source files for all included files, placing
+the resulting dependency information into a dependency file with the
+same name as the root file with the extension \fB.dep\fR. This option
+allows the user to essentially leave all the work to \fIlatexmk\fR.
+The program will find all LaTeX \\include, \\input, \\psfig, \\epsfbox,
+\\blackandwhite, and \\colorslides commands which input other source
+files. When \fIlatexmk\fR is run, it will examine the timestamps on
+those files and run the various LaTeX processing programs as necessary,
+if any of the source files have been changed since the last document
+generation. If the dependencies of the document are changed (e.g., by
+adding or removing a \\include command), an additional pass of
+\fIlatexmk -i\fR or \fIlatexmk -I\fR will update the dependency file.
+.PP
+By default, if no dependency exists, the source files are scanned and the
+dependency file generated. If the dependency file exists, it is read
+instead (even if the root file is newer than the dependency file (see
+-\fBi\fR option))
+.PP
+\fILatexMk\fR has two different previewing options. In the simple
+\fB-pv\fR option, a postscript or dvi previewer is automatically run
+after generating the postscript or dvi version of the document. The
+type of viewer is selected automatically depending on the \fB-ps\fR
+option. When a document is reaching the final stages of editing, the
+user frequently wants to make small changes to the source files and
+examine the effects in a previewer; for this phase, \fIlatexmk\fR
+provides the powerful \fB-pvc\fR option (mnemonic: "preview
+continuously"). With this option, \fIlatexmk\fR forks a child process
+to run an \fIxtex\fR (or other specified) previewer on the document,
+and then \fIlatexmk\fR repeatedly monitors the source files of the
+document to see if any changes have been made since the last .dvi file
+was produced. When changes are detected, \fIlatexmk\fR runs the
+appropriate LaTeX commands to regenerate the .dvi file, and then sends
+a signal to \fIxtex\fR job, indicating that the previewer should update
+its display. Thus the user can simply edit a file and, when the
+changes are written to disk, \fIlatexmk\fR completely automates the
+cycle of updating the .dvi and refreshing the previewer's display.
+It's not quite WYSIWYG, but LaTeX has never been closer.
+.PP
+\fILatexMk\fR has the ability to print a banner in gray diagonally across
+each page when making the postscript file.
+.SH LATEXMK OPTIONS
+.TP
+.B file
+One or more files can be specified. If no files are specified,
+\fIlatexmk\fR will run on all files in the current working directory
+with a ".tex" extention and any files that match any file masks
+specified in the \fI$texfile_search\fR variable.
+
+If a file specified does exist, and does not have an ".tex" extention, then
+the ".tex" extention is automatically added. (e.g. If you specify:
+
+latexmk foo
+
+and the file "foo" does not exist, then \fIlatexmk\fR will try to operate
+on the file "foo.tex".
+.TP
+.B -bm <message>
+A banner message to print diagonally accross each page when converting
+the dvi file to postscript. The message must be a single argument on
+the command line so be careful with quoting spaces and such.
+
+Note that if the \fB-bm\fR option is specified, the \fB-ps\fR option is
+assumed and the postscript file is always generated, even if it is newer
+than the dvi file.
+.TP
+.B -bi <intensity>
+How dark to print the banner message. A decimal number between 0 and 1.
+0 is black and 1 is white, default is 0.95 which is ok unless your
+toner cartridge is getting low.
+.TP
+.B -bs <scale>
+A decimal number that specifies how large the banner message will be
+printed. Experimentation is necessary to get the right scale for your
+message, as a rule of thumb the scale should be about equal to 1100
+divided by the number of characters in the message. Default is 220.0
+which is just right for 5 character messages.
+.TP
+.B -c
+Clean up (remove) all unnecessary files generated by \fIlatex\fR and
+\fIbibtex\fR except dvi and postscript.
+.TP
+.B -C
+Clean up (remove) all unnecessary files generated by \fIlatex\fR and
+\fIbibtex\fR including dvi and postscript.
+.TP
+.B -d
+Set draft mode. This prints the banner message "DRAFT" across your
+page when converting the dvi file to postscript. Size and intensity
+can be modified with the \fI-bs\fR and \fI-bi\fR options. The \fI-bm\fR
+option will override this option as this is really just a short way of
+specifying:
+
+latexmk -bm DRAFT
+
+Note that if the \fB-d\fR option is specified, the \fB-ps\fR option is
+assumed and the postscript file is always generated, even if it is newer
+than the dvi file.
+.TP
+.B -dF
+Dvi file filtering. The argument to this option is a filter which will
+generate a filtered dvi file with the extention ".dviF". All extra
+processing (e.g. conversion to postscript, preview, printing) will then
+be performed on this filtered dvi file.
+
+Exampe usage: Use dviselect to select only the even pages of the dvi file:
+
+latexmk -dF 'dviselect even' foo.tex
+.TP
+.B -f
+Force \fIlatexmk\fR to continue document processing despite errors.
+Normally, when \fIlatexmk\fR detects that \fIlatex\fR has found an error
+which will not be resolved by further processing, the program terminates.
+.TP
+.B -F
+Force \fIlatexmk\fR to include files that don't exist when generating
+dependency files. A warning is produced instead of an error message and
+the program terminating. If the file name is not an absolute path, it
+is assumed to be relative to the current working directory.
+.TP
+.B -g
+Force \fIlatexmk\fR to process document, disregarding the timestamps of the
+source files.
+This option is particularly useful when updating style files, which are not
+included in the file dependency information.
+.TP
+.B -h
+Print help information.
+.TP
+.B -i
+Scan source files and generate new dependency file if root file is newer
+than dependency file or dependency file does not exist.
+.TP
+.B -I
+Always scan source files and generate new dependency file, even if newer
+dependency file exists. This forces a scan.
+.TP
+.B -l
+Run in landscape mode, using the landscape mode previewers and dvi to
+postscript converters.
+.TP
+.B -p
+Print out the file using lpr after generating the postscript version.
+.TP
+.B -ps
+Generate postscript version of document.
+.TP
+.B -pF
+Postscript file filtering. The argument to this option is a filter
+which will generate a filtered postscript file with the extention
+".psF". All extra processing (e.g. preview, printing) will then be
+performed on this filtered postscript file.
+
+Exampe usage: Use psnup to print two pages on the one page:
+
+latexmk -ps -pF 'psnup -2' foo.tex
+.TP
+.B -pv
+Run file previewer if \fB-ps\fR specified, will run postscript previewer,
+otherwise runs dvi previewer.
+.TP
+.B -pvc
+Run a dvi-previewer and continually update the .dvi file whenever changes
+are made to source files (see the Description above).
+Note that if \fIlatexmk\fR dies because it encounters an error,
+the forked previewer will continue to run. Successive invocations with
+the \fB-pvc\fR option will not fork new previewers, but will find
+the existing previewer and send it the signals indicating the .dvi has
+been updated.
+.TP
+.B -r <rcfile>
+Read specified RC file before processing. The contents of the RC file my
+override options specified before the \fB-r\fR option, therefore it is
+a good idea have the habit of specifying the -r option first.
+.TP
+.B -s
+Set slide mode.
+.TP
+.B -v
+Print version number of \fILatexMk\fR.
+.PP
+If \fI-ps\fR or \fI-s\fR are specified when the dependency file is created
+or updated, then these options are stored in the dependency file. This
+means that these options will automatically be activated without having
+to be explicitly specified on the command line in future runs. Of coarse,
+if the dependency file is updated or deleted, these automatic settings will
+be lost.
+.PP
+Options \fI-pv\fR and \fI-pvc\fR require one and only one filename specified
+on the command line.
+.PP
+Options \fI-p\fR, \fI-pv\fR and \fI-pvc\fR are mutually exclusive.
+.SH EXAMPLES
+.nf
+.ta 2i
+% \fBlatexmk thesis\fR \fI# scan for includes, setup thesis.dep
+ if thesis.tex is does not exist\fR
+
+% \fBlatexmk -i thesis\fR \fI# scan for includes, setup thesis.dep
+ if thesis.tex is newer\fR
+
+% \fBlatexmk -I thesis\fR \fI# scan for includes, setup thesis.dep\fR
+
+% \fBlatexmk -c\fR \fI# remove .aux, .log, .bbl, .blg, .dep,
+ .dvi, .ps & .bbe files\fR
+.SH RC FILE
+.PP
+There are four RC files that latexmk can read at startup:
+.PP
+1) The system RC file "/usr/local/lib/latexmk/LatexMk".
+.PP
+2) The user's RC file in "$HOME/.latexmkrc".
+.PP
+3) The RC file in the current working directory called "latexmkrc".
+.PP
+4) The RC file specified on the command line with the \fB-r\fR option.
+.PP
+The available variables that can be set are shown below. Syntax is of the
+form:
+.PP
+$bibtex='bibtex';
+.SH RC VARIABLES
+.PP
+Default values are indicated in brackets.
+.TP
+.B $banner [0]
+If nonzero, the banner message is printed across each page when converting
+the dvi file to postscript. Without modifying $banner_message, this is
+equivalent to specifing the \fB-d\fR option.
+
+Note that if \fB$banner\fR is nonzero, the \fB$postscript_mode\fR is
+assumed and the postscript file is always generated, even if it is newer
+than the dvi file.
+.TP
+.B $banner_intensity [0.95]
+Equivalent to the \fB-bi\fR option, this is a decimal number between 0
+and 1 that specifies how dark to print the banner message. 0 is black,
+1 is white. The default is just right if your toner cartridge isn't
+running too low.
+.TP
+.B $banner_message ['DRAFT']
+The banner message to print across each page when converting the dvi
+file to postscript. This is equivalent to the \fB-bm\fR option.
+.TP
+.B $banner_scale [220.0]
+A decimal number that specifies how large the banner message will be
+printed. Experimentation is necessary to get the right scale for your
+message, as a rule of thumb the scale should be about equal to 1100
+divided by the number of characters in the message. The Default is
+just right for 5 character messages. This is equivalent to the
+\fB-bs\fR option.
+.TP
+.B $bibtex ['bibtex']
+The BibTeX processing program.
+.TP
+.B $bibtex_mode [0]
+If nonzero, the document has a bibtex bibliography. Set by the \fB-i\fR
+and \fB-I\fR options and saved in the dependency file. Should not need
+to set this in an RC file.
+.TP
+.B $cleanup_mode [0]
+If nonzero, specifies cleanup mode. All other options ignored.
+Equivalent to specifying the \fB-c\fR option. Recommend that this is
+not set from an RC file.
+.TP
+.B $clean_ext ['']
+Extra extensions of files for latexmk to remove when the \fB-c\fR option
+is selected.
+.TP
+.B $clean_full_ext ['']
+Extra extensions of files for latexmk to remove when the \fB-C\fR option
+is selected.
+.TP
+.B $cus_dep_list [empty]
+Custom dependency list (see below).
+.TP
+.B $dvi_cont_previewer ['xtex']
+The dvi-previewer to run with the \fB-pvc\fR option.
+.TP
+.B $dvi_cont_previewer_landscape ['xtex']
+The dvi-previewer to run with the \fB-pvc\fR option in landscape mode.
+.TP
+.B $dvi_filter [empty]
+The dvi file filter to be run on the newly produced dvi file before
+other processing. Equivalent to specifying the \fB-dF\fR option.
+.TP
+.B $dvi_previewer ['xdvi -s 4']
+The dvi-previewer to run with the \fB-pv\fR option.
+.TP
+.B $dvi_previewer_landscape ['xdvi -s 4 -paper a4r']
+The dvi-previewer to run with the \fB-pv\fR option in landscape mode.
+.TP
+.B $dvips ['dvips']
+The program to used as a filter to convert a .dvi file to a .ps file.
+.TP
+.B $dvips_landscape ['dvips -tlandscape']
+The program to used as a filter to convert a .dvi file to a .ps file
+in landscape mode.
+.TP
+.B $force_generate_and_save_includes [0]
+If nonzero, specifies that the dependency file should always be
+generated. Equivalent to specifying the \fB-I\fR option.
+.TP
+.B $force_mode [0]
+If nonzero, continue processing past minor \fIlatex\fR errors
+including unrecognized cross references. Equivalent to specifying the
+\fB-f\fR option.
+.TP
+.B $force_include_mode [0]
+If nonzero, force \fIlatexmk\fR to include files that don't exist when
+generating dependency files. A warning is produced instead of an error
+message and the program terminating. If the file name is not an
+absolute path, it is assumed to be relative to the current working
+directory. Equivalent to specifying the \fB-F\fR option.
+.TP
+.B $gererate_and_save_includes [0]
+If nonzero, generates dependency file if it does not exist or is older
+than the root file (the base .tex file). Equivalent to specifying
+the \fB-i\fR option.
+.TP
+.B $go_mode [0]
+If nonzero, process files regardless of timestamps. Equivalent to the
+\fB-g\fR option.
+.TP
+.B $index_mode [0]
+If nonzero, run \fImakeindex\fR to produce index of document. Set by
+the \fB-i\fR and \fB-I\fR options and saved in the dependency file.
+Should not need to set this in an RC file.
+.TP
+.B $landscape_mode [0]
+If nonzero, run in landscape mode, using the landscape mode previewers and
+dvi to postscript converters. Equivalent to the \fB-l\fR option.
+.TP
+.B $latex ['latex']
+The LaTeX processing program.
+.TP
+.B $lpr ['lpr']
+The printing program.
+.TP
+.B $makeindex ['makeindex']
+The index processing program.
+.TP
+.B $postscript_mode [0]
+If nonzero, generate a postscript version of the document.
+Set by the \fB-i\fR and \fB-I\fR options if $slide_mode is set.
+Equivalent to the \fB-ps\fR option and is stored in the dependency file
+if generated.
+.TP
+.B $preview_continuous_mode [0]
+If nonzero, run the \fB$dvi_previewer\fR to preview the document, and
+continue running \fIlatexmk\fR to keep .dvi up-to-date. Equivalent to
+the \fB-pvc\fR option.
+.TP
+.B $preview_mode [0]
+If nonzero, run the \fB$ps_previewer\fR to preview the document.
+Equivalent to the \fB-pv\fR option.
+.TP
+.B $printout_mode [0]
+If nonzero, print the document using \fIlpr\fR. Equivalent to the
+\fB-p\fR option. Recommend that this is not set from an RC file or
+you could waste lots of paper.
+.TP
+.B $pscmd ['ps -x']
+Command used to get all the processes currently run by the user. This
+is used by the -pvc option to try and reattach itself to the already
+existing previewer from a previous run with -pvc on the same file.
+The default works for SunOS (BSD UNIX?). For Solaris (System V?) try 'ps'
+in the LatexMk RC file.
+.TP
+.B $ps_filter [empty]
+The postscript file filter to be run on the newly produced postscript
+file before other processing. Equivalent to specifying the \fB-pF\fR
+option.
+.TP
+.B $ps_previewer ['gs']
+The postscript previewer to run with the \fB-pv\fR option.
+.TP
+.B $ps_previewer_landscape ['gs -swap']
+The postscript previewer to run with the \fB-pv\fR option in landscape mode.
+.TP
+.B $sleep_time [2]
+The time to sleep (in seconds) between checking for source file
+changes when running the \fB-pvc\fR option.
+.TP
+.B $slide_mode [0]
+If nonzero, document is a Slitex document. Set by the \fB-i\fR
+and \fB-I\fR options or the \fB-s\fR option. Saved in the
+dependency file if generated.
+.TP
+.B $slitex ['slitex']
+The SLiTeX processing program for slides.
+.TP
+.B $texfile_search ['']
+If no files were specified on the command line, then \fIlatexmk\fR will
+search for and files in the current working directory that end with a
+".tex" extention or match the file mask specifed in this variable.
+
+e.g.: $texfile_search = "$texfile_search *.ftex *.c.tex";
+.TP
+.B $tmpdir ['/usr/tmp']
+Directory to store very small temporary files that \fIlatexmk\fR generates
+while running.
+.SH CUSTOM DEPENDENCIES
+.PP
+In any RC file a set of custom dependencies can be set up to convert a
+file with one extension to a file with another. An example use of this
+would be to allow \fIlatexmk\fR to convert a \fI.fig\fR file to
+\fI.eps\fR to be included in the \fI.tex\fR file. A table of custom
+dependencies are set up by using the \fB@cus_dep_list\fR array. Each
+string in the array has four arguments, separated by a space:
+.TP
+.B from extention:
+The extension of the file we are converting from (e.g. "fig").
+.TP
+.B to extention:
+The extension of the file we are converting to (e.g. "eps").
+.TP
+.B must:
+If non-zero, the file we are converting from \fBmust\fR exist, if it
+doesn't exist \fIlatexmk\fR will give an error message and exit unless
+the \fB-f\fR option is specified. If \fImust\fR is zero and the file
+we are converting from doesn't exist, then no action is taken.
+.TP
+.B function:
+The name of the subroutine that \fIlatexmk\fR should call to perform the
+file conversion. The first argument to the subroutine is the base name
+of the file to be converted without any extension. The subroutines are
+declared in the syntax of \fIperl\fR.
+.PP
+Example in an RC file to convert a \fI.fig\fR file to a \fI.eps\fR file:
+
+@cus_dep_list = (@cus_dep_list, "fig eps 0 fig2eps");
+
+sub fig2eps
+{
+ system("fig2dev -Lps $_[0].fig $_[0].eps");
+}
+
+The subroutine \fIfig2eps\fR will only be called if the \fI.fig\fR file
+was modified more recently then the \fI.eps\fR file, or the \fI.eps\fR
+file does not exist.
+
+If the return value of the subroutine is non-zero, then \fIlatexmk\fR
+will assume an error occurred during the execution of the subroutine.
+
+.SH SEE ALSO
+latex(1), bibtex(1).
+.SH BUGS
+If you use macros for generating input file names in your document,
+latexmk will not be able to figure out what the name should be when
+trying to generate a dependency file. Using the \fI-F\fR option will
+make latexmk ignore these, but latexmk will also obviously not have
+a complete dependency list.
+.SH IDENTIFICATION
+Modifications and enhancements by Evan McLean (Version 2.0)
+.br
+Original script called "go" by David J. Musliner (RCS Version 3.2)
diff --git a/obsolete/support/pdftexenc/8x.enc b/obsolete/support/pdftexenc/8x.enc
new file mode 100644
index 0000000000..24c8b545b9
--- /dev/null
+++ b/obsolete/support/pdftexenc/8x.enc
@@ -0,0 +1,259 @@
+AdobeExpertEnc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/exclamsmall
+/Hungarumlautsmall
+/.notdef
+/dollaroldstyle
+/dollarsuperior
+/ampersandsmall
+/Acutesmall
+/parenleftsuperior
+/parenrightsuperior
+/twodotenleader
+/onedotenleader
+/comma
+/hyphen
+/period
+/fraction
+/zerooldstyle
+/oneoldstyle
+/twooldstyle
+/threeoldstyle
+/fouroldstyle
+/fiveoldstyle
+/sixoldstyle
+/sevenoldstyle
+/eightoldstyle
+/nineoldstyle
+/colon
+/semicolon
+/commasuperior
+/threequartersemdash
+/periodsuperior
+/questionsmall
+/.notdef
+/asuperior
+/bsuperior
+/centsuperior
+/dsuperior
+/esuperior
+/.notdef
+/.notdef
+/.notdef
+/isuperior
+/.notdef
+/.notdef
+/lsuperior
+/msuperior
+/nsuperior
+/osuperior
+/.notdef
+/.notdef
+/rsuperior
+/ssuperior
+/tsuperior
+/.notdef
+/ff
+/fi
+/fl
+/ffi
+/ffl
+/parenleftinferior
+/.notdef
+/parenrightinferior
+/Circumflexsmall
+/hyphensuperior
+/Gravesmall
+/Asmall
+/Bsmall
+/Csmall
+/Dsmall
+/Esmall
+/Fsmall
+/Gsmall
+/Hsmall
+/Ismall
+/Jsmall
+/Ksmall
+/Lsmall
+/Msmall
+/Nsmall
+/Osmall
+/Psmall
+/Qsmall
+/Rsmall
+/Ssmall
+/Tsmall
+/Usmall
+/Vsmall
+/Wsmall
+/Xsmall
+/Ysmall
+/Zsmall
+/colonmonetary
+/onefitted
+/rupiah
+/Tildesmall
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/exclamdownsmall
+/centoldstyle
+/Lslashsmall
+/.notdef
+/.notdef
+/Scaronsmall
+/Zcaronsmall
+/Dieresissmall
+/Brevesmall
+/Caronsmall
+/.notdef
+/Dotaccentsmall
+/.notdef
+/.notdef
+/Macronsmall
+/.notdef
+/.notdef
+/figuredash
+/hypheninferior
+/.notdef
+/.notdef
+/Ogoneksmall
+/Ringsmall
+/Cedillasmall
+/.notdef
+/.notdef
+/.notdef
+/onequarter
+/onehalf
+/threequarters
+/questiondownsmall
+/oneeighth
+/threeeighths
+/fiveeighths
+/seveneighths
+/onethird
+/twothirds
+/.notdef
+/.notdef
+/zerosuperior
+/onesuperior
+/twosuperior
+/threesuperior
+/foursuperior
+/fivesuperior
+/sixsuperior
+/sevensuperior
+/eightsuperior
+/ninesuperior
+/zeroinferior
+/oneinferior
+/twoinferior
+/threeinferior
+/fourinferior
+/fiveinferior
+/sixinferior
+/seveninferior
+/eightinferior
+/nineinferior
+/centinferior
+/dollarinferior
+/periodinferior
+/commainferior
+/Agravesmall
+/Aacutesmall
+/Acircumflexsmall
+/Atildesmall
+/Adieresissmall
+/Aringsmall
+/AEsmall
+/Ccedillasmall
+/Egravesmall
+/Eacutesmall
+/Ecircumflexsmall
+/Edieresissmall
+/Igravesmall
+/Iacutesmall
+/Icircumflexsmall
+/Idieresissmall
+/Ethsmall
+/Ntildesmall
+/Ogravesmall
+/Oacutesmall
+/Ocircumflexsmall
+/Otildesmall
+/Odieresissmall
+/OEsmall
+/Oslashsmall
+/Ugravesmall
+/Uacutesmall
+/Ucircumflexsmall
+/Udieresissmall
+/Yacutesmall
+/Thornsmall
+/Ydieresissmall
+] def
+
diff --git a/obsolete/support/pdftexenc/8xi.enc b/obsolete/support/pdftexenc/8xi.enc
new file mode 100644
index 0000000000..8632079d36
--- /dev/null
+++ b/obsolete/support/pdftexenc/8xi.enc
@@ -0,0 +1,260 @@
+% expert encoding without small caps
+AdobeExpItalicEnc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/dollaroldstyle
+/dollarsuperior
+/.notdef
+/.notdef
+/parenleftsuperior
+/parenrightsuperior
+/twodotenleader
+/onedotenleader
+/comma
+/hyphen
+/period
+/fraction
+/zerooldstyle
+/oneoldstyle
+/twooldstyle
+/threeoldstyle
+/fouroldstyle
+/fiveoldstyle
+/sixoldstyle
+/sevenoldstyle
+/eightoldstyle
+/nineoldstyle
+/colon
+/semicolon
+/commasuperior
+/threequartersemdash
+/periodsuperior
+/.notdef
+/.notdef
+/asuperior
+/bsuperior
+/centsuperior
+/dsuperior
+/esuperior
+/.notdef
+/.notdef
+/.notdef
+/isuperior
+/.notdef
+/.notdef
+/lsuperior
+/msuperior
+/nsuperior
+/osuperior
+/.notdef
+/.notdef
+/rsuperior
+/ssuperior
+/tsuperior
+/.notdef
+/ff
+/fi
+/fl
+/ffi
+/ffl
+/parenleftinferior
+/.notdef
+/parenrightinferior
+/.notdef
+/hyphensuperior
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/colonmonetary
+/onefitted
+/rupiah
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/centoldstyle
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/figuredash
+/hypheninferior
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/onequarter
+/onehalf
+/threequarters
+/.notdef
+/oneeighth
+/threeeighths
+/fiveeighths
+/seveneighths
+/onethird
+/twothirds
+/.notdef
+/.notdef
+/zerosuperior
+/onesuperior
+/twosuperior
+/threesuperior
+/foursuperior
+/fivesuperior
+/sixsuperior
+/sevensuperior
+/eightsuperior
+/ninesuperior
+/zeroinferior
+/oneinferior
+/twoinferior
+/threeinferior
+/fourinferior
+/fiveinferior
+/sixinferior
+/seveninferior
+/eightinferior
+/nineinferior
+/centinferior
+/dollarinferior
+/periodinferior
+/commainferior
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/ACaslon-AltBold.enc b/obsolete/support/pdftexenc/ACaslon-AltBold.enc
new file mode 100644
index 0000000000..b9bc91d1f3
--- /dev/null
+++ b/obsolete/support/pdftexenc/ACaslon-AltBold.enc
@@ -0,0 +1,260 @@
+%FontName ACaslon-AltBold
+ACaslon-AltBold-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longdbls
+/st
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ct
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longsh
+/longsi
+/.notdef
+/k
+/longsl
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longs
+/longst
+/.notdef
+/v
+/w
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/ACaslon-AltBoldItalic.enc b/obsolete/support/pdftexenc/ACaslon-AltBoldItalic.enc
new file mode 100644
index 0000000000..cf8448f00a
--- /dev/null
+++ b/obsolete/support/pdftexenc/ACaslon-AltBoldItalic.enc
@@ -0,0 +1,260 @@
+%FontName ACaslon-AltBoldItalic
+ACaslon-AltBoldItalic-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longdbls
+/st
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ct
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longsh
+/longsi
+/.notdef
+/k
+/longsl
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longs
+/longst
+/.notdef
+/v
+/w
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/ACaslon-AltItalic.enc b/obsolete/support/pdftexenc/ACaslon-AltItalic.enc
new file mode 100644
index 0000000000..bdac8e7481
--- /dev/null
+++ b/obsolete/support/pdftexenc/ACaslon-AltItalic.enc
@@ -0,0 +1,260 @@
+%FontName ACaslon-AltItalic
+ACaslon-AltItalic-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longdbls
+/st
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ct
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longsh
+/longsi
+/.notdef
+/k
+/longsl
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longs
+/longst
+/.notdef
+/v
+/w
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/ACaslon-AltRegular.enc b/obsolete/support/pdftexenc/ACaslon-AltRegular.enc
new file mode 100644
index 0000000000..a511440366
--- /dev/null
+++ b/obsolete/support/pdftexenc/ACaslon-AltRegular.enc
@@ -0,0 +1,260 @@
+%FontName ACaslon-AltRegular
+ACaslon-AltRegular-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longdbls
+/st
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ct
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longsh
+/longsi
+/.notdef
+/k
+/longsl
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longs
+/longst
+/.notdef
+/v
+/w
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/ACaslon-AltSemibold.enc b/obsolete/support/pdftexenc/ACaslon-AltSemibold.enc
new file mode 100644
index 0000000000..3124b82bca
--- /dev/null
+++ b/obsolete/support/pdftexenc/ACaslon-AltSemibold.enc
@@ -0,0 +1,260 @@
+%FontName ACaslon-AltSemibold
+ACaslon-AltSemibold-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longdbls
+/st
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ct
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longsh
+/longsi
+/.notdef
+/k
+/longsl
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longs
+/longst
+/.notdef
+/v
+/w
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/ACaslon-AltSemiboldItalic.enc b/obsolete/support/pdftexenc/ACaslon-AltSemiboldItalic.enc
new file mode 100644
index 0000000000..0e422e62ab
--- /dev/null
+++ b/obsolete/support/pdftexenc/ACaslon-AltSemiboldItalic.enc
@@ -0,0 +1,260 @@
+%FontName ACaslon-AltSemiboldItalic
+ACaslon-AltSemiboldItalic-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longdbls
+/st
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ct
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longsh
+/longsi
+/.notdef
+/k
+/longsl
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/longs
+/longst
+/.notdef
+/v
+/w
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/ACaslon-Ornaments.enc b/obsolete/support/pdftexenc/ACaslon-Ornaments.enc
new file mode 100644
index 0000000000..49dc79d4e8
--- /dev/null
+++ b/obsolete/support/pdftexenc/ACaslon-Ornaments.enc
@@ -0,0 +1,260 @@
+%FontName ACaslon-Ornaments
+ACaslon-Ornaments-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/ornament16b
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ornament10
+/ornament18
+/ornament17
+/ornament16a
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ornament26c
+/ornament12b
+/ornament7b
+/ornament24b
+/ornament22d
+/ornament26b
+/ornament1c
+/ornament1d
+/ornament14
+/ornament20a
+/ornament2b
+/ornament3b
+/ornament11d
+/ornament11c
+/.notdef
+/ornament28b
+/ornament22c
+/.notdef
+/ornament25b
+/.notdef
+/ornament23d
+/ornament6b
+/ornament23b
+/ornament4b
+/.notdef
+/ornament5b
+/ornament19a
+/.notdef
+/ornament19b
+/.notdef
+/.notdef
+/.notdef
+/ornament26d
+/ornament12a
+/ornament7a
+/ornament24a
+/ornament22b
+/ornament26a
+/ornament1a
+/ornament1b
+/ornament15
+/ornament20b
+/ornament2a
+/ornament3a
+/ornament11a
+/ornament11b
+/ornament21
+/ornament28a
+/ornament22a
+/ornament13
+/ornament25a
+/ornament8
+/ornament23c
+/ornament6a
+/ornament23a
+/ornament5a
+/ornament9
+/ornament4a
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/AGaramondAlt-Italic.enc b/obsolete/support/pdftexenc/AGaramondAlt-Italic.enc
new file mode 100644
index 0000000000..7530f13e45
--- /dev/null
+++ b/obsolete/support/pdftexenc/AGaramondAlt-Italic.enc
@@ -0,0 +1,260 @@
+%FontName AGaramondAlt-Italic
+AGaramondAlt-Italic-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ampersandalt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ornament1
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/Aswash
+/Bswash
+/Cswash
+/Dswash
+/Eswash
+/Fswash
+/Gswash
+/Hswash
+/Iswash
+/Jswash
+/Kswash
+/Lswash
+/Mswash
+/Nswash
+/Oswash
+/Pswash
+/Qswash
+/Rswash
+/Sswash
+/Tswash
+/Uswash
+/Vswash
+/Wswash
+/Xswash
+/Yswash
+/Zswash
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ct
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/st
+/.notdef
+/.notdef
+/vswash
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/AGaramondAlt-Regular.enc b/obsolete/support/pdftexenc/AGaramondAlt-Regular.enc
new file mode 100644
index 0000000000..8badfaef95
--- /dev/null
+++ b/obsolete/support/pdftexenc/AGaramondAlt-Regular.enc
@@ -0,0 +1,260 @@
+%FontName AGaramondAlt-Regular
+AGaramondAlt-Regular-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ornament1
+/ornament2
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/Qalt
+/Qalttitling
+/.notdef
+/tswashalt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/aswash
+/.notdef
+/ct
+/.notdef
+/eswash
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/nswash
+/.notdef
+/.notdef
+/.notdef
+/rswash
+/.notdef
+/tswash
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/zswash
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/DidotLH-OrnamentsOne.enc b/obsolete/support/pdftexenc/DidotLH-OrnamentsOne.enc
new file mode 100644
index 0000000000..62e87d6cfe
--- /dev/null
+++ b/obsolete/support/pdftexenc/DidotLH-OrnamentsOne.enc
@@ -0,0 +1,260 @@
+%FontName DidotLH-OrnamentsOne
+DidotLH-OrnamentsOne-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/emspace
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/enspace
+/.notdef
+/.notdef
+/.notdef
+/DD040
+/DD041
+/DD042
+/DD043
+/DD044
+/DD045
+/DD046
+/DD047
+/DD050
+/DD051
+/DD052
+/DD053
+/DD054
+/DD055
+/DD060
+/DD061
+/DD062
+/DD063
+/DD064
+/DD065
+/DD070
+/DD071
+/DD072
+/DD073
+/DD074
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/thinspace
+/.notdef
+/DD010
+/DD011
+/DD012
+/DD013
+/DD014
+/DD015
+/DD016
+/DD017
+/DD020
+/DD021
+/DD022
+/DD023
+/DD024
+/DD025
+/DD030
+/DD031
+/DD032
+/DD033
+/DD034
+/DD035
+/DD075
+/DD076
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/DidotLH-OrnamentsTwo.enc b/obsolete/support/pdftexenc/DidotLH-OrnamentsTwo.enc
new file mode 100644
index 0000000000..115a02de7c
--- /dev/null
+++ b/obsolete/support/pdftexenc/DidotLH-OrnamentsTwo.enc
@@ -0,0 +1,260 @@
+%FontName DidotLH-OrnamentsTwo
+DidotLH-OrnamentsTwo-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/emspace
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/enspace
+/.notdef
+/.notdef
+/.notdef
+/DD080
+/DD081
+/DD082
+/DD090
+/DD091
+/DD092
+/DD093
+/DD120
+/DD121
+/DD122
+/DD123
+/DD124
+/DD125
+/DD126
+/DD127
+/.notdef
+/DD140
+/DD141
+/DD132
+/DD133
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/thinspace
+/.notdef
+/DD151
+/DD150
+/DD101
+/DD102
+/DD103
+/DD104
+/DD105
+/DD106
+/DD107
+/DD108
+/DD109
+/DD110
+/DD111
+/DD112
+/DD113
+/DD114
+/DD115
+/DD116
+/DD130
+/DD131
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/Symbol.enc b/obsolete/support/pdftexenc/Symbol.enc
new file mode 100644
index 0000000000..40c97e08ef
--- /dev/null
+++ b/obsolete/support/pdftexenc/Symbol.enc
@@ -0,0 +1,58 @@
+% Adobe Symbol encoding vector
+/SymbolEncoding [
+% 0x00
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x10
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x20
+ /space /exclam /universal /numbersign /existential /percent /ampersand
+ /suchthat /parenleft /parenright /mathasterisk /plus /comma /minus /period
+ /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven /eight /nine /colon
+ /semicolon /less /equal /greater /question
+% 0x40
+ /congruent /Alpha /Beta /Chi /Delta /Epsilon /Phi /Gamma /Eta /Iota /theta1
+ /Kappa /Lambda /Mu /Nu /Omicron
+% 0x50
+ /Pi /Theta /Rho /Sigma /Tau /Upsilon /sigma1 /Omega /Xi /Psi /Zeta
+ /bracketleft /therefore /bracketright /perpendicular /underscore
+% 0x60
+ /radicalex /alpha /beta /chi /delta /epsilon /phi /gamma /eta /iota /phi1
+ /kappa /lambda /mu /nu /omicron
+% 0x70
+ /pi /theta /rho /sigma /tau /upsilon /omega1 /omega /xi /psi /zeta
+ /braceleft /bar /braceright /similar /.notdef
+% 0x80
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x90
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xA0
+ /.notdef /Upsilon1 /minute /lessequal /fraction /infinity /florin /club
+ /diamond /heart /spade /arrowboth /arrowleft /arrowup /arrowright /arrowdown
+% 0xB0
+ /degree /plusminus /second /greaterequal /multiply /proportional
+ /partialdiff /bullet /divide /notequal /equivalence /approxequal /ellipsis
+ /arrowvertex /arrowhorizex /carriagereturn
+% 0xC0
+ /aleph /Ifraktur /Rfraktur /weierstrass /circlemultiply /circleplus
+ /emptyset /intersection /union /propsuperset /reflexsuperset /notsubset
+ /propsubset /reflexsubset /element /notelement
+% 0xD0
+ /angle /gradient /registeredserif /copyrightserif /trademarkserif /product
+ /radical /dotmath /logicalnot /logicaland /logicalor /arrowdblboth
+ /arrowdblleft /arrowdblup /arrowdblright /arrowdbldown
+% 0xE0
+ /lozenge /angleleft /registeredsans /copyrightsans /trademarksans
+ /summation /parenlefttp /parenleftex /parenleftbt /bracketlefttp
+ /bracketleftex /bracketleftbt /bracelefttp /braceleftmid /braceleftbt
+ /braceex
+% 0xF0
+ /.notdef /angleright /integral /integraltp /integralex /integralbt
+ /parenrighttp /parenrightex /parenrightbt /bracketrighttp /bracketrightex
+ /bracketrightbt /bracerighttp /bracerightmid /bracerightbt /.notdef
+] def
diff --git a/obsolete/support/pdftexenc/ZapfDingbats.enc b/obsolete/support/pdftexenc/ZapfDingbats.enc
new file mode 100644
index 0000000000..3b11a6ecf2
--- /dev/null
+++ b/obsolete/support/pdftexenc/ZapfDingbats.enc
@@ -0,0 +1,260 @@
+%FontName ZapfDingbats
+ZapfDingbats-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/a1
+/a2
+/a202
+/a3
+/a4
+/a5
+/a119
+/a118
+/a117
+/a11
+/a12
+/a13
+/a14
+/a15
+/a16
+/a105
+/a17
+/a18
+/a19
+/a20
+/a21
+/a22
+/a23
+/a24
+/a25
+/a26
+/a27
+/a28
+/a6
+/a7
+/a8
+/a9
+/a10
+/a29
+/a30
+/a31
+/a32
+/a33
+/a34
+/a35
+/a36
+/a37
+/a38
+/a39
+/a40
+/a41
+/a42
+/a43
+/a44
+/a45
+/a46
+/a47
+/a48
+/a49
+/a50
+/a51
+/a52
+/a53
+/a54
+/a55
+/a56
+/a57
+/a58
+/a59
+/a60
+/a61
+/a62
+/a63
+/a64
+/a65
+/a66
+/a67
+/a68
+/a69
+/a70
+/a71
+/a72
+/a73
+/a74
+/a203
+/a75
+/a204
+/a76
+/a77
+/a78
+/a79
+/a81
+/a82
+/a83
+/a84
+/a97
+/a98
+/a99
+/a100
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/a101
+/a102
+/a103
+/a104
+/a106
+/a107
+/a108
+/a112
+/a111
+/a110
+/a109
+/a120
+/a121
+/a122
+/a123
+/a124
+/a125
+/a126
+/a127
+/a128
+/a129
+/a130
+/a131
+/a132
+/a133
+/a134
+/a135
+/a136
+/a137
+/a138
+/a139
+/a140
+/a141
+/a142
+/a143
+/a144
+/a145
+/a146
+/a147
+/a148
+/a149
+/a150
+/a151
+/a152
+/a153
+/a154
+/a155
+/a156
+/a157
+/a158
+/a159
+/a160
+/a161
+/a163
+/a164
+/a196
+/a165
+/a192
+/a166
+/a167
+/a168
+/a169
+/a170
+/a171
+/a172
+/a173
+/a162
+/a174
+/a175
+/a176
+/a177
+/a178
+/a179
+/a193
+/a180
+/a199
+/a181
+/a200
+/a182
+/.notdef
+/a201
+/a183
+/a184
+/a197
+/a185
+/a194
+/a198
+/a186
+/a195
+/a187
+/a188
+/a189
+/a190
+/a191
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/ascii.enc b/obsolete/support/pdftexenc/ascii.enc
new file mode 100644
index 0000000000..b6ee96db82
--- /dev/null
+++ b/obsolete/support/pdftexenc/ascii.enc
@@ -0,0 +1,50 @@
+% This is the ASCII encoding scheme
+%
+/ASCIIEncoding [
+% 0x00
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x10
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x20
+ /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /minus /period /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+% 0x40
+ /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
+% 0x50
+ /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+ /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
+% 0x70
+ /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde
+ /.notdef
+% 0x80
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x90
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xA0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xB0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xC0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xD0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xE0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xF0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
diff --git a/obsolete/support/pdftexenc/cmex.enc b/obsolete/support/pdftexenc/cmex.enc
new file mode 100644
index 0000000000..f70cc2adf9
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmex.enc
@@ -0,0 +1,90 @@
+% TeX math extension
+%
+/TeXMathExtensionEncoding [
+%
+/parenleftbig /parenrightbig /bracketleftbig /bracketrightbig /floorleftbig
+/floorrightbig /ceilingleftbig /ceilingrightbig
+%
+/braceleftbig /bracerightbig /angbracketleftbig /angbracketrightbig
+/vextendsingle /vextenddouble /slashbig /backslashbig
+%
+/parenleftBig /parenrightBig /parenleftbigg /parenrightbigg
+/bracketleftbigg /bracketrightbigg /floorleftbigg /floorrightbigg
+%
+/ceilingleftbigg /ceilingrightbigg /braceleftbigg /bracerightbigg
+/angbracketleftbigg /angbracketrightbigg /slashbigg /backslashbigg
+%
+/parenleftBigg /parenrightBigg /bracketleftBigg /bracketrightBigg
+/floorleftBigg /floorrightBigg /ceilingleftBigg /ceilingrightBigg
+%
+/braceleftBigg /bracerightBigg /angbracketleftBigg /angbracketrightBigg
+/slashBigg /backslashBigg /slashBig /backslashBig
+%
+/parenlefttp /parenrighttp /bracketlefttp /bracketrighttp /bracketleftbt
+/bracketrightbt /bracketleftex /bracketrightex
+%
+/bracelefttp /bracerighttp /braceleftbt /bracerightbt /braceleftmid
+/bracerightmid /braceex /arrowvertex
+%
+/parenleftbt /parenrightbt /parenleftex /parenrightex /angbracketleftBig
+/angbracketrightBig /unionsqtext /unionsqdisplay
+%
+/contintegraltext /contintegraldisplay /circledottext /circledotdisplay
+/circleplustext /circleplusdisplay /circlemultiplytext
+/circlemultiplydisplay
+%
+/summationtext /producttext /integraltext /uniontext /intersectiontext
+/unionmultitext /logicalandtext /logicalortext
+%
+/summationdisplay /productdisplay /integraldisplay /uniondisplay
+/intersectiondisplay /unionmultidisplay /logicalanddisplay
+/logicalordisplay
+%
+/coproducttext /coproductdisplay /hatwide /hatwider /hatwidest /tildewide
+/tildewider /tildewidest
+%
+/bracketleftBig /bracketrightBig /floorleftBig /floorrightBig
+/ceilingleftBig /ceilingrightBig /braceleftBig /bracerightBig
+%
+/radicalbig /radicalBig /radicalbigg /radicalBigg /radicalbt /radicalvertex
+/radicaltp /arrowvertexdbl
+%
+/arrowtp /arrowbt /bracehtipdownleft /bracehtipdownright /bracehtipupleft
+/bracehtipupright /arrowdbltp /arrowdblbt
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+
+
+
diff --git a/obsolete/support/pdftexenc/cminch.enc b/obsolete/support/pdftexenc/cminch.enc
new file mode 100644
index 0000000000..6481e399d1
--- /dev/null
+++ b/obsolete/support/pdftexenc/cminch.enc
@@ -0,0 +1,69 @@
+% TeX CM inch
+%
+/TeXInchEncoding [
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmitext.enc b/obsolete/support/pdftexenc/cmitext.enc
new file mode 100644
index 0000000000..398c6bdbb5
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmitext.enc
@@ -0,0 +1,71 @@
+% TeX italic text (this vector is the same as "TeX text" because of
+% the mistake in BaKoMa font -- see file enc-note)
+%
+/TeXItalicTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /ff /fi /fl /ffi /ffl
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/polishlcross /exclam /quotedblright /numbersign /dollar /percent
+/ampersand /quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmittext.enc b/obsolete/support/pdftexenc/cmittext.enc
new file mode 100644
index 0000000000..ed57c34258
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmittext.enc
@@ -0,0 +1,71 @@
+% TeX italic typewriter text (this vectror is the same as "TeX typewriter text"
+% bacause of a mistake in BaKoMa fonts -- see enc-note)
+%
+/TeXItalicTypewriterTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/visiblespace /exclam /quotedbl /numbersign /dollar /percent /ampersand
+/quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /less /equal /greater /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /braceleft /bar /braceright /asciitilde /dieresis
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmmex.enc b/obsolete/support/pdftexenc/cmmex.enc
new file mode 100644
index 0000000000..f70cc2adf9
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmmex.enc
@@ -0,0 +1,90 @@
+% TeX math extension
+%
+/TeXMathExtensionEncoding [
+%
+/parenleftbig /parenrightbig /bracketleftbig /bracketrightbig /floorleftbig
+/floorrightbig /ceilingleftbig /ceilingrightbig
+%
+/braceleftbig /bracerightbig /angbracketleftbig /angbracketrightbig
+/vextendsingle /vextenddouble /slashbig /backslashbig
+%
+/parenleftBig /parenrightBig /parenleftbigg /parenrightbigg
+/bracketleftbigg /bracketrightbigg /floorleftbigg /floorrightbigg
+%
+/ceilingleftbigg /ceilingrightbigg /braceleftbigg /bracerightbigg
+/angbracketleftbigg /angbracketrightbigg /slashbigg /backslashbigg
+%
+/parenleftBigg /parenrightBigg /bracketleftBigg /bracketrightBigg
+/floorleftBigg /floorrightBigg /ceilingleftBigg /ceilingrightBigg
+%
+/braceleftBigg /bracerightBigg /angbracketleftBigg /angbracketrightBigg
+/slashBigg /backslashBigg /slashBig /backslashBig
+%
+/parenlefttp /parenrighttp /bracketlefttp /bracketrighttp /bracketleftbt
+/bracketrightbt /bracketleftex /bracketrightex
+%
+/bracelefttp /bracerighttp /braceleftbt /bracerightbt /braceleftmid
+/bracerightmid /braceex /arrowvertex
+%
+/parenleftbt /parenrightbt /parenleftex /parenrightex /angbracketleftBig
+/angbracketrightBig /unionsqtext /unionsqdisplay
+%
+/contintegraltext /contintegraldisplay /circledottext /circledotdisplay
+/circleplustext /circleplusdisplay /circlemultiplytext
+/circlemultiplydisplay
+%
+/summationtext /producttext /integraltext /uniontext /intersectiontext
+/unionmultitext /logicalandtext /logicalortext
+%
+/summationdisplay /productdisplay /integraldisplay /uniondisplay
+/intersectiondisplay /unionmultidisplay /logicalanddisplay
+/logicalordisplay
+%
+/coproducttext /coproductdisplay /hatwide /hatwider /hatwidest /tildewide
+/tildewider /tildewidest
+%
+/bracketleftBig /bracketrightBig /floorleftBig /floorrightBig
+/ceilingleftBig /ceilingrightBig /braceleftBig /bracerightBig
+%
+/radicalbig /radicalBig /radicalbigg /radicalBigg /radicalbt /radicalvertex
+/radicaltp /arrowvertexdbl
+%
+/arrowtp /arrowbt /bracehtipdownleft /bracehtipdownright /bracehtipupleft
+/bracehtipupright /arrowdbltp /arrowdblbt
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+
+
+
diff --git a/obsolete/support/pdftexenc/cmmi.enc b/obsolete/support/pdftexenc/cmmi.enc
new file mode 100644
index 0000000000..957d249423
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmmi.enc
@@ -0,0 +1,71 @@
+% TeX math italic
+%
+/TeXMathItalicEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /alpha /beta /gamma /delta /epsilon1
+%
+/zeta /eta /theta /iota /kappa /lambda /mu /nu
+%
+/xi /pi /rho /sigma /tau /upsilon /phi /chi
+%
+/psi /omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1
+%
+/arrowlefttophalf /arrowleftbothalf /arrowrighttophalf /arrowrightbothalf
+/arrowhookleft /arrowhookright /triangleright /triangleleft
+%
+/zerooldstyle /oneoldstyle /twooldstyle /threeoldstyle /fouroldstyle
+/fiveoldstyle /sixoldstyle /sevenoldstyle
+%
+/eightoldstyle /nineoldstyle /period /comma /less /slash /greater /star
+%
+/partialdiff /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /flat /natural /sharp /slurbelow /slurabove
+%
+/lscript /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /dotlessi /dotlessj /weierstrass /vector /tie
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmr.enc b/obsolete/support/pdftexenc/cmr.enc
new file mode 100644
index 0000000000..1695ce7742
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmr.enc
@@ -0,0 +1,260 @@
+%FontName cmr10
+cmr10-Enc [
+/Gamma
+/Delta
+/Theta
+/Lambda
+/Xi
+/Pi
+/Sigma
+/Upsilon
+/Phi
+/Psi
+/Omega
+/ff
+/fi
+/fl
+/ffi
+/ffl
+/dotlessi
+/dotlessj
+/grave
+/acute
+/caron
+/breve
+/macron
+/ring
+/cedilla
+/germandbls
+/ae
+/oe
+/oslash
+/AE
+/OE
+/Oslash
+/polishlcross
+/exclam
+/quotedblright
+/numbersign
+/dollar
+/percent
+/ampersand
+/quoteright
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/hyphen
+/period
+/slash
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/exclamdown
+/equal
+/questiondown
+/question
+/at
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+/X
+/Y
+/Z
+/bracketleft
+/quotedblleft
+/bracketright
+/circumflex
+/dotaccent
+/quoteleft
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+/x
+/y
+/z
+/endash
+/emdash
+/hungarumlaut
+/tilde
+/dieresis
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/Gamma
+/Delta
+/Theta
+/Lambda
+/Xi
+/Pi
+/Sigma
+/Upsilon
+/Phi
+/Psi
+/.notdef
+/.notdef
+/Omega
+/ff
+/fi
+/fl
+/ffi
+/ffl
+/dotlessi
+/dotlessj
+/grave
+/acute
+/caron
+/breve
+/macron
+/ring
+/cedilla
+/germandbls
+/ae
+/oe
+/oslash
+/AE
+/OE
+/Oslash
+/polishlcross
+/dieresis
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmsy.enc b/obsolete/support/pdftexenc/cmsy.enc
new file mode 100644
index 0000000000..9153823bb5
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmsy.enc
@@ -0,0 +1,80 @@
+% TeX math symbols
+%
+/TeXMathSymbolsEncoding [
+%
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus
+%
+/circleplus /circleminus /circlemultiply /circledivide /circledot
+/circlecopyrt /openbullet /bullet
+%
+/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
+/greaterequal /precedesequal /followsequal
+%
+/similar /approxequal /propersubset /propersuperset /lessmuch /greatermuch
+/precedes /follows
+%
+/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
+/arrowsoutheast /similarequal
+%
+/arrowdblleft /arrowdblright /arrowdblup /arrowdbldown /arrowdblboth
+/arrownorthwest /arrowsouthwest /proportional
+%
+/prime /infinity /element /owner /triangle /triangleinv /negationslash
+/mapsto
+%
+/universal /existential /logicalnot /emptyset /Rfractur /Ifractur
+/latticetop /perpendicular
+%
+/aleph /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /union /intersection /unionmulti /logicaland /logicalor
+%
+/turnstileleft /turnstileright /floorleft /floorright /ceilingleft
+/ceilingright /braceleft /braceright
+%
+/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
+/backslash /wreathproduct
+%
+/radical /coproduct /nabla /integral /unionsq /intersectionsq
+/subsetsqequal /supersetsqequal
+%
+/section /dagger /daggerdbl /paragraph /club /diamond /heart /spade
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmtex.enc b/obsolete/support/pdftexenc/cmtex.enc
new file mode 100644
index 0000000000..1f95a96cda
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmtex.enc
@@ -0,0 +1,71 @@
+% TeX extended ASCII (this vector is the same as "TeX text without f-ligatures"
+% because of the mistake in BaKoMa font -- see enc-note file)
+%
+/TeXTextWithoutLigEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
+/quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /less /equal /greater /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmtext.enc b/obsolete/support/pdftexenc/cmtext.enc
new file mode 100644
index 0000000000..f519430e43
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmtext.enc
@@ -0,0 +1,70 @@
+% TeX text
+%
+/TeXTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /ff /fi /fl /ffi /ffl
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/polishlcross /exclam /quotedblright /numbersign /dollar /percent
+/ampersand /quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmtextf.enc b/obsolete/support/pdftexenc/cmtextf.enc
new file mode 100644
index 0000000000..88ab0acf18
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmtextf.enc
@@ -0,0 +1,70 @@
+% TeX text without f-ligatures
+%
+/TeXTextWithoutLigEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
+/quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /less /equal /greater /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmtextit.enc b/obsolete/support/pdftexenc/cmtextit.enc
new file mode 100644
index 0000000000..398c6bdbb5
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmtextit.enc
@@ -0,0 +1,71 @@
+% TeX italic text (this vector is the same as "TeX text" because of
+% the mistake in BaKoMa font -- see file enc-note)
+%
+/TeXItalicTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /ff /fi /fl /ffi /ffl
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/polishlcross /exclam /quotedblright /numbersign /dollar /percent
+/ampersand /quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/cmttext.enc b/obsolete/support/pdftexenc/cmttext.enc
new file mode 100644
index 0000000000..0840804768
--- /dev/null
+++ b/obsolete/support/pdftexenc/cmttext.enc
@@ -0,0 +1,70 @@
+% TeX typewriter text
+%
+/TeXTypewriterTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/visiblespace /exclam /quotedbl /numbersign /dollar /percent /ampersand
+/quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /less /equal /greater /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /braceleft /bar /braceright /asciitilde /dieresis
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/csinch.enc b/obsolete/support/pdftexenc/csinch.enc
new file mode 100644
index 0000000000..126ce346f1
--- /dev/null
+++ b/obsolete/support/pdftexenc/csinch.enc
@@ -0,0 +1,74 @@
+% CSTeX CM inch
+%
+/CSTeXInchEncoding [
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /Scaron /.notdef /Tcaron /.notdef /.notdef /Zcaron /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/Racute /Aacute /.notdef /.notdef /.notdef /Lacute /.notdef /.notdef
+%
+/Ccaron /Eacute /.notdef /.notdef /Ecaron /Iacute /.notdef /Dcaron
+%
+/.notdef /.notdef /Ncaron /Oacute /.notdef /.notdef /.notdef /.notdef
+%
+/Rcaron /.notdef /Uacute /.notdef /.notdef /Yacute /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+] def
+
+
+
+
+
diff --git a/obsolete/support/pdftexenc/csitext.enc b/obsolete/support/pdftexenc/csitext.enc
new file mode 100644
index 0000000000..756f9bdf82
--- /dev/null
+++ b/obsolete/support/pdftexenc/csitext.enc
@@ -0,0 +1,77 @@
+% CSTeX italic text
+%
+/CSTeXItalicTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /ff /fi /fl /ffi /ffl
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/polishlcross /exclam /quotedblright /numbersign /sterling /percent
+/ampersand /quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%
+/ellipsis /dagger /daggerdbl /bullet /sterling /paragraph /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /perthousand /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/Agrave /.notdef /.notdef /.notdef /hyphen /ogonek /guillemotleft
+/guillemotright
+%
+/.notdef /Aogonek /breve /Lslash /currency /Lquoteright /Sacute /section
+%
+/dieresis /Scaron /Scedilla /Tcaron /Zacute /.notdef /Zcaron /Zdotaccent
+%
+/ring /aogonek /cedilla /lslash /acute /lquoteright /sacute /caron
+%
+/agrave /scaron /scedilla /tquoteright /zacute /hungarumlaut /zcaron
+/zdotaccent
+%
+/Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla
+%
+/Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron
+%
+/Eth /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis
+/multiply
+%
+/Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Togonek
+/germandbls
+%
+/racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla
+%
+/ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex
+/dquoteright
+%
+/eth /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide
+%
+/rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /quotedblbase
+/quotedblleft
+%
+] def
+
diff --git a/obsolete/support/pdftexenc/csittext.enc b/obsolete/support/pdftexenc/csittext.enc
new file mode 100644
index 0000000000..e6e409ad5e
--- /dev/null
+++ b/obsolete/support/pdftexenc/csittext.enc
@@ -0,0 +1,78 @@
+% CSTeX italic typewriter text
+%
+/CSTeXItalicTypewriterTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/visiblespace /exclam /quotedbl /numbersign /sterling /percent /ampersand
+/quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /less /equal /greater /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /braceleft /bar /braceright /asciitilde /dieresis
+%
+/ellipsis /dagger /daggerdbl /bullet /sterling /paragraph /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /perthousand /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/Agrave /.notdef /.notdef /.notdef /hyphen /ogonek /guillemotleft
+/guillemotright
+%
+/.notdef /Aogonek /breve /Lslash /currency /Lquoteright /Sacute /section
+%
+/dieresis /Scaron /Scedilla /Tcaron /Zacute /.notdef /Zcaron /Zdotaccent
+%
+/ring /aogonek /cedilla /lslash /acute /lquoteright /sacute /caron
+%
+/agrave /scaron /scedilla /tquoteright /zacute /hungarumlaut /zcaron
+/zdotaccent
+%
+/Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla
+%
+/Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron
+%
+/Eth /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis
+/multiply
+%
+/Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Togonek
+/germandbls
+%
+/racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla
+%
+/ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex
+/dquoteright
+%
+/eth /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide
+%
+/rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /quotedblbase
+/quotedblleft
+%
+] def
+
+
diff --git a/obsolete/support/pdftexenc/cstext.enc b/obsolete/support/pdftexenc/cstext.enc
new file mode 100644
index 0000000000..55ac58dc90
--- /dev/null
+++ b/obsolete/support/pdftexenc/cstext.enc
@@ -0,0 +1,83 @@
+% CSTeX text
+%
+/CSTeXTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /ff /fi /fl /ffi /ffl
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/polishlcross /exclam /quotedblright /numbersign /dollar /percent
+/ampersand /quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%
+/ellipsis /dagger /daggerdbl /bullet /sterling /paragraph /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /perthousand /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/Agrave /.notdef /.notdef /.notdef /hyphen /ogonek /guillemotleft
+/guillemotright
+%
+/.notdef /Aogonek /breve /Lslash /currency /Lquoteright /Sacute /section
+%
+/dieresis /Scaron /Scedilla /Tcaron /Zacute /.notdef /Zcaron /Zdotaccent
+%
+/ring /aogonek /cedilla /lslash /acute /lquoteright /sacute /caron
+%
+/agrave /scaron /scedilla /tquoteright /zacute /hungarumlaut /zcaron
+/zdotaccent
+%
+/Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla
+%
+/Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron
+%
+/Eth /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis
+/multiply
+%
+/Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Togonek
+/germandbls
+%
+/racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla
+%
+/ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex
+/dquoteright
+%
+/eth /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide
+%
+/rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /quotedblbase
+/quotedblleft
+%
+] def
+
+
+
+
+
+
+
diff --git a/obsolete/support/pdftexenc/cstextf.enc b/obsolete/support/pdftexenc/cstextf.enc
new file mode 100644
index 0000000000..7f24868d8e
--- /dev/null
+++ b/obsolete/support/pdftexenc/cstextf.enc
@@ -0,0 +1,80 @@
+% CSTeX text without f-ligatures
+%
+/CSTeXTextWithoutLigEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
+/quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /less /equal /greater /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%
+/ellipsis /dagger /daggerdbl /bullet /sterling /paragraph /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /perthousand /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/Agrave /.notdef /.notdef /.notdef /hyphen /ogonek /guillemotleft
+/guillemotright
+%
+/.notdef /Aogonek /breve /Lslash /currency /Lquoteright /Sacute /section
+%
+/dieresis /Scaron /Scedilla /Tcaron /Zacute /.notdef /Zcaron /Zdotaccent
+%
+/ring /aogonek /cedilla /lslash /acute /lquoteright /sacute /caron
+%
+/agrave /scaron /scedilla /tquoteright /zacute /hungarumlaut /zcaron
+/zdotaccent
+%
+/Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla
+%
+/Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron
+%
+/Eth /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis
+/multiply
+%
+/Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Togonek
+/germandbls
+%
+/racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla
+%
+/ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex
+/dquoteright
+%
+/eth /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide
+%
+/rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /quotedblbase
+/quotedblleft
+%
+] def
+
+
+
+
diff --git a/obsolete/support/pdftexenc/csttext.enc b/obsolete/support/pdftexenc/csttext.enc
new file mode 100644
index 0000000000..e5c9b638fc
--- /dev/null
+++ b/obsolete/support/pdftexenc/csttext.enc
@@ -0,0 +1,81 @@
+% CSTeX typewriter text
+%
+/CSTeXTypewriterTextEncoding [
+%
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
+%
+/Phi /Psi /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+%
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+%
+/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%
+/visiblespace /exclam /quotedbl /numbersign /dollar /percent /ampersand
+/quoteright
+%
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%
+/zero /one /two /three /four /five /six /seven
+%
+/eight /nine /colon /semicolon /less /equal /greater /question
+%
+/at /A /B /C /D /E /F /G
+%
+/H /I /J /K /L /M /N /O
+%
+/P /Q /R /S /T /U /V /W
+%
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+%
+/quoteleft /a /b /c /d /e /f /g
+%
+/h /i /j /k /l /m /n /o
+%
+/p /q /r /s /t /u /v /w
+%
+/x /y /z /braceleft /bar /braceright /asciitilde /dieresis
+%
+/ellipsis /dagger /daggerdbl /bullet /sterling /paragraph /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /perthousand /.notdef /.notdef
+%
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%
+/Agrave /.notdef /.notdef /.notdef /hyphen /ogonek /guillemotleft
+/guillemotright
+%
+/.notdef /Aogonek /breve /Lslash /currency /Lquoteright /Sacute /section
+%
+/dieresis /Scaron /Scedilla /Tcaron /Zacute /.notdef /Zcaron /Zdotaccent
+%
+/ring /aogonek /cedilla /lslash /acute /lquoteright /sacute /caron
+%
+/agrave /scaron /scedilla /tquoteright /zacute /hungarumlaut /zcaron
+/zdotaccent
+%
+/Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla
+%
+/Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron
+%
+/Eth /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis
+/multiply
+%
+/Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Togonek
+/germandbls
+%
+/racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla
+%
+/ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex
+/dquoteright
+%
+/eth /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide
+%
+/rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /quotedblbase
+/quotedblleft
+%
+] def
+
+
+
+
+
diff --git a/obsolete/support/pdftexenc/euex.enc b/obsolete/support/pdftexenc/euex.enc
new file mode 100644
index 0000000000..1a0b73d975
--- /dev/null
+++ b/obsolete/support/pdftexenc/euex.enc
@@ -0,0 +1,260 @@
+%FontName euex
+euex-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/braceleftbig
+/bracerightbig
+/braceleftBig
+/bracerightBig
+/braceleftbigg
+/bracerightbigg
+/braceleftBigg
+/bracerightBigg
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/arrowlefttophalf
+/arrowleftbothalf
+/arrowrighttophalf
+/arrowrightbothalf
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/arrowleft
+/arrowright
+/arrowup
+/arrowdown
+/arrowboth
+/arrownortheast
+/arrowsoutheast
+/.notdef
+/arrowdblleft
+/arrowdblright
+/arrowdblup
+/arrowdbldown
+/arrowdblboth
+/arrownorthwest
+/arrowsouthwest
+/.notdef
+/.notdef
+/infinity
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/bracelefttp
+/bracerighttp
+/braceleftbt
+/bracerightbt
+/braceleftmid
+/bracerightmid
+/braceex
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/contintegraltext
+/contintegraldisplay
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/summationtext
+/producttext
+/integraltext
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/summationdisplay
+/productdisplay
+/integraldisplay
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/coproducttext
+/coproductdisplay
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/arrowbothv
+/arrowdblbothv
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/bracehtipdownleft
+/bracehtipdownright
+/bracehtipupleft
+/bracehtipupright
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/hardspace
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/braceleftbig
+/bracerightbig
+/.notdef
+/.notdef
+/braceleftBig
+/bracerightBig
+/braceleftbigg
+/bracerightbigg
+/braceleftBigg
+/bracerightBigg
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/arrowlefttophalf
+/arrowleftbothalf
+/arrowrighttophalf
+/arrowrightbothalf
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/arrowleft
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/eufb.enc b/obsolete/support/pdftexenc/eufb.enc
new file mode 100644
index 0000000000..a4ac9bec01
--- /dev/null
+++ b/obsolete/support/pdftexenc/eufb.enc
@@ -0,0 +1,260 @@
+%FontName eufb
+eufb-Enc [
+/.notdef
+/dalt
+/fnos
+/falt
+/galt
+/kalt
+/talt
+/.notdef
+/Yalt
+/Zalt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/quoteleft
+/quoteright
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/exclam
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ampersand
+/quotesingle
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/minus
+/period
+/slash
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/.notdef
+/equal
+/.notdef
+/question
+/.notdef
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+/X
+/Y
+/Z
+/bracketleft
+/.notdef
+/bracketright
+/asciicircum
+/.notdef
+/.notdef
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+/x
+/y
+/z
+/.notdef
+/.notdef
+/quotedbl
+/.notdef
+/onealt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/hardspace
+/.notdef
+/dalt
+/fnos
+/falt
+/galt
+/kalt
+/talt
+/.notdef
+/Yalt
+/Zalt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/quoteleft
+/quoteright
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/onealt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/eufm.enc b/obsolete/support/pdftexenc/eufm.enc
new file mode 100644
index 0000000000..281412c293
--- /dev/null
+++ b/obsolete/support/pdftexenc/eufm.enc
@@ -0,0 +1,260 @@
+%FontName eufm
+eufm-Enc [
+/dadv
+/dalt
+/fnos
+/falt
+/galt
+/kalt
+/talt
+/ualt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/quoteleft
+/quoteright
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/exclam
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ampersand
+/quotesingle
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/minus
+/period
+/slash
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/.notdef
+/equal
+/.notdef
+/question
+/.notdef
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+/X
+/Y
+/Z
+/bracketleft
+/.notdef
+/bracketright
+/asciicircum
+/.notdef
+/.notdef
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+/x
+/y
+/z
+/.notdef
+/.notdef
+/quotedbl
+/.notdef
+/onealt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/hardspace
+/dadv
+/dalt
+/fnos
+/falt
+/galt
+/kalt
+/talt
+/ualt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/quoteleft
+/quoteright
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/onealt
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/eurm.enc b/obsolete/support/pdftexenc/eurm.enc
new file mode 100644
index 0000000000..55f5eb5b2f
--- /dev/null
+++ b/obsolete/support/pdftexenc/eurm.enc
@@ -0,0 +1,260 @@
+%FontName eurm
+eurm-Enc [
+/Gamma
+/Delta
+/Theta
+/Lambda
+/Xi
+/Pi
+/Sigma
+/Upsilon
+/Phi
+/Psi
+/Omega
+/alpha
+/beta
+/gamma
+/delta
+/epsilon1
+/zeta
+/eta
+/theta
+/iota
+/kappa
+/lambda
+/mu
+/nu
+/xi
+/pi
+/rho
+/sigma
+/tau
+/upsilon
+/phi
+/chi
+/psi
+/omega
+/epsilon
+/theta1
+/pi1
+/.notdef
+/.notdef
+/phi1
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/period
+/comma
+/less
+/slash
+/greater
+/.notdef
+/partialdiff
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+/X
+/Y
+/Z
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/lscript
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+/x
+/y
+/z
+/dotlessi
+/dotlessj
+/weierstrass
+/.notdef
+/ghost
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/hardspace
+/Gamma
+/Delta
+/Theta
+/Lambda
+/Xi
+/Pi
+/Sigma
+/Upsilon
+/Phi
+/Psi
+/.notdef
+/.notdef
+/Omega
+/alpha
+/beta
+/gamma
+/delta
+/epsilon1
+/zeta
+/eta
+/theta
+/iota
+/kappa
+/lambda
+/mu
+/nu
+/xi
+/pi
+/rho
+/sigma
+/tau
+/upsilon
+/phi
+/chi
+/psi
+/ghost
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/eusm.enc b/obsolete/support/pdftexenc/eusm.enc
new file mode 100644
index 0000000000..79af6522fb
--- /dev/null
+++ b/obsolete/support/pdftexenc/eusm.enc
@@ -0,0 +1,260 @@
+%FontName eusm
+eusm-Enc [
+/minus
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/similar
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/ghost
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/logicalnot
+/.notdef
+/Rfractur
+/Ifractur
+/.notdef
+/.notdef
+/aleph
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+/X
+/Y
+/Z
+/.notdef
+/.notdef
+/.notdef
+/logicaland
+/logicalor
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/braceleft
+/braceright
+/.notdef
+/.notdef
+/bar
+/.notdef
+/.notdef
+/.notdef
+/backslash
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/section
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/hardspace
+/minus
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/similar
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/isolatin1.enc b/obsolete/support/pdftexenc/isolatin1.enc
new file mode 100644
index 0000000000..e5c8d742ed
--- /dev/null
+++ b/obsolete/support/pdftexenc/isolatin1.enc
@@ -0,0 +1,54 @@
+% This is the ISO 8859-1 (Latin-1) encoding vector
+%
+/ISOLatin1Encoding [
+% 0x00
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x10
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x20
+ /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /minus /period /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+% 0x40
+ /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
+% 0x50
+ /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+ /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
+% 0x70
+ /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde
+ /.notdef
+% 0x80
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x90
+ /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
+ /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
+% 0xA0
+ /space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen
+ /registered /macron
+% 0xB0
+ /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph
+ /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright
+ /onequarter /onehalf /threequarters /questiondown
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex
+ /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+% 0xE0
+ /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex
+% 0xF0
+ /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis
+ /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn
+ /ydieresis
+] def
diff --git a/obsolete/support/pdftexenc/lasy.enc b/obsolete/support/pdftexenc/lasy.enc
new file mode 100644
index 0000000000..dbddc9870f
--- /dev/null
+++ b/obsolete/support/pdftexenc/lasy.enc
@@ -0,0 +1,258 @@
+%FontName lasy
+LASY-Enc [
+/.notdef
+/a1
+/a2
+/a3
+/a4
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/a40
+/a41
+/a42
+/a43
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/a48
+/a49
+/a50
+/a51
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/a58
+/a59
+/a60
+/a61
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
diff --git a/obsolete/support/pdftexenc/lcircle.enc b/obsolete/support/pdftexenc/lcircle.enc
new file mode 100644
index 0000000000..ab80ddfd4c
--- /dev/null
+++ b/obsolete/support/pdftexenc/lcircle.enc
@@ -0,0 +1,260 @@
+%% LCIRCLE10.enc
+%FontName LCIRCLE10
+LCIRCLE10-Enc [
+/a0
+/a1
+/a2
+/a3
+/a4
+/a5
+/a6
+/a7
+/a8
+/a9
+/a10
+/a11
+/a12
+/a13
+/a14
+/a15
+/a16
+/a17
+/a18
+/a19
+/a20
+/a21
+/a22
+/a23
+/a24
+/a25
+/a26
+/a27
+/a28
+/a29
+/a30
+/a31
+/a32
+/a33
+/a34
+/a35
+/a36
+/a37
+/a38
+/a39
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/a96
+/a97
+/a98
+/a99
+/a100
+/a101
+/a102
+/a103
+/a104
+/a105
+/a106
+/a107
+/a108
+/a109
+/a110
+/.notdef
+/a112
+/a113
+/a114
+/a115
+/a116
+/a117
+/a118
+/a119
+/a120
+/a121
+/a122
+/a123
+/a124
+/a125
+/a126
+/.notdef
+/a32
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/a0
+/a1
+/a2
+/a3
+/a4
+/a5
+/a6
+/a7
+/a8
+/a9
+/.notdef
+/.notdef
+/a10
+/a11
+/a12
+/a13
+/a14
+/a15
+/a16
+/a17
+/a18
+/a19
+/a20
+/a21
+/a22
+/a23
+/a24
+/a25
+/a26
+/a27
+/a28
+/a29
+/a30
+/a31
+/a32
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
diff --git a/obsolete/support/pdftexenc/line.enc b/obsolete/support/pdftexenc/line.enc
new file mode 100644
index 0000000000..a967024fc5
--- /dev/null
+++ b/obsolete/support/pdftexenc/line.enc
@@ -0,0 +1,261 @@
+%% LINE10.enc
+%FontName LINE10
+LINE10-Enc [
+/a0
+/a1
+/a2
+/a3
+/a4
+/a5
+/.notdef
+/.notdef
+/a8
+/a9
+/a10
+/a11
+/a12
+/a13
+/a14
+/a15
+/a16
+/a17
+/a18
+/a19
+/a20
+/a21
+/.notdef
+/a23
+/a24
+/a25
+/a26
+/a27
+/a28
+/a29
+/a30
+/.notdef
+/a32
+/a33
+/a34
+/a35
+/.notdef
+/a37
+/.notdef
+/.notdef
+/a40
+/a41
+/a42
+/a43
+/a44
+/a45
+/.notdef
+/a47
+/.notdef
+/a49
+/.notdef
+/a51
+/.notdef
+/.notdef
+/a54
+/a55
+/.notdef
+/a57
+/a58
+/.notdef
+/.notdef
+/a61
+/a62
+/a63
+/a64
+/a65
+/a66
+/a67
+/a68
+/a69
+/.notdef
+/.notdef
+/a72
+/a73
+/a74
+/a75
+/a76
+/a77
+/a78
+/a79
+/a80
+/a81
+/a82
+/a83
+/a84
+/a85
+/.notdef
+/a87
+/a88
+/a89
+/a90
+/.notdef
+/a92
+/a93
+/a94
+/.notdef
+/a96
+/a97
+/a98
+/a99
+/.notdef
+/a101
+/.notdef
+/.notdef
+/a104
+/a105
+/a106
+/a107
+/a108
+/.notdef
+/.notdef
+/a111
+/.notdef
+/a113
+/.notdef
+/a115
+/.notdef
+/.notdef
+/.notdef
+/a119
+/.notdef
+/a121
+/a122
+/.notdef
+/.notdef
+/a125
+/a126
+/.notdef
+/a32
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/a0
+/a1
+/a2
+/a3
+/a4
+/a5
+/.notdef
+/.notdef
+/a8
+/a9
+/.notdef
+/.notdef
+/a10
+/a11
+/a12
+/a13
+/a14
+/a15
+/a16
+/a17
+/a18
+/a19
+/a20
+/a21
+/.notdef
+/a23
+/a24
+/a25
+/a26
+/a27
+/a28
+/a29
+/a30
+/.notdef
+/a32
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/logo.enc b/obsolete/support/pdftexenc/logo.enc
new file mode 100644
index 0000000000..1350227e87
--- /dev/null
+++ b/obsolete/support/pdftexenc/logo.enc
@@ -0,0 +1,260 @@
+%FontName logo
+logo-Enc [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/A
+/.notdef
+/.notdef
+/.notdef
+/E
+/F
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/M
+/N
+/O
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/T
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/msam.enc b/obsolete/support/pdftexenc/msam.enc
new file mode 100644
index 0000000000..320aa7f8ac
--- /dev/null
+++ b/obsolete/support/pdftexenc/msam.enc
@@ -0,0 +1,260 @@
+%FontName msam
+msam-Enc [
+/squaredot
+/squareplus
+/squaremultiply
+/square
+/squaresolid
+/squaresmallsolid
+/diamond
+/diamondsolid
+/clockwise
+/anticlockwise
+/harpoonleftright
+/harpoonrightleft
+/squareminus
+/forces
+/forcesbar
+/satisfies
+/dblarrowheadright
+/dblarrowheadleft
+/dblarrowleft
+/dblarrowright
+/dblarrowup
+/dblarrowdwn
+/harpoonupright
+/harpoondownright
+/harpoonupleft
+/harpoondownleft
+/arrowtailright
+/arrowtailleft
+/arrowparrleftright
+/arrowparrrightleft
+/shiftleft
+/shiftright
+/squiggleright
+/squiggleleftright
+/curlyleft
+/curlyright
+/circleequal
+/followsorequal
+/greaterorsimilar
+/greaterorapproxeql
+/multimap
+/therefore
+/because
+/equalsdots
+/defines
+/precedesorequal
+/lessorsimilar
+/lessorapproxeql
+/equalorless
+/equalorgreater
+/equalorprecedes
+/equalorfollows
+/precedesorcurly
+/lessdblequal
+/lessorequalslant
+/lessorgreater
+/primereverse
+/axisshort
+/equaldotrightleft
+/equaldotleftright
+/followsorcurly
+/greaterdblequal
+/greaterorequalslant
+/greaterorless
+/squareimage
+/squareoriginal
+/triangleright
+/triangleleft
+/trianglerightequal
+/triangleleftequal
+/star
+/between
+/triangledownsld
+/trianglerightsld
+/triangleleftsld
+/arrowaxisright
+/arrowaxisleft
+/triangle
+/trianglesolid
+/triangleinv
+/ringinequal
+/lessequalgreater
+/greaterlessequal
+/lessdbleqlgreater
+/greaterdbleqlless
+/Yen
+/arrowtripleright
+/arrowtripleleft
+/check
+/orunderscore
+/nand
+/perpcorrespond
+/angle
+/measuredangle
+/sphericalangle
+/proportional
+/smile
+/frown
+/subsetdbl
+/supersetdbl
+/uniondbl
+/intersectiondbl
+/uprise
+/downfall
+/multiopenleft
+/multiopenright
+/subsetdblequal
+/supersetdblequal
+/difference
+/geomequivalent
+/muchless
+/muchgreater
+/rightanglenw
+/rightanglene
+/circleR
+/circleS
+/fork
+/dotplus
+/revsimilar
+/revasymptequal
+/rightanglesw
+/rightanglese
+/maltesecross
+/complement
+/intercal
+/circlering
+/circleasterisk
+/circleminus
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/hardspace
+/squaredot
+/squareplus
+/squaremultiply
+/square
+/squaresolid
+/squaresmallsolid
+/diamond
+/diamondsolid
+/clockwise
+/anticlockwise
+/.notdef
+/.notdef
+/harpoonleftright
+/harpoonrightleft
+/squareminus
+/forces
+/forcesbar
+/satisfies
+/dblarrowheadright
+/dblarrowheadleft
+/dblarrowleft
+/dblarrowright
+/dblarrowup
+/dblarrowdwn
+/harpoonupright
+/harpoondownright
+/harpoonupleft
+/harpoondownleft
+/arrowtailright
+/arrowtailleft
+/arrowparrleftright
+/arrowparrrightleft
+/shiftleft
+/shiftright
+/squiggleright
+/circleminus
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/msbm.enc b/obsolete/support/pdftexenc/msbm.enc
new file mode 100644
index 0000000000..c7e2519c58
--- /dev/null
+++ b/obsolete/support/pdftexenc/msbm.enc
@@ -0,0 +1,260 @@
+%FontName msbm
+msbm-Enc [
+/lessornotequal
+/greaterornotequal
+/notlessequal
+/notgreaterequal
+/notless
+/notgreater
+/notprecedes
+/notfollows
+/lessornotdbleql
+/greaterornotdbleql
+/notlessorslnteql
+/notgreaterorslnteql
+/lessnotequal
+/greaternotequal
+/notprecedesoreql
+/notfollowsoreql
+/precedeornoteqvlnt
+/followornoteqvlnt
+/lessornotsimilar
+/greaterornotsimilar
+/notlessdblequal
+/notgreaterdblequal
+/precedenotslnteql
+/follownotslnteql
+/precedenotdbleqv
+/follownotdbleqv
+/lessnotdblequal
+/greaternotdblequal
+/notsimilar
+/notapproxequal
+/upslope
+/downslope
+/notsubsetoreql
+/notsupersetoreql
+/notsubsetordbleql
+/notsupersetordbleql
+/subsetornotdbleql
+/supersetornotdbleql
+/subsetornoteql
+/supersetornoteql
+/subsetnoteql
+/supersetnoteql
+/notsubseteql
+/notsuperseteql
+/notparallel
+/notbar
+/notshortbar
+/notshortparallel
+/notturnstile
+/notforces
+/notsatisfies
+/notforcesextra
+/nottriangeqlright
+/nottriangeqlleft
+/nottriangleleft
+/nottriangleright
+/notarrowleft
+/notarrowright
+/notdblarrowleft
+/notdblarrowright
+/notdblarrowboth
+/notarrowboth
+/dividemultiply
+/emptyset
+/notexistential
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+/X
+/Y
+/Z
+/hatwide
+/hatwider
+/tildewide
+/tildewider
+/.notdef
+/Finv
+/Gmir
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/Omegainv
+/eth
+/equalorsimilar
+/beth
+/gimel
+/daleth
+/lessdot
+/greaterdot
+/multicloseleft
+/multicloseright
+/barshort
+/parallelshort
+/integerdivide
+/similar
+/approxequal
+/approxorequal
+/followsorequal
+/precedesorequal
+/archleftdown
+/archrightdown
+/Digamma
+/kappa
+/k
+/planckover2pi
+/planckover2pi1
+/epsiloninv
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/hardspace
+/lessornotequal
+/greaterornotequal
+/notlessequal
+/notgreaterequal
+/notless
+/notgreater
+/notprecedes
+/notfollows
+/lessornotdbleql
+/greaterornotdbleql
+/.notdef
+/.notdef
+/notlessorslnteql
+/notgreaterorslnteql
+/lessnotequal
+/greaternotequal
+/notprecedesoreql
+/notfollowsoreql
+/precedeornoteqvlnt
+/followornoteqvlnt
+/lessornotsimilar
+/greaterornotsimilar
+/notlessdblequal
+/notgreaterdblequal
+/precedenotslnteql
+/follownotslnteql
+/precedenotdbleqv
+/follownotdbleqv
+/lessnotdblequal
+/greaternotdblequal
+/notsimilar
+/notapproxequal
+/upslope
+/downslope
+/notsubsetoreql
+/epsiloninv
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/pdftex.map b/obsolete/support/pdftexenc/pdftex.map
new file mode 100644
index 0000000000..fc12c4eede
--- /dev/null
+++ b/obsolete/support/pdftexenc/pdftex.map
@@ -0,0 +1,678 @@
+bchb8r CharterBT-Bold 34 <bchb8a.pfb 8r.enc
+bchbi8r CharterBT-BoldItalic 98 <bchbi8a.pfb 8r.enc
+bchr8r CharterBT-Roman 34 <bchr8a.pfb 8r.enc
+bchri8r CharterBT-Italic 98 <bchri8a.pfb 8r.enc
+cmb10 CMB10 6 <cmb10.pfb cmtext.enc
+cmbsy10 CMBSY10 4 <cmbsy10.pfb cmtext.enc
+cmbsy6 cmbsy6 4 <cmbsy6.pfb cmsy.enc
+cmbsy7 cmbsy7 4 <cmbsy7.pfb cmsy.enc
+cmbsy8 cmbsy8 4 <cmbsy8.pfb cmsy.enc
+cmbsy9 cmbsy9 4 <cmbsy9.pfb cmsy.enc
+cmbx10 CMBX10 6 <cmbx10.pfb cmtext.enc
+cmbx12 CMBX12 6 <cmbx12.pfb cmtext.enc
+cmbx5 CMBX5 6 <cmbx5.pfb cmtext.enc
+cmbx6 CMBX6 6 <cmbx6.pfb cmtext.enc
+cmbx7 CMBX7 6 <cmbx7.pfb cmtext.enc
+cmbx8 CMBX8 6 <cmbx8.pfb cmtext.enc
+cmbx9 CMBX9 6 <cmbx9.pfb cmtext.enc
+cmbxsl10 CMBXSL10 70 <cmbxsl10.pfb cmtext.enc
+cmbxti10 CMBXTI10 70 <cmbxti10.pfb cmtextit.enc
+cmcsc10 CMCSC10 131078 <cmcsc10.pfb cmtext.enc
+cmcsc8 cmcsc8 4 <cmcsc8.pfb cmtext.enc
+cmcsc9 cmcsc9 4 <cmcsc9.pfb cmtext.enc
+cmdunh10 CMDUNH10 70 <cmdunh10.pfb cmtext.enc
+cmex10 CMEX10 4 <cmex10.pfb cmmex.enc
+cmex7 cmex7 4 <cmex7.pfb cmmex.enc
+cmex8 cmex8 4 <cmex8.pfb cmmex.enc
+cmex9 cmex9 4 <cmex9.pfb cmmex.enc
+cmff10 CMFF10 6 <cmff10.pfb cmtext.enc
+cmfi10 CMFI10 70 <cmfi10.pfb cmtext.enc
+cmfib8 CMFIB8 6 <cmfib8.pfb cmtext.enc
+cminch CMINCH 4 <cminch.pfb cmtext.enc
+cmitt10 CMITT10 71 <cmitt10.pfb cmtext.enc
+cmmi10 CMMI10 4 <cmmi10.pfb cmmi.enc
+cmmi12 CMMI12 4 <cmmi12.pfb cmmi.enc
+cmmi5 CMMI5 4 <cmmi5.pfb cmmi.enc
+cmmi6 CMMI6 4 <cmmi6.pfb cmmi.enc
+cmmi7 CMMI7 4 <cmmi7.pfb cmmi.enc
+cmmi8 CMMI8 4 <cmmi8.pfb cmmi.enc
+cmmi9 CMMI9 4 <cmmi9.pfb cmmi.enc
+cmmib10 CMMIB10 4 <cmmib10.pfb cmmi.enc
+cmmib6 cmmib6 4 <cmmib6.pfb cmmi.enc
+cmmib7 cmmib7 4 <cmmib7.pfb cmmi.enc
+cmmib8 cmmib8 4 <cmmib8.pfb cmmi.enc
+cmmib9 cmmib9 4 <cmmib9.pfb cmmi.enc
+cmr10 CMR10 4 <cmr10.pfb cmtext.enc
+cmr12 CMR12 4 <cmr12.pfb cmtext.enc
+cmr17 CMR17 4 <cmr17.pfb cmtext.enc
+cmr5 CMR5 6 <cmr5.pfb cmtext.enc
+cmr6 CMR6 6 <cmr6.pfb cmtext.enc
+cmr7 CMR7 6 <cmr7.pfb cmtext.enc
+cmr8 CMR8 6 <cmr8.pfb cmtext.enc
+cmr9 CMR9 6 <cmr9.pfb cmtext.enc
+cmsl10 CMSL10 70 <cmsl10.pfb cmtext.enc
+cmsl12 CMSL12 70 <cmsl12.pfb cmtext.enc
+cmsl8 CMSL8 70 <cmsl8.pfb cmtext.enc
+cmsl9 CMSL9 70 <cmsl9.pfb cmtext.enc
+cmsltt10 CMSLTT10 71 <cmsltt10.pfb cmtext.enc
+cmss10 CMSS10 68 <cmss10.pfb cmtext.enc
+cmss12 CMSS12 68 <cmss12.pfb cmtext.enc
+cmss17 CMSS17 68 <cmss17.pfb cmtext.enc
+cmss8 CMSS8 68 <cmss8.pfb cmtext.enc
+cmss9 CMSS9 68 <cmss9.pfb cmtext.enc
+cmssbx10 CMSSBX10 4 <cmssbx10.pfb cmtext.enc
+cmssdc10 CMSSDC10 4 <cmssdc10.pfb cmtext.enc
+cmssi10 CMSSI10 4 <cmssi10.pfb cmtext.enc
+cmssi12 CMSSI12 4 <cmssi12.pfb cmtext.enc
+cmssi17 CMSSI17 4 <cmssi17.pfb cmtext.enc
+cmssi8 CMSSI8 68 <cmssi8.pfb cmtext.enc
+cmssi9 CMSSI9 68 <cmssi9.pfb cmtext.enc
+cmssq8 CMSSQ8 4 <cmssq8.pfb cmtext.enc
+cmssqi8 CMSSQI8 68 <cmssqi8.pfb cmtext.enc
+cmsy10 CMSY10 4 <cmsy10.pfb cmsy.enc
+cmsy5 CMSY5 4 <cmsy5.pfb cmsy.enc
+cmsy6 CMSY6 4 <cmsy6.pfb cmsy.enc
+cmsy7 CMSY7 4 <cmsy7.pfb cmsy.enc
+cmsy8 CMSY8 4 <cmsy8.pfb cmsy.enc
+cmsy9 CMSY9 4 <cmsy9.pfb cmsy.enc
+cmtcsc10 CMTCSC10 131079 <cmtcsc10.pfb cmtext.enc
+cmtex10 CMTEX10 4 <cmtex10.pfb cmtext.enc
+cmtex8 CMTEX8 4 <cmtex8.pfb cmtext.enc
+cmtex9 CMTEX9 4 <cmtex9.pfb cmtext.enc
+cmti10 CMTI10 70 <cmti10.pfb cmtextit.enc
+cmti12 CMTI12 70 <cmti12.pfb cmtextit.enc
+cmti7 CMTI7 70 <cmti7.pfb cmtextit.enc
+cmti8 CMTI8 70 <cmti8.pfb cmtextit.enc
+cmti9 CMTI9 70 <cmti9.pfb cmtextit.enc
+cmtt10 CMTT10 7 <cmtt10.pfb cmttext.enc
+cmtt12 CMTT12 7 <cmtt12.pfb cmttext.enc
+cmtt8 CMTT8 7 <cmtt8.pfb cmttext.enc
+cmtt9 CMTT9 7 <cmtt9.pfb cmttext.enc
+cmu10 CMU10 6 <cmu10.pfb cmtext.enc
+cmvtt10 CMVTT10 6 <cmvtt10.pfb cmtext.enc
+euex10 euex10 4 <euex10.pfb euex.enc
+euex7 euex7 4 <euex7.pfb euex.enc
+euex8 euex8 4 <euex8.pfb euex.enc
+euex9 euex9 4 <euex9.pfb euex.enc
+eufb10 eufb10 4 <eufb10.pfb eufb.enc
+eufb10 eufb10 4 <eufb10.pfb eufm.enc
+eufb5 eufb5 4 <eufb5.pfb eufb.enc
+eufb5 eufb5 4 <eufb5.pfb eufm.enc
+eufb6 eufb6 4 <eufb6.pfb eufb.enc
+eufb6 eufb6 4 <eufb6.pfb eufm.enc
+eufb7 eufb7 4 <eufb7.pfb eufb.enc
+eufb7 eufb7 4 <eufb7.pfb eufm.enc
+eufb8 eufb8 4 <eufb8.pfb eufb.enc
+eufb8 eufb8 4 <eufb8.pfb eufm.enc
+eufb9 eufb9 4 <eufb9.pfb eufb.enc
+eufb9 eufb9 4 <eufb9.pfb eufm.enc
+eufm10 eufm10 4 <eufm10.pfb eufm.enc
+eufm5 eufm5 4 <eufm5.pfb eufm.enc
+eufm6 eufm6 4 <eufm6.pfb eufm.enc
+eufm7 eufm7 4 <eufm7.pfb eufm.enc
+eufm8 eufm8 4 <eufm8.pfb eufm.enc
+eufm9 eufm9 4 <eufm9.pfb eufm.enc
+eurb10 eurb10 4 <eurb10.pfb eurm.enc
+eurb5 eurb5 4 <eurb5.pfb eurm.enc
+eurb6 eurb6 4 <eurb6.pfb eurm.enc
+eurb7 eurb7 4 <eurb7.pfb eurm.enc
+eurb8 eurb8 4 <eurb8.pfb eurm.enc
+eurb9 eurb9 4 <eurb9.pfb eurm.enc
+eurm10 eurm10 4 <eurm10.pfb eurm.enc
+eurm5 eurm5 4 <eurm5.pfb eurm.enc
+eurm6 eurm6 4 <eurm6.pfb eurm.enc
+eurm7 eurm7 4 <eurm7.pfb eurm.enc
+eurm8 eurm8 4 <eurm8.pfb eurm.enc
+eurm9 eurm9 4 <eurm9.pfb eurm.enc
+eusb10 eusb10 4 <eusb10.pfb eusm.enc
+eusb5 eusb5 4 <eusb5.pfb eusm.enc
+eusb6 eusb6 4 <eusb6.pfb eusm.enc
+eusb7 eusb7 4 <eusb7.pfb eusm.enc
+eusb8 eusb8 4 <eusb8.pfb eusm.enc
+eusb9 eusb9 4 <eusb9.pfb eusm.enc
+eusm10 eusm10 4 <eusm10.pfb eusm.enc
+eusm5 eusm5 4 <eusm5.pfb eusm.enc
+eusm6 eusm6 4 <eusm6.pfb eusm.enc
+eusm7 eusm7 4 <eusm7.pfb eusm.enc
+eusm8 eusm8 4 <eusm8.pfb eusm.enc
+eusm9 eusm9 4 <eusm9.pfb eusm.enc
+hlcbot8r LucidaTypewriterBoldOblique 35 <hlcbot8a.pfb 8r.enc
+hlcbt8r LucidaTypewriterBold 35 <hlcbt8a.pfb 8r.enc
+hlcda LucidaNewMath-Arrows-Demi 4 <hlcda.pfb
+hlcdim LucidaNewMath-DemiItalic 4 <hlcdim.pfb
+hlcdima LucidaNewMath-AltDemiItalic 4 <hlcdima.pfb
+hlcdm LucidaNewMath-Demibold 4 <hlcdm.pfb
+hlcdy LucidaNewMath-Symbol-Demi 4 <hlcdy.pfb
+hlcra LucidaNewMath-Arrows 4 <hlcra.pfb
+hlcrf8r LucidaBlackletter 34 <hlcrf8a.pfb 8r.enc
+hlcrie8r LucidaCalligraphy-Italic 98 <hlcrie8a.pfb 8r.enc
+hlcrim LucidaNewMath-Italic 4 <hlcrim.pfb
+hlcrima LucidaNewMath-AltItalic 4 <hlcrima.pfb
+hlcrin8r LucidaCasual-Italic 98 <hlcrin8a.pfb 8r.enc
+hlcriw8r LucidaHandwriting-Italic 106 <hlcriw8a.pfb 8r.enc
+hlcrm LucidaNewMath-Roman 4 <hlcrm.pfb
+hlcrn8r LucidaCasual 34 <hlcrn8a.pfb 8r.enc
+hlcrot8r LucidaTypewriterOblique 35 <hlcrot8a.pfb 8r.enc
+hlcrt8r LucidaTypewriter 35 <hlcrt8a.pfb 8r.enc
+hlcrv LucidaNewMath-Extension 4 <hlcrv.pfb
+hlcry LucidaNewMath-Symbol 4 <hlcry.pfb
+hlhb8r LucidaBright-Demi 34 <hlhb8a.pfb 8r.enc
+hlhbc8r LucidaBrightSmallcaps-Demi 131106 <hlhbc8a.pfb 8r.enc
+hlhbi8r LucidaBright-DemiItalic 98 <hlhbi8a.pfb 8r.enc
+hlhr8r LucidaBright 34 <hlhr8a.pfb 8r.enc
+hlhrc8r LucidaBrightSmallcaps 131106 <hlhrc8a.pfb 8r.enc
+hlhri8r LucidaBright-Italic 98 <hlhri8a.pfb 8r.enc
+hlhro8r LucidaBright-Oblique 34 <hlhro8a.pfb 8r.enc
+hlsb8r LucidaSans-Bold 32 <hlsb8a.pfb 8r.enc
+hlsbi8r LucidaSans-BoldItalic 96 <hlsbi8a.pfb 8r.enc
+hlsbot8r LucidaSans-TypewriterBoldOblique 33 <hlsbot8a.pfb 8r.enc
+hlsbt8r LucidaSans-TypewriterBold 33 <hlsbt8a.pfb 8r.enc
+hlsd8r LucidaSans-Demi 32 <hlsd8a.pfb 8r.enc
+hlsdi8r LucidaSans-DemiItalic 96 <hlsdi8a.pfb 8r.enc
+hlsr8r LucidaSans 32 <hlsr8a.pfb 8r.enc
+hlsri8r LucidaSans-Italic 96 <hlsri8a.pfb 8r.enc
+hlsrot8r LucidaSans-TypewriterOblique 33 <hlsrot8a.pfb 8r.enc
+hlsrt8r LucidaSans-Typewriter 33 <hlsrt8a.pfb 8r.enc
+hlxd8r LucidaFax-Demi 34 <hlxd8a.pfb 8r.enc
+hlxdi8r LucidaFax-DemiItalic 98 <hlxdi8a.pfb 8r.enc
+hlxr8r LucidaFax 34 <hlxr8a.pfb 8r.enc
+hlxri8r LucidaFax-Italic 98 <hlxri8a.pfb 8r.enc
+lasy10 LASY10 4 <lasy10.pfb lasy.enc
+lasy5 LASY5 4 <lasy5.pfb lasy.enc
+lasy6 LASY6 4 <lasy6.pfb lasy.enc
+lasy7 LASY7 4 <lasy7.pfb lasy.enc
+lasy8 LASY8 4 <lasy8.pfb lasy.enc
+lasy9 LASY9 4 <lasy9.pfb lasy.enc
+lasyb10 LASYB10 4 <lasyb10.pfb lasy.enc
+lcircle1 LCIRCLE10 4 <lcircle1.pfb lcircle.enc
+lcircle10 LCIRCLE10 4 <lcircle10.pfb lcircle.enc
+lcirclew LCIRCLEW10 4 <lcirclew.pfb lcircle.enc
+lcirclew10 LCIRCLEW10 4 <lcirclew10.pfb lcircle.enc
+lcmss8 LCMSS8 4 <lcmss8.pfb line.enc
+lcmssb8 LCMSSB8 4 <lcmssb8.pfb line.enc
+lcmssi8 LCMSSI8 4 <lcmssi8.pfb line.enc
+line10 LINE10 4 <line10.pfb line.enc
+linew10 LINEW10 4 <linew10.pfb line.enc
+logo10 LOGO10 4 <logo10.pfb logo.enc
+logo8 LOGO8 4 <logo8.pfb logo.enc
+logo9 LOGO9 4 <logo9.pfb logo.enc
+logobf10 LOGOBF10 4 <logobf10.pfb logo.enc
+logosl10 LOGOSL10 4 <logosl10.pfb logo.enc
+ma1b8r ArialMT-Bold 4 <ma1b8a.pfb 8r.enc
+ma1bi8r ArialMT-BoldItalic 4 <ma1bi8a.pfb 8r.enc
+ma1bi8rn MArial-NarrowBoldItalic 4 <ma1bi8an.pfb 8r.enc
+ma1l8r ArialMT-Light 4 <ma1l8a.pfb 8r.enc
+ma1li8r ArialMT-LightItalic 4 <ma1li8a.pfb 8r.enc
+ma1m8r ArialMT-Medium 4 <ma1m8a.pfb 8r.enc
+ma1mi8r ArialMT-MediumItalic 4 <ma1mi8a.pfb 8r.enc
+ma1r8r ArialMT 4 <ma1r8a.pfb 8r.enc
+ma1ri8r ArialMT-Italic 4 <ma1ri8a.pfb 8r.enc
+ma1ri8rn MArial-NarrowItalic 4 <ma1ri8an.pfb 8r.enc
+ma1x8r ArialMT-ExtraBold 4 <ma1x8a.pfb 8r.enc
+ma1xi8r ArialMT-ExtraBoldItalic 4 <ma1xi8a.pfb 8r.enc
+ma2b8r AmasisMT-Bold 4 <ma2b8a.pfb 8r.enc
+ma2bi8r AmasisMT-BoldItalic 4 <ma2bi8a.pfb 8r.enc
+ma2l8r AmasisMT-Light 4 <ma2l8a.pfb 8r.enc
+ma2li8r AmasisMT-LightItalic 4 <ma2li8a.pfb 8r.enc
+ma2m8r AmasisMT-Medium 4 <ma2m8a.pfb 8r.enc
+ma2mi8r AmasisMT-MediumItalic 4 <ma2mi8a.pfb 8r.enc
+ma2r8r AmasisMT 4 <ma2r8a.pfb 8r.enc
+ma2ri8r AmasisMT-Italic 4 <ma2ri8a.pfb 8r.enc
+magd8r MAvantGardeGothicPS-Demi 4 <magd8a.pfb 8r.enc
+magdo8r MAvantGardeGothicPS-DemiObl 4 <magdo8a.pfb 8r.enc
+magk8r MAvantGardeGothicPS-Book 4 <magk8a.pfb 8r.enc
+magko8r MAvantGardeGothicPS-BookObl 4 <magko8a.pfb 8r.enc
+mahr8r AshleyScriptMT 4 <mahr8a.pfb 8r.enc
+maib8r MAbadi-Bold 4 <maib8a.pfb 8r.enc
+maibi8r MAbadi-BoldItalic 4 <maibi8a.pfb 8r.enc
+maii8r MAbadi-ExtraLight 4 <maii8a.pfb 8r.enc
+maiii8r MAbadi-ExtraLightItalic 4 <maiii8a.pfb 8r.enc
+mail8r MAbadi-Light 4 <mail8a.pfb 8r.enc
+maili8r MAbadi-LightItalic 4 <maili8a.pfb 8r.enc
+mair8r MAbadi 4 <mair8a.pfb 8r.enc
+mairi8r MAbadi-Italic 4 <mairi8a.pfb 8r.enc
+maix8r MAbadi-ExtraBold 4 <maix8a.pfb 8r.enc
+maixi8r MAbadi-ExtraBoldItalic 4 <maixi8a.pfb 8r.enc
+mall8r MAlbertus-Light 4 <mall8a.pfb 8r.enc
+malr8r MAlbertus 4 <malr8a.pfb 8r.enc
+malri8r MAlbertus-Italic 4 <malri8a.pfb 8r.enc
+mapr8r MApollo 4 <mapr8a.pfb 8r.enc
+mapri8r MApollo-Italic 4 <mapri8a.pfb 8r.enc
+maps8r MApollo-SemiBold 4 <maps8a.pfb 8r.enc
+mb1ri8r MBlado-Italic 4 <mb1ri8a.pfb 8r.enc
+mb2r8r BinnyOldStyleMT 4 <mb2r8a.pfb 8r.enc
+mb2ri8r BinnyOldStyleMT-Italic 4 <mb2ri8a.pfb 8r.enc
+mb3r8r MBraggadocio 4 <mb3r8a.pfb 8r.enc
+mbbb8r Bembo-Bold 4 <mbbb8a.pfb 8r.enc
+mbbb8x MBemboExpert-Bold 4 <mbbb8x.pfb
+mbbbi8r Bembo-BoldItalic 4 <mbbbi8a.pfb 8r.enc
+mbbr8r Bembo 4 <mbbr8a.pfb 8r.enc
+mbbr8x MBemboExpert 4 <mbbr8x.pfb
+mbbri8r Bembo-Italic 4 <mbbri8a.pfb 8r.enc
+mbbri8x MBemboExpert-Italic 4 <mbbri8x.pfb
+mbbs8r Bembo-Semibold 4 <mbbs8a.pfb 8r.enc
+mbbs8x MBemboExpert-SemiBold 4 <mbbs8x.pfb
+mbbsi8r Bembo-SemiboldItalic 4 <mbbsi8a.pfb 8r.enc
+mbbsi8x MBemboExpert-SemiBoldItalic 4 <mbbsi8x.pfb
+mbbx8r Bembo-ExtraBold 4 <mbbx8a.pfb 8r.enc
+mbbx8x MBemboExpert-ExtraBold 4 <mbbx8x.pfb
+mbbxi8r Bembo-ExtraBoldItalic 4 <mbbxi8a.pfb 8r.enc
+mbbxi8x MBemboExpert-ExtraBoldItalic 4 <mbbxi8x.pfb
+mbdb8r BodoniMT-Bold 4 <mbdb8a.pfb 8r.enc
+mbdbi8r BodoniMT-BoldItalic 4 <mbdbi8a.pfb 8r.enc
+mbdk8r MBodoni-Book 4 <mbdk8a.pfb 8r.enc
+mbdki8r MBodoni-BookItalic 4 <mbdki8a.pfb 8r.enc
+mbdr8r BodoniMT 4 <mbdr8a.pfb 8r.enc
+mbdri8r BodoniMT-Italic 4 <mbdri8a.pfb 8r.enc
+mbdu8r MBodoni-UltraBold 4 <mbdu8a.pfb 8r.enc
+mbdui8r MBodoni-UltraBoldItalic 4 <mbdui8a.pfb 8r.enc
+mbeb8r MBell-Bold 4 <mbeb8a.pfb 8r.enc
+mber8r MBell 4 <mber8a.pfb 8r.enc
+mberi8r MBell-Italic 4 <mberi8a.pfb 8r.enc
+mbes8r MBell-SemiBold 4 <mbes8a.pfb 8r.enc
+mbfr8r BiffoMT 4 <mbfr8a.pfb 8r.enc
+mbkd8r MBookmanPS-Demi 4 <mbkd8a.pfb 8r.enc
+mbkdi8r MBookmanPS-DemiItalic 4 <mbkdi8a.pfb 8r.enc
+mbkl8r MBookmanPS-Light 4 <mbkl8a.pfb 8r.enc
+mbkli8r MBookmanPS-LightItalic 4 <mbkli8a.pfb 8r.enc
+mbvb8r BaskervilleMT-Bold 4 <mbvb8a.pfb 8r.enc
+mbvb8x MBaskervilleExpert-Bold 4 <mbvb8x.pfb
+mbvbi8r BaskervilleMT-BoldItalic 4 <mbvbi8a.pfb 8r.enc
+mbvbi8x MBaskervilleExpert-BoldItalic 4 <mbvbi8x.pfb
+mbvr8r BaskervilleMT 4 <mbvr8a.pfb 8r.enc
+mbvr8x MBaskervilleExpert 4 <mbvr8x.pfb
+mbvri8r BaskervilleMT-Italic 4 <mbvri8a.pfb 8r.enc
+mbvri8x MBaskervilleExpert-Italic 4 <mbvri8x.pfb
+mbvs8r BaskervilleMT-SemiBold 4 <mbvs8a.pfb 8r.enc
+mbvs8x MBaskervilleExpert-SemiBold 4 <mbvs8x.pfb
+mbvsi8r BaskervilleMT-SemiBoldItalic 4 <mbvsi8a.pfb 8r.enc
+mbvsi8x MBaskervilleExpt-SemiBoldIta 4 <mbvsi8x.pfb
+mc1b8r CalistoMT-Bold 4 <mc1b8a.pfb 8r.enc
+mc1bi8r CalistoMT-BoldItalic 4 <mc1bi8a.pfb 8r.enc
+mc1r8r CalistoMT 4 <mc1r8a.pfb 8r.enc
+mc1ri8r CalistoMT-Italic 4 <mc1ri8a.pfb 8r.enc
+mc6b8r MClarion-Bold 4 <mc6b8a.pfb 8r.enc
+mc6r8r MClarion 4 <mc6r8a.pfb 8r.enc
+mc6ri8r MClarion-Italic 4 <mc6ri8a.pfb 8r.enc
+mc7b8r CompactaMT-Bold 4 <mc7b8a.pfb 8r.enc
+mc8b8r CalvertMT-Bold 4 <mc8b8a.pfb 8r.enc
+mc8l8r CalvertMT-Light 4 <mc8l8a.pfb 8r.enc
+mc8m8r CalvertMT-Medium 4 <mc8m8a.pfb 8r.enc
+mcdr8r MtClarendon 4 <mcdr8a.pfb 8r.enc
+mcfb8r ClearfaceMT-Bold 4 <mcfb8a.pfb 8r.enc
+mcrb8r MCourierPS-Bold 4 <mcrb8a.pfb 8r.enc
+mcrbi8r MCourierPS-BoldItalic 4 <mcrbi8a.pfb 8r.enc
+mcrr8r MCourierPS 4 <mcrr8a.pfb 8r.enc
+mcrri8r MCourierPS-Italic 4 <mcrri8a.pfb 8r.enc
+mcsb8r MCenturySchoolbook-Bold 4 <mcsb8a.pfb 8r.enc
+mcsbi8r MCenturySchoolbook-BoldItalic 4 <mcsbi8a.pfb 8r.enc
+mcsr8r MCenturySchoolbook 4 <mcsr8a.pfb 8r.enc
+mcsri8r MCenturySchoolbook-Italic 4 <mcsri8a.pfb 8r.enc
+mcub8r MCenturyOldStyle-Bold 4 <mcub8a.pfb 8r.enc
+mcubi8r MCenturyOldStyle-BoldItalic 4 <mcubi8a.pfb 8r.enc
+mcur8r MCenturyOldStyle 4 <mcur8a.pfb 8r.enc
+mcuri8r MCenturyOldStyle-Italic 4 <mcuri8a.pfb 8r.enc
+mdsr8r DorchesterScriptMT 4 <mdsr8a.pfb 8r.enc
+meer8r MEgyptianExtended 4 <meer8a.pfb 8r.enc
+melb8r MEllington-Bold 4 <melb8a.pfb 8r.enc
+melbi8r MEllington-BoldItalic 4 <melbi8a.pfb 8r.enc
+mell8r MEllington-Light 4 <mell8a.pfb 8r.enc
+melli8r MEllington-LightItalic 4 <melli8a.pfb 8r.enc
+melr8r MEllington 4 <melr8a.pfb 8r.enc
+melri8r MEllington-Italic 4 <melri8a.pfb 8r.enc
+melx8r MEllington-ExtraBold 4 <melx8a.pfb 8r.enc
+melxi8r MEllington-ExtraBoldItalic 4 <melxi8a.pfb 8r.enc
+metr8r EhrhardtMT 4 <metr8a.pfb 8r.enc
+metr8x MEhrhardtExpt 4 <metr8x.pfb
+metri8r EhrhardtMT-Italic 4 <metri8a.pfb 8r.enc
+metri8x MEhrhardtExpt-Italic 4 <metri8x.pfb
+mets8r EhrhardtMT-SemiBold 4 <mets8a.pfb 8r.enc
+mets8x MEhrhardtExpt-SemiBold 4 <mets8x.pfb
+metsi8r EhrhardtMT-SemiBoldItalic 4 <metsi8a.pfb 8r.enc
+metsi8x MEhrhardtExpt-SemiBoldItalic 4 <metsi8x.pfb
+mfer8r MForte 4 <mfer8a.pfb 8r.enc
+mfir8r MFigaro 4 <mfir8a.pfb 8r.enc
+mfsr8r MFalstaff 4 <mfsr8a.pfb 8r.enc
+mgab8r GillAltOneMT-Bold 4 <mgab8a.pfb 8r.enc
+mgabi8r GillAltOneMT-BoldItalic 4 <mgabi8a.pfb 8r.enc
+mgal8r GillAltOneMT-Light 4 <mgal8a.pfb 8r.enc
+mgali8r GillAltOneMT-LightItalic 4 <mgali8a.pfb 8r.enc
+mgar8r GillAltOneMT 4 <mgar8a.pfb 8r.enc
+mgari8r GillAltOneMT-Italic 4 <mgari8a.pfb 8r.enc
+mgmb8r GaramondMT-Bold 4 <mgmb8a.pfb 8r.enc
+mgmb8x MGaramondExpert-Bold 4 <mgmb8x.pfb
+mgmbi8r GaramondMT-BoldItalic 4 <mgmbi8a.pfb 8r.enc
+mgmbi8x MGaramondExpert-BoldItalic 4 <mgmbi8x.pfb
+mgmr8r GaramondMT 4 <mgmr8a.pfb 8r.enc
+mgmr8x MGaramondExpert 4 <mgmr8x.pfb
+mgmri8r GaramondMT-Italic 4 <mgmri8a.pfb 8r.enc
+mgmri8x MGaramondExpert-Italic 4 <mgmri8x.pfb
+mgqb8r MGrotesque-Bold 4 <mgqb8a.pfb 8r.enc
+mgql8r MGrotesque-Light 4 <mgql8a.pfb 8r.enc
+mgqli8r MGrotesque-LightItalic 4 <mgqli8a.pfb 8r.enc
+mgqr8r MGrotesque 4 <mgqr8a.pfb 8r.enc
+mgqri8r MGrotesque-Italic 4 <mgqri8a.pfb 8r.enc
+mgrb8r MGloucester-Bold 4 <mgrb8a.pfb 8r.enc
+mgrr8r MGloucester-OldStyle 4 <mgrr8a.pfb 8r.enc
+mgsb8r GillSans-Bold 4 <mgsb8a.pfb 8r.enc
+mgsbi8r GillSans-BoldItalic 4 <mgsbi8a.pfb 8r.enc
+mgsl8r GillSans-Light 4 <mgsl8a.pfb 8r.enc
+mgsli8r GillSans-LightItalic 4 <mgsli8a.pfb 8r.enc
+mgsr8r GillSans 4 <mgsr8a.pfb 8r.enc
+mgsri8r GillSans-Italic 4 <mgsri8a.pfb 8r.enc
+mgsu8r GillSans-UltraBold 4 <mgsu8a.pfb 8r.enc
+mgsx8r GillSans-ExtraBold 4 <mgsx8a.pfb 8r.enc
+mgtr8r MGoudyText 4 <mgtr8a.pfb 8r.enc
+mhdr8r MHeadlineBold 4 <mhdr8a.pfb 8r.enc
+mhob8r MHorleyOldStyle-Bold 4 <mhob8a.pfb 8r.enc
+mhobi8r MHorleyOldStyle-BoldItalic 4 <mhobi8a.pfb 8r.enc
+mhol8r MHorleyOldStyle-Light 4 <mhol8a.pfb 8r.enc
+mholi8r MHorleyOldStyle-LightItalic 4 <mholi8a.pfb 8r.enc
+mhor8r MHorleyOldStyle 4 <mhor8a.pfb 8r.enc
+mhori8r MHorleyOldStyle-Italic 4 <mhori8a.pfb 8r.enc
+mhos8r MHorleyOldStyle-SemiBold 4 <mhos8a.pfb 8r.enc
+mhosi8r MHorleyOldStyle-SemiBolItalic 4 <mhosi8a.pfb 8r.enc
+mifb8r MInflex-Bold 4 <mifb8a.pfb 8r.enc
+miib8r MImprint-Bold 4 <miib8a.pfb 8r.enc
+miibi8r MImprint-BoldItalic 4 <miibi8a.pfb 8r.enc
+miir8r MImprint 4 <miir8a.pfb 8r.enc
+miiri8r MImprint-Italic 4 <miiri8a.pfb 8r.enc
+miob8r MIonic-Bold 4 <miob8a.pfb 8r.enc
+mior8r MIonic 4 <mior8a.pfb 8r.enc
+miori8r MIonic-Italic 4 <miori8a.pfb 8r.enc
+misb8r MItalianOldStyle-Bold 4 <misb8a.pfb 8r.enc
+misbi8r MItalianOldStyle-BoldItalic 4 <misbi8a.pfb 8r.enc
+misr8r MItalianOldStyle 4 <misr8a.pfb 8r.enc
+misri8r MItalianOldStyle-Italic 4 <misri8a.pfb 8r.enc
+mjnb8r MJanson-Bold 4 <mjnb8a.pfb 8r.enc
+mjnbi8r MJanson-BoldItalic 4 <mjnbi8a.pfb 8r.enc
+mjnr8r MJanson 4 <mjnr8a.pfb 8r.enc
+mjnri8r MJanson-Italic 4 <mjnri8a.pfb 8r.enc
+mjob8r JoannaMT-Bold 4 <mjob8a.pfb 8r.enc
+mjobi8r JoannaMT-BoldItalic 4 <mjobi8a.pfb 8r.enc
+mjor8r JoannaMT 4 <mjor8a.pfb 8r.enc
+mjori8r JoannaMT-Italic 4 <mjori8a.pfb 8r.enc
+mjos8r JoannaMT-SemiBold 4 <mjos8a.pfb 8r.enc
+mjosi8r JoannaMT-SemiBoldItalic 4 <mjosi8a.pfb 8r.enc
+mjox8r JoannaMT-ExtraBold 4 <mjox8a.pfb 8r.enc
+mklr8r MKlang 4 <mklr8a.pfb 8r.enc
+mm1r8r MonolineScriptMT 4 <mm1r8a.pfb 8r.enc
+mmeb8r MercuriusScriptMT-Bold 4 <mmeb8a.pfb 8r.enc
+mmob8r MModern-Bold 4 <mmob8a.pfb 8r.enc
+mmobi8r MModern-BoldItalic 4 <mmobi8a.pfb 8r.enc
+mmor8r MModernExtended 4 <mmor8a.pfb 8r.enc
+mmori8r MModernExtended-Italic 4 <mmori8a.pfb 8r.enc
+mncb8r MCenturySchoolbookPS-Bold 4 <mncb8a.pfb 8r.enc
+mncbi8r MCenturySchoolbookPS-BoldIta 4 <mncbi8a.pfb 8r.enc
+mncr8r MCenturySchoolbookPS 4 <mncr8a.pfb 8r.enc
+mncri8r MCenturySchoolbookPS-Ita 4 <mncri8a.pfb 8r.enc
+mngb8r NewsGothicMT-Bold 4 <mngb8a.pfb 8r.enc
+mngr8r NewsGothicMT 4 <mngr8a.pfb 8r.enc
+mngri8r NewsGothicMT-Italic 4 <mngri8a.pfb 8r.enc
+mnib8r NimrodMT-Bold 4 <mnib8a.pfb 8r.enc
+mnibi8r NimrodMT-BoldItalic 4 <mnibi8a.pfb 8r.enc
+mnir8r NimrodMT 4 <mnir8a.pfb 8r.enc
+mniri8r NimrodMT-Italic 4 <mniri8a.pfb 8r.enc
+mnnb8r MNewClarendon-Bold 4 <mnnb8a.pfb 8r.enc
+mnnr8r MNewClarendon 4 <mnnr8a.pfb 8r.enc
+mnpb8r NewsPlantinMT-Bold 4 <mnpb8a.pfb 8r.enc
+mnpbi8r NewsPlantinMT-BoldItalic 4 <mnpbi8a.pfb 8r.enc
+mnpr8r NewsPlantinMT 4 <mnpr8a.pfb 8r.enc
+mnpri8r NewsPlantinMT-Italic 4 <mnpri8a.pfb 8r.enc
+mnrr8r NewBerolinaMT 4 <mnrr8a.pfb 8r.enc
+mnsb8r TimesNewRomanPS-Bold 4 <mnsb8a.pfb 8r.enc
+mnsbi8r TimesNewRomanPS-BoldItalic 4 <mnsbi8a.pfb 8r.enc
+mnsr8r TimesNewRomanPS 4 <mnsr8a.pfb 8r.enc
+mnsri8r TimesNewRomanPS-Italic 4 <mnsri8a.pfb 8r.enc
+mntb8r TimesNRMT-Bold 4 <mntb8a.pfb 8r.enc
+mntb8x MTimesNewRomanExpert-Bold 4 <mntb8x.pfb
+mntbi8r TimesNRMT-BoldItalic 4 <mntbi8a.pfb 8r.enc
+mntbi8x MTimesNewRomanExpt-BoldItalic 4 <mntbi8x.pfb
+mntboz MTimesNewRomanCyrillic-BolInc 4 <mntboz.pfb
+mntbz MTimesNewRomanCyrillic-Bold 4 <mntbz.pfb
+mntr8r TimesNRMT 4 <mntr8a.pfb 8r.enc
+mntr8x MTimesNewRomanExpert 4 <mntr8x.pfb
+mntri8r TimesNRMT-Italic 4 <mntri8a.pfb 8r.enc
+mntri8x MTimesNewRomanExpert-Italic 4 <mntri8x.pfb
+mntroz MTimesNewRomanCyrillic-Inc 4 <mntroz.pfb
+mntrz MTimesNewRomanCyrillic 4 <mntrz.pfb
+mnts8r TimesNRMT-SemiBold 4 <mnts8a.pfb 8r.enc
+mntsi8r TimesNRMT-SemiBoldItalic 4 <mntsi8a.pfb 8r.enc
+mntx8r TimesNRMT-ExtraBold 4 <mntx8a.pfb 8r.enc
+moer8r MOldEnglishText 4 <moer8a.pfb 8r.enc
+mosb8r MOldStyle-Bold 4 <mosb8a.pfb 8r.enc
+mosbi8r MOldStyle-BoldItalic 4 <mosbi8a.pfb 8r.enc
+mosr8r MOldStyle 4 <mosr8a.pfb 8r.enc
+mosri8r MOldStyle-Italic 4 <mosri8a.pfb 8r.enc
+motb8r CoronetMT-Bold 4 <motb8a.pfb 8r.enc
+movr8r OctavianMT 4 <movr8a.pfb 8r.enc
+movri8r OctavianMT-Italic 4 <movri8a.pfb 8r.enc
+moxr8r MOnyx 4 <moxr8a.pfb 8r.enc
+mp1r8r PalaceScriptMT 4 <mp1r8a.pfb 8r.enc
+mp2r8r PepitaMT 4 <mp2r8a.pfb 8r.enc
+mphb8r PhotinaMT-Bold 4 <mphb8a.pfb 8r.enc
+mphbi8r PhotinaMT-BoldItalic 4 <mphbi8a.pfb 8r.enc
+mphr8r PhotinaMT 4 <mphr8a.pfb 8r.enc
+mphri8r PhotinaMT-Italic 4 <mphri8a.pfb 8r.enc
+mphs8r MPhotina-SemiBold 4 <mphs8a.pfb 8r.enc
+mphsi8r MPhotina-SemiBoldItalic 4 <mphsi8a.pfb 8r.enc
+mphu8r MPhotina-UltraBold 4 <mphu8a.pfb 8r.enc
+mphui8r MPhotina-UltraBoldItalic 4 <mphui8a.pfb 8r.enc
+mppb8r Perpetua-Bold 4 <mppb8a.pfb 8r.enc
+mppb8x MPerpetuaExpert-Bold 4 <mppb8x.pfb
+mppbi8r Perpetua-BoldItalic 4 <mppbi8a.pfb 8r.enc
+mppr8r Perpetua 4 <mppr8a.pfb 8r.enc
+mppr8x MPerpetuaExpert 4 <mppr8x.pfb
+mppri8r Perpetua-Italic 4 <mppri8a.pfb 8r.enc
+mppri8x MPerpetuaExpert-Italic 4 <mppri8x.pfb
+mpzr8r MPoliphilus 4 <mpzr8a.pfb 8r.enc
+ms1r8r MScotchRoman 4 <ms1r8a.pfb 8r.enc
+ms1ri8r MScotchRoman-Italic 4 <ms1ri8a.pfb 8r.enc
+ms2b8r ScriptMT-Bold 4 <ms2b8a.pfb 8r.enc
+msam10 msam10 4 <msam10.pfb
+msam10 msam10 4 <msam10.pfb msam.enc
+msam5 msam5 4 <msam5.pfb
+msam5 msam5 4 <msam5.pfb msam.enc
+msam6 msam6 4 <msam6.pfb
+msam6 msam6 4 <msam6.pfb msam.enc
+msam7 msam7 4 <msam7.pfb
+msam7 msam7 4 <msam7.pfb msam.enc
+msam8 msam8 4 <msam8.pfb
+msam8 msam8 4 <msam8.pfb msam.enc
+msam9 msam9 4 <msam9.pfb
+msam9 msam9 4 <msam9.pfb msam.enc
+msbm10 msbm10 4 <msbm10.pfb
+msbm10 msbm10 4 <msbm10.pfb msbm.enc
+msbm5 msbm5 4 <msbm5.pfb
+msbm5 msbm5 4 <msbm5.pfb msbm.enc
+msbm6 msbm6 4 <msbm6.pfb
+msbm6 msbm6 4 <msbm6.pfb msbm.enc
+msbm7 msbm7 4 <msbm7.pfb
+msbm7 msbm7 4 <msbm7.pfb msbm.enc
+msbm8 msbm8 4 <msbm8.pfb
+msbm8 msbm8 4 <msbm8.pfb msbm.enc
+msbm9 msbm9 4 <msbm9.pfb
+msbm9 msbm9 4 <msbm9.pfb msbm.enc
+msbr8r MSabon 4 <msbr8a.pfb 8r.enc
+msbri8r MSabon-Italic 4 <msbri8a.pfb 8r.enc
+msbs8r MSabon-SemiBold 4 <msbs8a.pfb 8r.enc
+msmr8r MSpectrum 4 <msmr8a.pfb 8r.enc
+msmri8r MSpectrum-Italic 4 <msmri8a.pfb 8r.enc
+msms8r MSpectrum-SemiBold 4 <msms8a.pfb 8r.enc
+mswb8r SwingMT-Bold 4 <mswb8a.pfb 8r.enc
+msyr MSymbolPS 4 <msyr.pfb
+mtwb8r MTwentiethCentury-Bold 4 <mtwb8a.pfb 8r.enc
+mtwbi8r MTwentiethCentury-BoldItalic 4 <mtwbi8a.pfb 8r.enc
+mtwl8r MTwentiethCentury-Light 4 <mtwl8a.pfb 8r.enc
+mtwli8r MTwentiethCentury-LightItalic 4 <mtwli8a.pfb 8r.enc
+mtwm8r MTwentiethCentury-Medium 4 <mtwm8a.pfb 8r.enc
+mtwmi8r MTwentiethCentury-MediumItalic 4 <mtwmi8a.pfb 8r.enc
+mtws8r MTwentiethCentury-SemiBold 4 <mtws8a.pfb 8r.enc
+mtwu8r MTwentiethCentury-UltraBold 4 <mtwu8a.pfb 8r.enc
+mtwui8r MTwentiethCentury-UltraBoldItaic 4 <mtwui8a.pfb 8r.enc
+mtwx8r MTwentiethCentury-ExtraBold 4 <mtwx8a.pfb 8r.enc
+mtwxi8r MTwentiethCentury-ExtraBoldItalic 4 <mtwxi8a.pfb 8r.enc
+mtyr8r TypewriterMT 4 <mtyr8a.pfb 8r.enc
+murb8r CentaurMT-Bold 4 <murb8a.pfb 8r.enc
+murbi8r CentaurMT-BoldItalic 4 <murbi8a.pfb 8r.enc
+murr8r CentaurMT 4 <murr8a.pfb 8r.enc
+murri8r CentaurMT-Italic 4 <murri8a.pfb 8r.enc
+mvdr8r MVanDijck 4 <mvdr8a.pfb 8r.enc
+mwbm8r MWalbaum-Medium 4 <mwbm8a.pfb 8r.enc
+mwbmi8r MWalbaum-MediumItalic 4 <mwbmi8a.pfb 8r.enc
+mwbr8r MWalbaum 4 <mwbr8a.pfb 8r.enc
+mwbri8r MWalbaum-Italic 4 <mwbri8a.pfb 8r.enc
+mzab8r MZAntiqua-Bold 4 <mzab8a.pfb 8r.enc
+mzabi8r MZAntiqua-BoldItalic 4 <mzabi8a.pfb 8r.enc
+mzar8r MZAntiqua 4 <mzar8a.pfb 8r.enc
+mzari8r MZAntiqua-Italic 4 <mzari8a.pfb 8r.enc
+mzcb8r ZapfChancery-Bold 4 <mzcb8a.pfb 8r.enc
+mzcd8r ZapfChancery-Demi 4 <mzcd8a.pfb 8r.enc
+mzcmi8r MZapfChanceryPS-MediumItalic 4 <mzcmi8a.pfb 8r.enc
+mzdr MZapfDingbatsPS 4 <mzdr.pfb
+mztb8r ZeitgeistMT-Bold 4 <mztb8a.pfb 8r.enc
+mztb8x ZeitgeistExpertMT-Bold 4 <mztb8x.pfb
+mztr8r ZeitgeistMT 4 <mztr8a.pfb 8r.enc
+mztr8x ZeitgeistExpertMT 4 <mztr8x.pfb
+mztri8r ZeitgeistMT-Italic 4 <mztri8a.pfb 8r.enc
+mztri8x ZeitgeistExpertMT-Italic 4 <mztri8x.pfb
+padb8r AGaramond-Bold 4 <padb8a.pfb 8r.enc
+padb8x AGaramondExp-Bold 4 <padb8x.pfb
+padbi8r AGaramond-BoldItalic 4 <padbi8a.pfb 8r.enc
+padbi8x AGaramondExp-BoldItalic 4 <padbi8x.pfb
+padr8r AGaramond-Regular 4 <padr8a.pfb 8r.enc
+padr8x AGaramondExp-Regular 4 <padr8x.pfb
+padri8r AGaramond-Italic 4 <padri8a.pfb 8r.enc
+padri8x AGaramondExp-Italic 4 <padri8x.pfb
+pads8r AGaramond-Semibold 4 <pads8a.pfb 8r.enc
+pads8x AGaramondExp-Semibold 4 <pads8x.pfb
+padsi8r AGaramond-SemiboldItalic 4 <padsi8a.pfb 8r.enc
+padsi8x AGaramondExp-SemiboldItalic 4 <padsi8x.pfb
+pagd8r AvantGarde-Demi 32 <pagd8a.pfb 8r.enc
+pagdo8r AvantGarde-DemiOblique 32 <pagdo8a.pfb 8r.enc
+pagk8r AvantGarde-Book 32 <pagk8a.pfb 8r.enc
+pagko8r AvantGarde-BookOblique 32 <pagko8a.pfb 8r.enc
+pbbb8r MBembo-Bold 4 <pbbb8a.pfb 8r.enc
+pbbb8x MBemboExpert-Bold 4 <pbbb8x.pfb
+pbbbi8r MBembo-BoldItalic 4 <pbbbi8a.pfb 8r.enc
+pbbbi8x MBemboExpert-BoldItalic 4 <pbbbi8x.pfb
+pbbr8r MBembo 4 <pbbr8a.pfb 8r.enc
+pbbr8x MBemboExpert 4 <pbbr8x.pfb
+pbbri8r MBembo-Italic 4 <pbbri8a.pfb 8r.enc
+pbbri8x MBemboExpert-Italic 4 <pbbri8x.pfb
+pbkd8r Bookman-Demi 34 <pbkd8a.pfb 8r.enc
+pbkdi8r Bookman-DemiItalic 98 <pbkdi8a.pfb 8r.enc
+pbkl8r Bookman-Light 34 <pbkl8a.pfb 8r.enc
+pbkli8r Bookman-LightItalic 98 <pbkli8a.pfb 8r.enc
+pbvb8r BaskervilleBE-Medium 4 <pbvb8a.pfb 8r.enc
+pbvbi8r BaskervilleBE-MediumItalic 4 <pbvbi8a.pfb 8r.enc
+pbvr8r BaskervilleBE-Regular 4 <pbvr8a.pfb 8r.enc
+pbvri8r BaskervilleBE-Italic 4 <pbvri8a.pfb 8r.enc
+pcrb8r Courier-Bold 35 <pcrb8a.pfb 8r.enc
+pcrbo8r Courier-BoldOblique 35 <pcrbo8a.pfb 8r.enc
+pcrr8r Courier 35 <pcrr8a.pfb 8r.enc
+pcrro8r Courier-Oblique 35 <pcrro8a.pfb 8r.enc
+pgmb8r Garamond-Bold 4 <pgmb8a.pfb 8r.enc
+pgmbi8r Garamond-BoldItalic 4 <pgmbi8a.pfb 8r.enc
+pgml8r Garamond-Light 4 <pgml8a.pfb 8r.enc
+pgmli8r Garamond-LightItalic 4 <pgmli8a.pfb 8r.enc
+pgsb8r GillSans-Bold 4 <pgsb8a.pfb 8r.enc
+pgsbi8r GillSans-BoldItalic 4 <pgsbi8a.pfb 8r.enc
+pgsl8r GillSans-Light 4 <pgsl8a.pfb 8r.enc
+pgsli8r GillSans-LightItalic 4 <pgsli8a.pfb 8r.enc
+pgsr8r GillSans 4 <pgsr8a.pfb 8r.enc
+pgsri8r GillSans-Italic 4 <pgsri8a.pfb 8r.enc
+pgsu8r GillSans-UltraBold 4 <pgsu8a.pfb 8r.enc
+pgsx8r GillSans-ExtraBold 4 <pgsx8a.pfb 8r.enc
+phvb8r Helvetica-Bold 32 <phvb8a.pfb 8r.enc
+phvb8rn Helvetica-Narrow-Bold 32 <phvb8an.pfb 8r.enc
+phvbo8r Helvetica-BoldOblique 32 <phvbo8a.pfb 8r.enc
+phvbo8rn Helvetica-Narrow-BoldOblique 32 <phvbo8an.pfb 8r.enc
+phvr8r Helvetica 32 <phvr8a.pfb 8r.enc
+phvr8rn Helvetica-Narrow 32 <phvr8rn.pfb 8r.enc
+phvro8r Helvetica-Oblique 32 <phvro8a.pfb 8r.enc
+phvro8rn Helvetica-Narrow-Oblique 32 <phvro8an.pfb 8r.enc
+pnbb8r NewBaskerville-Bold 4 <pnbb8a.pfb 8r.enc
+pnbbi8r NewBaskerville-BoldItalic 4 <pnbbi8a.pfb 8r.enc
+pnbr8r NewBaskerville-Roman 4 <pnbr8a.pfb 8r.enc
+pnbri8r NewBaskerville-Italic 4 <pnbri8a.pfb 8r.enc
+pncb8r NewCenturySchlbk-Bold 34 <pncb8a.pfb 8r.enc
+pncbi8r NewCenturySchlbk-BoldItalic 98 <pncbi8a.pfb 8r.enc
+pncr8r NewCenturySchlbk-Roman 34 <pncr8a.pfb 8r.enc
+pncri8r NewCenturySchlbk-Italic 98 <pncri8a.pfb 8r.enc
+popb8r Optima-Bold 4 <popb8a.pfb 8r.enc
+popbo8r Optima-BoldOblique 4 <popbo8a.pfb 8r.enc
+popr8r Optima 4 <popr8a.pfb 8r.enc
+popro8r Optima-Oblique 4 <popro8a.pfb 8r.enc
+pplb8r Palatino-Bold 34 <pplb8a.pfb 8r.enc
+pplbi8r Palatino-BoldItalic 98 <pplbi8a.pfb 8r.enc
+pplr8r Palatino-Roman 34 <pplr8a.pfb 8r.enc
+pplri8r Palatino-Italic 98 <pplri8a.pfb 8r.enc
+psyr Symbol psyr.pfb 4
+ptmb8r Times-Bold 34 <ptmb8a.pfb 8r.enc
+ptmbi8r Times-BoldItalic 98 <ptmbi8a.pfb 8r.enc
+ptmr8r Times-Roman 34 <ptmr8a.pfb 8r.enc
+ptmri8r Times-Italic 98 <ptmri8a.pfb 8r.enc
+ptmro8r Times-Italic 98 <ptmri8a.pfb 8r.enc
+punb8r Univers-Bold 4 <punb8a.pfb 8r.enc
+punbo8r Univers-BoldOblique 4 <punbo8a.pfb 8r.enc
+punl8r Univers-Light 4 <punl8a.pfb 8r.enc
+punlo8r Univers-LightOblique 4 <punlo8a.pfb 8r.enc
+punr8r Univers 4 <punr8a.pfb 8r.enc
+punro8r Univers-Oblique 4 <punro8a.pfb 8r.enc
+purb8r CentaurMT-Bold 4 <purb8a.pfb 8r.enc
+purb8x CentaurMT-BoldExpert 4 <purb8x.pfb
+purbi8r CentaurMT-BoldItalic 4 <purbi8a.pfb 8r.enc
+purbi8x CentaurMT-BoldItalicExpert 4 <purbi8x.pfb
+purr8r CentaurMT 4 <purr8a.pfb 8r.enc
+purr8x CentaurMT-Expert 4 <purr8x.pfb
+purrc8r CentaurMT-SC 4 <purrc8a.pfb 8r.enc
+purri8r CentaurMT-Italic 4 <purri8a.pfb 8r.enc
+purri8x CentaurMT-ItalicExpert 4 <purri8x.pfb
+putb8r Utopia-Bold 4 <putb8a.pfb 8r.enc
+putbi8r Utopia-BoldItalic 4 <putbi8a.pfb 8r.enc
+putr8r Utopia-Regular 4 <putr8a.pfb 8r.enc
+putri8r Utopia-Italic 4 <putri8a.pfb 8r.enc
+pzcmi8r ZapfChancery-MediumItalic 4 pzcmi8a.pfb 8r.enc
+pzdr ZapfDingbats
+rarial ArialMT 4 <arial.ttf cmtext.enc
+rtimes Times 4 <times.ttf cmtext.enc
+uagd8r URWGothicL-Demi 4 <uagd8a.pfb 8r.enc
+uagdo8r URWGothicL-DemiObli 4 <uagdo8a.pfb 8r.enc
+uagk8r URWGothicL-Book 4 <uagk8a.pfb 8r.enc
+uagko8r URWGothicL-BookObli 4 <uagko8a.pfb 8r.enc
+ubkd8r URWBookmanL-DemiBold 4 <ubkd8a.pfb 8r.enc
+ubkdi8r URWBookmanL-DemiBoldItal 4 <ubkdi8a.pfb 8r.enc
+ubkl8r URWBookmanL-Ligh 4 <ubkl8a.pfb 8r.enc
+ubkli8r URWBookmanL-LighItal 4 <ubkli8a.pfb 8r.enc
+ucrb8r NimbusMonL-Bold 4 <ucrb8a.pfb 8r.enc
+ucrbo8r NimbusMonL-BoldObli 4 <ucrbo8a.pfb 8r.enc
+ucrr8r NimbusMonL-Regu 4 <ucrr8a.pfb 8r.enc
+ucrro8r NimbusMonL-ReguObli 4 <ucrro8a.pfb 8r.enc
+ugqb8r URWGroteskT-Bold 4 <ugqb8a.pfb 8r.enc
+uhvb8r NimbusSanL-Bold 4 <uhvb8a.pfb 8r.enc
+uhvbo8r NimbusSanL-BoldItal 4 <uhvbo8a.pfb 8r.enc
+uhvr8r NimbusSanL-Regu 4 <uhvr8a.pfb 8r.enc
+uhvro8r NimbusSanL-ReguItal 4 <uhvro8a.pfb 8r.enc
+uncb8r CenturySchL-Bold 4 <uncb8a.pfb 8r.enc
+uncbi8r CenturySchL-BoldItal 4 <uncbi8a.pfb 8r.enc
+uncr8r CenturySchL-Roma 4 <uncr8a.pfb 8r.enc
+uncri8r CenturySchL-Ital 4 <uncri8a.pfb 8r.enc
+uplb8r URWPalladioL-Bold 4 <uplb8a.pfb 8r.enc
+uplbi8r URWPalladioL-BoldItal 4 <uplbi8a.pfb 8r.enc
+uplr8r URWPalladioL-Roma 4 <uplr8a.pfb 8r.enc
+uplri8r URWPalladioL-Ital 4 <uplri8a.pfb 8r.enc
+usyr StandardSymL 4 <usyr.pfb
+utmb8r NimbusRomNo9L-Medi 4 <utmb8a.pfb 8r.enc
+utmbi8r NimbusRomNo9L-MediItal 4 <utmbi8a.pfb 8r.enc
+utmr8r NimbusRomNo9L-Regu 4 <utmr8a.pfb 8r.enc
+utmri8r NimbusRomNo9L-ReguItal 4 <utmri8a.pfb 8r.enc
+uzcmi8r URWChanceryL-MediItal 4 <uzcmi8a.pfb 8r.enc
+uzdr Dingbats 4 <uzdr.pfb
+xyatip10 XYATIP10 4 <<xyatip10.pfb xyatip.enc
+xybsql10 XYBSQL10 4 <<xybsql10.pfb xybsql10.enc
+xybtip10 XYBTIP10 4 <<xybtip10.pfb xyatip.enc
+xycirc10 XYCIRC10 4 <<xycirc10.pfb xycirc10.enc
+xycmat10 XYCMAT10 4 <<xycmat10.pfb xycm.enc
+xycmbt10 XYCMBT10 4 <<xycmbt10.pfb xycm.enc
+xydash10 XYDASH10 4 <<xydash10.pfb xydash10.enc
diff --git a/obsolete/support/pdftexenc/standard.enc b/obsolete/support/pdftexenc/standard.enc
new file mode 100644
index 0000000000..028ec4e4aa
--- /dev/null
+++ b/obsolete/support/pdftexenc/standard.enc
@@ -0,0 +1,52 @@
+% This is the Adobe standard encoding scheme
+%
+/StandardEncoding [
+% 0x00
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x10
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x20
+ /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /minus /period /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+% 0x40
+ /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
+% 0x50
+ /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+ /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
+% 0x70
+ /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde
+ /.notdef
+% 0x80
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x90
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xA0
+ /.notdef /exclamdown /cent /sterling /fraction /yen /florin /section
+ /currency /quotesingle /quotedblleft /guillemotleft /guilsinglleft
+ /guilsinglright /fi /fl
+% 0xB0
+ /.notdef /endash /dagger /daggerdbl /periodcentered /.notdef /paragraph
+ /bullet /quotesinglbase /quotedblbase /quotedblright /guillemotright
+ /ellipsis /perthousand /.notdef /questiondown
+% 0xC0
+ /.notdef /grave /acute /circumflex /tilde /macron /breve /dotaccent
+ /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
+% 0xD0
+ /emdash /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xE0
+ /.notdef /AE /.notdef /ordfeminine /.notdef /.notdef /.notdef /.notdef
+ /Lslash /Oslash /OE /ordmasculine /.notdef /.notdef /.notdef /.notdef
+% 0xF0
+ /.notdef /ae /.notdef /.notdef /.notdef /dotlessi /.notdef /.notdef
+ /lslash /oslash /oe /germandbls /.notdef /.notdef /.notdef /.notdef
+] def
diff --git a/obsolete/support/pdftexenc/symbol.enc b/obsolete/support/pdftexenc/symbol.enc
new file mode 100644
index 0000000000..40c97e08ef
--- /dev/null
+++ b/obsolete/support/pdftexenc/symbol.enc
@@ -0,0 +1,58 @@
+% Adobe Symbol encoding vector
+/SymbolEncoding [
+% 0x00
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x10
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x20
+ /space /exclam /universal /numbersign /existential /percent /ampersand
+ /suchthat /parenleft /parenright /mathasterisk /plus /comma /minus /period
+ /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven /eight /nine /colon
+ /semicolon /less /equal /greater /question
+% 0x40
+ /congruent /Alpha /Beta /Chi /Delta /Epsilon /Phi /Gamma /Eta /Iota /theta1
+ /Kappa /Lambda /Mu /Nu /Omicron
+% 0x50
+ /Pi /Theta /Rho /Sigma /Tau /Upsilon /sigma1 /Omega /Xi /Psi /Zeta
+ /bracketleft /therefore /bracketright /perpendicular /underscore
+% 0x60
+ /radicalex /alpha /beta /chi /delta /epsilon /phi /gamma /eta /iota /phi1
+ /kappa /lambda /mu /nu /omicron
+% 0x70
+ /pi /theta /rho /sigma /tau /upsilon /omega1 /omega /xi /psi /zeta
+ /braceleft /bar /braceright /similar /.notdef
+% 0x80
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0x90
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+% 0xA0
+ /.notdef /Upsilon1 /minute /lessequal /fraction /infinity /florin /club
+ /diamond /heart /spade /arrowboth /arrowleft /arrowup /arrowright /arrowdown
+% 0xB0
+ /degree /plusminus /second /greaterequal /multiply /proportional
+ /partialdiff /bullet /divide /notequal /equivalence /approxequal /ellipsis
+ /arrowvertex /arrowhorizex /carriagereturn
+% 0xC0
+ /aleph /Ifraktur /Rfraktur /weierstrass /circlemultiply /circleplus
+ /emptyset /intersection /union /propsuperset /reflexsuperset /notsubset
+ /propsubset /reflexsubset /element /notelement
+% 0xD0
+ /angle /gradient /registeredserif /copyrightserif /trademarkserif /product
+ /radical /dotmath /logicalnot /logicaland /logicalor /arrowdblboth
+ /arrowdblleft /arrowdblup /arrowdblright /arrowdbldown
+% 0xE0
+ /lozenge /angleleft /registeredsans /copyrightsans /trademarksans
+ /summation /parenlefttp /parenleftex /parenleftbt /bracketlefttp
+ /bracketleftex /bracketleftbt /bracelefttp /braceleftmid /braceleftbt
+ /braceex
+% 0xF0
+ /.notdef /angleright /integral /integraltp /integralex /integralbt
+ /parenrighttp /parenrightex /parenrightbt /bracketrighttp /bracketrightex
+ /bracketrightbt /bracerighttp /bracerightmid /bracerightbt /.notdef
+] def
diff --git a/obsolete/support/pdftexenc/xyatip.enc b/obsolete/support/pdftexenc/xyatip.enc
new file mode 100644
index 0000000000..f9637be36b
--- /dev/null
+++ b/obsolete/support/pdftexenc/xyatip.enc
@@ -0,0 +1,260 @@
+%FontName XYATIP10
+XYATIP10-Enc [
+/d0
+/d1
+/d2
+/d3
+/d4
+/d5
+/d6
+/d7
+/d8
+/d9
+/d10
+/d11
+/d12
+/d13
+/d14
+/d15
+/d16
+/d17
+/d18
+/d19
+/d20
+/d21
+/d22
+/d23
+/d24
+/d25
+/d26
+/d27
+/d28
+/d29
+/d30
+/d31
+/d32
+/d33
+/d34
+/d35
+/d36
+/d37
+/d38
+/d39
+/d40
+/d41
+/d42
+/d43
+/d44
+/d45
+/d46
+/d47
+/d48
+/d49
+/d50
+/d51
+/d52
+/d53
+/d54
+/d55
+/d56
+/d57
+/d58
+/d59
+/d60
+/d61
+/d62
+/d63
+/d64
+/d65
+/d66
+/d67
+/d68
+/d69
+/d70
+/d71
+/d72
+/d73
+/d74
+/d75
+/d76
+/d77
+/d78
+/d79
+/d80
+/d81
+/d82
+/d83
+/d84
+/d85
+/d86
+/d87
+/d88
+/d89
+/d90
+/d91
+/d92
+/d93
+/d94
+/d95
+/d96
+/d97
+/d98
+/d99
+/d100
+/d101
+/d102
+/d103
+/d104
+/d105
+/d106
+/d107
+/d108
+/d109
+/d110
+/d111
+/d112
+/d113
+/d114
+/d115
+/d116
+/d117
+/d118
+/d119
+/d120
+/d121
+/d122
+/d123
+/d124
+/d125
+/d126
+/d127
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/xybsql10.enc b/obsolete/support/pdftexenc/xybsql10.enc
new file mode 100644
index 0000000000..094507a427
--- /dev/null
+++ b/obsolete/support/pdftexenc/xybsql10.enc
@@ -0,0 +1,260 @@
+%FontName XYBSQL10
+XYBSQL10-Enc [
+/d0
+/d1
+/d2
+/d3
+/d4
+/d5
+/d6
+/d7
+/d8
+/d9
+/d10
+/d11
+/d12
+/d13
+/d14
+/d15
+/d16
+/d17
+/d18
+/d19
+/d20
+/d21
+/d22
+/d23
+/d24
+/d25
+/d26
+/d27
+/d28
+/d29
+/d30
+/d31
+/d32
+/d33
+/d34
+/d35
+/d36
+/d37
+/d38
+/d39
+/d40
+/d41
+/d42
+/d43
+/d44
+/d45
+/d46
+/d47
+/d48
+/d49
+/d50
+/d51
+/d52
+/d53
+/d54
+/d55
+/d56
+/d57
+/d58
+/d59
+/d60
+/d61
+/d62
+/d63
+/d64
+/d65
+/d66
+/d67
+/d68
+/d69
+/d70
+/d71
+/d72
+/d73
+/d74
+/d75
+/d76
+/d77
+/d78
+/d79
+/d80
+/d81
+/d82
+/d83
+/d84
+/d85
+/d86
+/d87
+/d88
+/d89
+/d90
+/d91
+/d92
+/d93
+/d94
+/d95
+/d96
+/d97
+/d98
+/d99
+/d100
+/d101
+/d102
+/d103
+/d104
+/d105
+/d106
+/d107
+/d108
+/d109
+/d110
+/d111
+/d112
+/d113
+/d114
+/d115
+/d116
+/d117
+/d118
+/d119
+/d120
+/d121
+/d122
+/d123
+/d124
+/d125
+/d126
+/d127
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/xycirc10.enc b/obsolete/support/pdftexenc/xycirc10.enc
new file mode 100644
index 0000000000..e96276faf5
--- /dev/null
+++ b/obsolete/support/pdftexenc/xycirc10.enc
@@ -0,0 +1,260 @@
+%FontName XYCIRC10
+XYCIRC10-Enc [
+/c0
+/c1
+/c2
+/c3
+/c4
+/c5
+/c6
+/c7
+/c8
+/c9
+/c10
+/c11
+/c12
+/c13
+/c14
+/c15
+/c16
+/c17
+/c18
+/c19
+/c20
+/c21
+/c22
+/c23
+/c24
+/c25
+/c26
+/c27
+/c28
+/c29
+/c30
+/c31
+/c32
+/c33
+/c34
+/c35
+/c36
+/c37
+/c38
+/c39
+/c40
+/c41
+/c42
+/c43
+/c44
+/c45
+/c46
+/c47
+/c48
+/c49
+/c50
+/c51
+/c52
+/c53
+/c54
+/c55
+/c56
+/c57
+/c58
+/c59
+/c60
+/c61
+/c62
+/c63
+/c64
+/c65
+/c66
+/c67
+/c68
+/c69
+/c70
+/c71
+/c72
+/c73
+/c74
+/c75
+/c76
+/c77
+/c78
+/c79
+/c80
+/c81
+/c82
+/c83
+/c84
+/c85
+/c86
+/c87
+/c88
+/c89
+/c90
+/c91
+/c92
+/c93
+/c94
+/c95
+/c96
+/c97
+/c98
+/c99
+/c100
+/c101
+/c102
+/c103
+/c104
+/c105
+/c106
+/c107
+/c108
+/c109
+/c110
+/c111
+/c112
+/c113
+/c114
+/c115
+/c116
+/c117
+/c118
+/c119
+/c120
+/c121
+/c122
+/c123
+/c124
+/c125
+/c126
+/c127
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/xycm.enc b/obsolete/support/pdftexenc/xycm.enc
new file mode 100644
index 0000000000..787e28f64d
--- /dev/null
+++ b/obsolete/support/pdftexenc/xycm.enc
@@ -0,0 +1,260 @@
+%FontName XYCMAT10
+XYCMAT10-Enc [
+/d0
+/d1
+/d2
+/d3
+/d4
+/d5
+/d6
+/d7
+/d8
+/d9
+/d10
+/d11
+/d12
+/d13
+/d14
+/d15
+/d16
+/d17
+/d18
+/d19
+/d20
+/d21
+/d22
+/d23
+/d24
+/d25
+/d26
+/d27
+/d28
+/d29
+/d30
+/d31
+/d32
+/d33
+/d34
+/d35
+/d36
+/d37
+/d38
+/d39
+/d40
+/d41
+/d42
+/d43
+/d44
+/d45
+/d46
+/d47
+/d48
+/d49
+/d50
+/d51
+/d52
+/d53
+/d54
+/d55
+/d56
+/d57
+/d58
+/d59
+/d60
+/d61
+/d62
+/d63
+/d64
+/d65
+/d66
+/d67
+/d68
+/d69
+/d70
+/d71
+/d72
+/d73
+/d74
+/d75
+/d76
+/d77
+/d78
+/d79
+/d80
+/d81
+/d82
+/d83
+/d84
+/d85
+/d86
+/d87
+/d88
+/d89
+/d90
+/d91
+/d92
+/d93
+/d94
+/d95
+/d96
+/d97
+/d98
+/d99
+/d100
+/d101
+/d102
+/d103
+/d104
+/d105
+/d106
+/d107
+/d108
+/d109
+/d110
+/d111
+/d112
+/d113
+/d114
+/d115
+/d116
+/d117
+/d118
+/d119
+/d120
+/d121
+/d122
+/d123
+/d124
+/d125
+/d126
+/d127
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/pdftexenc/xydash10.enc b/obsolete/support/pdftexenc/xydash10.enc
new file mode 100644
index 0000000000..2678e4ab66
--- /dev/null
+++ b/obsolete/support/pdftexenc/xydash10.enc
@@ -0,0 +1,260 @@
+%FontName XYDASH10
+XYDASH10-Enc [
+/a0
+/a1
+/a2
+/a3
+/a4
+/a5
+/a6
+/a7
+/a8
+/a9
+/a10
+/a11
+/a12
+/a13
+/a14
+/a15
+/a16
+/a17
+/a18
+/a19
+/a20
+/a21
+/a22
+/a23
+/a24
+/a25
+/a26
+/a27
+/a28
+/a29
+/a30
+/a31
+/a32
+/a33
+/a34
+/a35
+/a36
+/a37
+/a38
+/a39
+/a40
+/a41
+/a42
+/a43
+/a44
+/a45
+/a46
+/a47
+/a48
+/a49
+/a50
+/a51
+/a52
+/a53
+/a54
+/a55
+/a56
+/a57
+/a58
+/a59
+/a60
+/a61
+/a62
+/a63
+/a64
+/a65
+/a66
+/a67
+/a68
+/a69
+/a70
+/a71
+/a72
+/a73
+/a74
+/a75
+/a76
+/a77
+/a78
+/a79
+/a80
+/a81
+/a82
+/a83
+/a84
+/a85
+/a86
+/a87
+/a88
+/a89
+/a90
+/a91
+/a92
+/a93
+/a94
+/a95
+/a96
+/a97
+/a98
+/a99
+/a100
+/a101
+/a102
+/a103
+/a104
+/a105
+/a106
+/a107
+/a108
+/a109
+/a110
+/a111
+/a112
+/a113
+/a114
+/a115
+/a116
+/a117
+/a118
+/a119
+/a120
+/a121
+/a122
+/a123
+/a124
+/a125
+/a126
+/a127
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
+
diff --git a/obsolete/support/png2pdf/DOCU/ChooseDirectory.png b/obsolete/support/png2pdf/DOCU/ChooseDirectory.png
new file mode 100644
index 0000000000..5e4807c888
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ChooseDirectory.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/Exit.png b/obsolete/support/png2pdf/DOCU/Exit.png
new file mode 100644
index 0000000000..263cf525c2
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/Exit.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/HTML/capa01.png b/obsolete/support/png2pdf/DOCU/HTML/capa01.png
new file mode 100644
index 0000000000..112c96ebdb
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/capa01.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/HTML/capa02.png b/obsolete/support/png2pdf/DOCU/HTML/capa02.png
new file mode 100644
index 0000000000..5fa9ebf681
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/capa02.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/HTML/capa03.png b/obsolete/support/png2pdf/DOCU/HTML/capa03.png
new file mode 100644
index 0000000000..127ca91a6f
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/capa03.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/HTML/capa04.png b/obsolete/support/png2pdf/DOCU/HTML/capa04.png
new file mode 100644
index 0000000000..061afb3157
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/capa04.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/HTML/capa05.png b/obsolete/support/png2pdf/DOCU/HTML/capa05.png
new file mode 100644
index 0000000000..da9ffd11ed
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/capa05.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/HTML/capa06.png b/obsolete/support/png2pdf/DOCU/HTML/capa06.png
new file mode 100644
index 0000000000..c6c78b5992
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/capa06.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/HTML/old/index.html b/obsolete/support/png2pdf/DOCU/HTML/old/index.html
new file mode 100644
index 0000000000..d7ea552ce1
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/old/index.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+<title>png2pdf - A converter from PNG to PDF</title>
+</head>
+<body>
+<h1>png2pdf - PNG to PDF converter </h1>
+<h2>Overview</h2>
+<p>
+The png2pdf program converts PNG image files to PDF files.
+If the PNG file contains an alpha channel this can be used
+to mix against a specified background and/or to create a
+PDF image mask or PDF alpha channel data.<br>
+The program is intended for pdfLaTeX users who want to
+create posters/flyers having a colored background.
+</p>
+<address>
+<hr>
+<table width="100%">
+<tr>
+<td align="LEFT"><a href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause">D. Krause</a></td>
+<td align="RIGHT">Last modification: 2003/07/23</td>
+</tr>
+<tr>
+<td colspan="2" align="LEFT"><a href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/pages/software/index.html">http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/pages/software/png2pdf/index.html</a></td>
+</tr>
+</table>
+</address>
+</body>
+</html>
diff --git a/obsolete/support/png2pdf/DOCU/HTML/old/install.html b/obsolete/support/png2pdf/DOCU/HTML/old/install.html
new file mode 100644
index 0000000000..825ebdc0dd
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/old/install.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+<title>png2pdf - A converter from PNG to PDF</title>
+</head>
+<body>
+<h1>png2pdf - PNG to PDF converter </h1>
+<h2>Installation</h2>
+<h3>Installation on Unix/Linux</h3>
+You should install the packages in order of appearance:
+<ul>
+<li><b>zlib - Compression library</b> (required)<br>
+<a target="_top" href="http://www.gzip.org/zlib/">http://www.gzip.org/zlib/</a>
+</li>
+<li><b>libbz2 - Compression library</b> (recommended)<br>
+<a target="_top" href="http://sources.redhat.com/bzip2/">http://sources.redhat.com/bzip2/</a>
+</li>
+<li><b>dklibs - general purpose library</b> (required)<br>
+<a target="_top" href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/Download/dklibs.tgz">http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/Download/dklibs.tgz</a>
+</li>
+<li><b>libpng - PNG reference library</b> (required)<br>
+<a target="_top" href="http://www.libpng.org/pub/png/index.html">http://www.libpng.org/pub/png/index.html</a>
+</li>
+<li><b>png2pdf - PNG to PDF converter</b> (required)<br>
+<a target="_top" href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/Download/png2pdf.tgz">http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/Download/png2pdf.tgz</a>
+</li>
+</ul>
+For all these packages the usual
+<pre>
+ ./configure
+ make
+ make install
+</pre>
+should work.
+<h3>Installation on Windows</h3>
+I strongly recommend to use a binary, see the
+<a href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/pages/software/win32bin.html">Win32&nbsp;binary</a> page.<br>
+If you want to install from source you should plan for one day.
+<address>
+<hr>
+<table width="100%">
+<tr>
+<td align="LEFT"><a href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause">D. Krause</a></td>
+<td align="RIGHT">Last modification: 2003/07/23</td>
+</tr>
+<tr>
+<td colspan="2" align="LEFT"><a href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/pages/software/index.html">http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/pages/software/png2pdf/install.html</a></td>
+</tr>
+</table>
+</address>
+</body>
+</html>
diff --git a/obsolete/support/png2pdf/DOCU/HTML/old/usage.html b/obsolete/support/png2pdf/DOCU/HTML/old/usage.html
new file mode 100644
index 0000000000..e99928f563
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/old/usage.html
@@ -0,0 +1,304 @@
+<html>
+<head>
+<title>png2pdf - A converter from PNG to PDF</title>
+</head>
+<body>
+<h1>png2pdf - PNG to PDF converter</h1>
+<hr>
+<center><sup><a href="#p1"><font color="#FF0000">Help, version info and preferences</font></a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a href="#p2"><font color="#FF0000">Conversion options</font></a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a href="#p3"><font color="#FF0000">Examples</font></a></sup></center>
+<hr>
+<h2>Usage</h2>
+<h3>General usage</h3>
+<pre>
+ png2pdf [&lt;options&gt;] [ &lt;inputfile&gt; [ &lt;outputfile&gt; ] ]
+ png2pdf &lt;directory&gt;
+</pre>
+One can either specify input and output file name (stdin and
+stdout if there are no names) or a directory name.<br>
+When running on a directory, the directory is searched for PNG
+files, all PNG files (or all newer PNG files when using option -f)
+are converted into PDF files.
+<a name="p1"><h3>Help, version information and permanent option handling</h3></a>
+<h4>Overview</h4>
+As other dkapp-based applications too, png2pdf can save permanent
+options (preferences).<br>
+When the program is run permanent options are processed first,
+command line options specify changes relative to the permanent
+options.
+<h4>Getting help</h4>
+<pre>
+ png2pdf -h
+ png2pdf --help
+</pre>
+shows a help text.
+<h4>Getting version information</h4>
+<pre>
+ png2pdf -v
+ png2pdf --version
+</pre>
+shows version information.
+<h4>Setting permanent options</h4>
+Use
+<pre>
+ png2pdf -c <options>
+</pre>
+to set permanent options.<br>
+I.e.
+<pre>
+ png2pdf -c -p 1.4 -f
+ png2pdf --configure -p 1.4 -f
+</pre>
+tells the program you want to write PDF format 1.4 files. When running
+on a directory the program compares the modification times of PNG and
+PDF files, a conversion is only run if necessary.
+<h4>Showing permanent options</h4>
+Use
+<pre>
+ png2pdf -C
+ png2pdf --show-configuration
+</pre>
+to list the values of all permanent options.
+<h4>Temporarily overriding permanent options</h4>
+Use
+<pre>
+ png2pdf -r &lt;options&gt; ...
+ png2pdf --reset &lt;option&gt;
+</pre>
+to skip preferences processing for one program invokation.<br>
+The -r options must be the first command line argument. This
+option is recommended when using the programs in scripts.
+<h4>Removing all permanent options</h4>
+Use
+<pre>
+ png2pdf -u
+ png2pdf --unconfigure
+</pre>
+to remove all permanent options.
+<a name="p2"><h3>Conversion options</h3></a>
+<h4>PDF format level</h4>
+<pre>
+ -p &lt;level&gt;
+ --pdf=&lt;level&gt;
+</pre>
+sets the PDF format level to "1.2", "1.3" or "1.4"
+(without quotes of course).<br>
+Different PDF format levels enable different features:
+1.3 and above allow to create image masks, 1.4 allows alpha channel data.
+<h4>Mixing against a background color</h4>
+<pre>
+ -m &lt;r,g,b&gt;
+ --mix-background=&lt;r,g,b&gt;
+</pre>
+i.e.
+<pre>
+ -m 255,128,128
+</pre>
+defines to mix against a light red background. The background specified
+here is only used if the file does not contain a background chunk
+unless the -s option is used.<br>
+If mixing against a specified background was saved as permanent option
+<pre>
+ -m-
+</pre>
+turns this off.
+<h4>Overriding the background chunk</h4>
+<pre>
+ -s
+ --mix-specified
+</pre>
+can be used in conjunction with the -m option to override the background
+chunk.<br>
+If overriding the background chunk was saved as permanent option
+<pre>
+ -s-
+ --mix-specified=no
+</pre>
+turns this off
+<h4>Writing an image mask</h4>
+<pre>
+ -i
+ --image-mask
+</pre>
+converts the PNG alpha channel into a PDF image mask (if there is a PNG
+alpha channel).<br>
+If this option was saved as permanent option
+<pre>
+ -i-
+ --image-mask=no
+</pre>
+turns this off.
+<h4>Writing a PDF alpha channel</h4>
+<pre>
+ -a
+ --transparency
+</pre>
+converts the PNG alpha channel (if there is one) into a PDF alpha channel.<br>
+If this option was saved as permanent option
+<pre>
+ -a-
+ --transparency=no
+</pre>
+turns this off.
+<h4>Invert image mask levels</h4>
+When creating a PDF image mask only pixels having opacity 0 are masked
+out by default.<br>
+Using
+<pre>
+ -l
+ --invert-levels
+</pre>
+one can invert this behaviour, only pixels having full opacity are drawn,
+all others are masked out.
+If this option was saved as permanent option
+<pre>
+ -l-
+ --invert-levels=no
+</pre>
+turns this off.
+<h4>Alpha channel is transparency</h4>
+By default the alpha channel is assumed to contain opacity data.
+Using
+<pre>
+ -t
+ --alpha-transparency
+</pre>
+this is switched to transparency data.<br>
+If this option was saved as permanent option
+<pre>
+ -t-
+ --alpha-transparency=no
+</pre>
+turns this off.
+<h4>Modification time check when running on a directory</h4>
+When running on a directory the program converts every PNG file
+into a PDF file of same name, suffix .PDF.<br>
+Using
+<pre>
+ -f
+ --file-time-check
+</pre>
+one can prevent unnecessary conversions by comparing modification
+time stamps.<br>
+If this option was saved as permanent option
+<pre>
+ -f-
+ --file-time-check=no
+</pre>
+turns this off.
+<a name="p3"><h3>Examples</h3></a>
+<h4>Original image</h4>
+In these examples we use the image stefan_255_rgba.png from the
+PNG web site.<br>
+<img width="162" height="150" src="stefan_255_rgba.png"><br>
+This image contains a colored bird before a white background,
+a shadow of the bird is constructed using a black foreground
+and different alpha (opacity).
+<h4>Image processing</h4>
+The image is converted into a PDF file, i.e. by running
+<pre>
+ png2pdf -m 255,128,128 -s stefan_255_rgba.png x1.pdf
+</pre>
+The inclusion into the pdfLaTeX source looks like this:
+<pre>
+ \documentclass[12pt,a4paper,titlepage]{article}
+ \usepackage{ifpdf} % LaTeX or pdfLaTeX
+ \usepackage{color} % we want to use background color
+ \ifpdf
+ \usepackage{background} % for the background effects, PPower4 necessary
+ \fi
+ \definecolor{bgred}{rgb}{1.0,0.501961,0.501961}
+ ...
+ \begin{document}
+ ...
+ \begin{figure}
+ {\centering
+ \ifpdf
+ \includegraphics[width=5cm]{x1.pdf}
+ \else
+ \includegraphics[width=4cm]{x1.eps}
+ \fi
+ \caption{Some caption}
+ \label{fig:some-label}
+ }
+ \end{figure}
+ ...
+ \end{document}
+</pre>
+<h4>Simple inclusion of the original PNG file </h4>
+<img width="489" height="253" src="capa01.png"><br>
+If we simply include the PNG file using
+<pre>
+ \begin{figure}
+ {\centering
+ \includegraphics[width=5cm]{stefan_255_rgba.png}
+ \caption{Some caption}
+ \label{fig:some-label}
+ }
+ \end{figure}
+</pre>
+pdfLaTeX seems to ignore the alpha channel in the PNG file,
+it shows the black foreground without mixing.
+<h4>Mixing against white background</h4>
+<img width="489" height="253" src="capa02.png"><br>
+<pre>
+ png2pdf -m 255,255,255 -s stefan_255_rgba.png x1.pdf
+</pre>
+produces a picture as expected.
+<h4>Colored background</h4>
+<img width="489" height="253" src="capa03.png"><br>
+Now imagine we want to create a poster or flyer, we want
+to have a colored background.<br>
+Before the page containing the image starts we use
+<pre>
+ \pagecolor{bgred}
+</pre>
+in the LaTeX source<sup><a href="#note">1</a></sup> to
+create a light red background.<br>
+For the image conversion
+<pre>
+ png2pdf -m 255,128,128 -s stefan_255_rgba.png x1.pdf
+</pre>
+we specify the same background.
+<h4>Background effects</h4>
+<img width="490" height="253" src="capa04.png"><br>
+If we use this image on a page containing a background
+effect instead of a simple background color we have
+a visible background rectange.<br>
+We must create either an image mask or PDF alpha channel
+data to avoid this.
+<h4>PDF image mask</h4>
+<img width="489" height="253" src="capa05.png"><br>
+<pre>
+ png2pdf -m 255,128,128 -s -i stefan_255_rgba.png x1.pdf
+</pre>
+For this image this is closer to the result we want
+but it's not yet the best we can get.
+<h4>PDF alpha channel data</h4>
+<img width="489" height="253" src="capa06.png"><br>
+<pre>
+ png2pdf -m 255,128,128 -s -a stefan_255_rgba.png x1.pdf
+</pre>
+looks best.
+<hr>
+<table>
+<tr>
+<td valign="TOP"><a name="note"><sup>1</sup></a></td>
+<td>If you use pagecolor in the document or vpagecolor in pdfLaTeX you need
+to post-process the PDF file using PPower4.</td>
+</tr>
+</table>
+<address>
+<hr>
+<table width="100%">
+<tr>
+<td align="LEFT"><a href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause">D. Krause</a></td>
+<td align="RIGHT">Last modification: 2003/07/23</td>
+</tr>
+<tr>
+<td colspan="2" align="LEFT"><a href="http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/pages/software/index.html">http://www.e-technik.fh-schmalkalden.de/personen/dhp/krause/pages/software/png2pdf/usage.html</a></td>
+</tr>
+</table>
+</address>
+</body>
+</html>
+
diff --git a/obsolete/support/png2pdf/DOCU/HTML/stefan_255_rgba.png b/obsolete/support/png2pdf/DOCU/HTML/stefan_255_rgba.png
new file mode 100644
index 0000000000..e3b32af1e0
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/HTML/stefan_255_rgba.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/Options.png b/obsolete/support/png2pdf/DOCU/Options.png
new file mode 100644
index 0000000000..ab1a5082b2
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/Options.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/Run.png b/obsolete/support/png2pdf/DOCU/Run.png
new file mode 100644
index 0000000000..791a8fc3a6
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/Run.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/beamtest.nav b/obsolete/support/png2pdf/DOCU/beamtest.nav
new file mode 100644
index 0000000000..ed4addf142
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/beamtest.nav
@@ -0,0 +1,8 @@
+\beamer@endinputifotherversion {3.01pt}
+\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}
+\headcommand {\beamer@framepages {1}{1}}
+\headcommand {\beamer@partpages {1}{1}}
+\headcommand {\beamer@subsectionpages {1}{1}}
+\headcommand {\beamer@sectionpages {1}{1}}
+\headcommand {\beamer@documentpages {1}}
+\headcommand {\def \inserttotalframenumber {1}}
diff --git a/obsolete/support/png2pdf/DOCU/beamtest.pdf b/obsolete/support/png2pdf/DOCU/beamtest.pdf
new file mode 100644
index 0000000000..0de7586fea
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/beamtest.pdf
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/beamtest.snm b/obsolete/support/png2pdf/DOCU/beamtest.snm
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/beamtest.snm
diff --git a/obsolete/support/png2pdf/DOCU/beamtest.tex b/obsolete/support/png2pdf/DOCU/beamtest.tex
new file mode 100644
index 0000000000..1c9f2a3efc
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/beamtest.tex
@@ -0,0 +1,21 @@
+\documentclass{beamer}
+\mode<presentation>{\usetheme{Madrid}\setbeamercovered{transparent}}
+\usepackage[german]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{ifpdf}
+\usepackage{graphicx}
+\usepackage{color}
+\ifpdf
+\hypersetup{pdfpagemode=FullScreen}
+\fi
+\title[Beamer and png2pdf]{Using png2pdf with the beamer class}
+\author[Krause]{D.~Krause}
+\subject{png2pdf}
+\begin{document}
+\beamertemplateshadingbackground{yellow!50}{magenta!50}
+\begin{frame}
+\frametitle{Image over transient background}
+\includegraphics[width=5cm]{x4.pdf}
+\end{frame}
+\end{document}
diff --git a/obsolete/support/png2pdf/DOCU/capa01.png b/obsolete/support/png2pdf/DOCU/capa01.png
new file mode 100644
index 0000000000..112c96ebdb
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/capa01.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/capa02.png b/obsolete/support/png2pdf/DOCU/capa02.png
new file mode 100644
index 0000000000..5fa9ebf681
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/capa02.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/capa03.png b/obsolete/support/png2pdf/DOCU/capa03.png
new file mode 100644
index 0000000000..127ca91a6f
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/capa03.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/capa04.png b/obsolete/support/png2pdf/DOCU/capa04.png
new file mode 100644
index 0000000000..061afb3157
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/capa04.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/capa05.png b/obsolete/support/png2pdf/DOCU/capa05.png
new file mode 100644
index 0000000000..da9ffd11ed
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/capa05.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/capa06.png b/obsolete/support/png2pdf/DOCU/capa06.png
new file mode 100644
index 0000000000..c6c78b5992
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/capa06.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/changes.html b/obsolete/support/png2pdf/DOCU/changes.html
new file mode 100644
index 0000000000..4e15023f83
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/changes.html
@@ -0,0 +1,122 @@
+<html>
+<head>
+<title>png2pdf - Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft" rowspan="2"><img src="./png2pdf-logo.png"></td>
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Change&nbsp;Log</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+</td>
+</tr>
+</table>
+</p>
+</div>
+<div class="text">
+
+<table width="100%">
+<tr>
+<td class="h2tdleft"><h2>Change log</h2></td>
+<td class="h2tdright"><a class="smallotherlink" href="png2pdf.pdf">PDF manual "png2pdf.pdf" available</a></td>
+</tr>
+</table>
+The current version is 1.0.12.
+<ul>
+<li>1.0.12<br>
+A Java application Png2PdfGUI was added providing a graphical
+user interface to the png2pdf program.
+</li>
+<li>1.0.11<br>
+<ul>
+<li>Makefile correction.<br>
+We now use "-cp ..." instead of "cp ..." in Makefile.in, line 30.
+Previous versions of png2pdf only contained string tables and help
+texts for de and en. Now we also produce files for
+de.UTF-8 and en.UTF-8 in the utf-8 subdirectory. To install the
+default string tables we only want to copy the files in the en directory,
+not the subdirectories.
+</li>
+</ul>
+</li>
+<li>1.0.10<br>
+<ul>
+<li>Bugfix: The program did not return a correct exit status when
+producing transparency data or image mask. This is fixed now.
+</li>
+</ul>
+</li>
+<li>1.0.9<br>
+<ul>
+<li>Documentation update only.<br>
+The documentation now contains an example how to use png2pdf
+with the beamer class to place a partial transparent image
+over a color gradient background.
+</li>
+</ul>
+</li>
+<li>1.0.8<br>
+<ul>
+<li>License change: This project uses a BSD-style license now.
+</li>
+</ul>
+</li>
+<li>1.0.7<br>
+<ul>
+<li>Documentation, string tables and other platform-independent read-only files
+are installed into ${prefix}/shared instead of ${prefix}/lib used before.</li>
+<li>Configuration option --with-dklibs=DIR to specify directory where
+the dklibs library set resides.
+</li>
+</ul>
+</li>
+<li>1.0.6<br>
+Improved handling of invalid/corrupt PNG files.<br>
+Previous versions crashed/dumped core when processing invalid input files.
+This is fixed now.
+</li>
+<li>1.0.5<br>
+Added option "-n" ("--interpolation") for image interpolation.
+</li>
+<li>1.0.4<br>
+Makefile "makefile.msc" added for Visual C++.
+</li>
+<li>1.0.3<br>
+When opening files we check to not accidently open directories
+as files.
+</li>
+<li>1.0.2<br>
+Release after moving the project to SourceForge.net.
+</li>
+<li>1.0.1<br>
+First version released.
+</li>
+</ul>
+</div>
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2005/02/01</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
+
diff --git a/obsolete/support/png2pdf/DOCU/create-rectangle.png b/obsolete/support/png2pdf/DOCU/create-rectangle.png
new file mode 100644
index 0000000000..5b63c58736
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/create-rectangle.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/depgr.fig b/obsolete/support/png2pdf/DOCU/depgr.fig
new file mode 100644
index 0000000000..9c31e8307e
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/depgr.fig
@@ -0,0 +1,151 @@
+#FIG 3.2
+Portrait
+Center
+Metric
+A4
+100.0
+Single
+-2
+1200 2
+3 1 1 1 0 12 800 1 38 1.60 0 0 0 8
+ -1687 3656 -1800 3768 -1800 5962 -1687 6075
+ 8268 6075 8381 5962 8381 3712 8268 3600
+ 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
+3 1 1 1 0 18 800 1 38 1.60 0 0 0 8
+ -1687 843 -1800 956 -1800 3431 -1687 3543
+ 8268 3543 8381 3431 8325 956 8212 843
+ 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 6187 1068 7875 1068 7875 1462 6187 1462 6187 1068
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 6187 1968 7875 1968 7875 2362 6187 2362 6187 1968
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 6187 2981 7875 2981 7875 3375 6187 3375 6187 2981
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 3037 1968 4725 1968 4725 2362 3037 2362 3037 1968
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 3037 1068 4725 1068 4725 1462 3037 1462 3037 1068
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ -112 1968 1575 1968 1575 2362 -112 2362 -112 1968
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ -112 1068 1575 1068 1575 1462 -112 1462 -112 1068
+4 0 0 100 1 0 12.0 0.0 4 267.0 1350.0 0 1350 OpenSSL library\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 1516.0 0 2250 Net-SNMP library\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 300.0 3712 1350 zlib\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 1050.0 3375 2250 bzip2 library\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 1333.0 6412 1350 NetPBM library\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 1050.0 6525 2250 JPEG library\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 1000.0 6525 3262 PNG library\001
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 6187 4668 7875 4668 7875 5062 6187 5062 6187 4668
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 3037 3768 4725 3768 4725 4162 3037 4162 3037 3768
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 3037 4668 4725 4668 4725 5062 3037 5062 3037 4668
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ 3037 5568 4725 5568 4725 5962 3037 5962 3037 5568
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ -112 5568 1575 5568 1575 5962 -112 5962 -112 5568
+2 2 0 1 0 0 100 1 -1 1.00 0 0 0 0 0 5
+ -112 4668 1575 4668 1575 5062 -112 5062 -112 4668
+4 0 0 100 1 0 12.0 0.0 4 267.0 533.0 6750 4950 bmeps\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 450.0 3600 5850 genau\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 683.0 3487 4950 png2pdf\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 483.0 3600 4050 dklibs\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 266.0 450 5850 dkt\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 533.0 450 4950 yanolc\001
+4 0 0 100 1 2 12.0 0.0 4 267.0 633.0 -1573 5056 Krause\001
+4 0 0 100 1 2 12.0 0.0 4 267.0 417.0 -1574 4758 Dirk\001
+4 0 0 100 1 2 12.0 0.0 4 267.0 717.0 -1574 4460 made by\001
+4 0 0 100 1 2 12.0 0.0 4 267.0 783.0 -1575 4162 Software\001
+4 0 0 100 1 2 12.0 0.0 4 267.0 667.0 -1573 2244 authors\001
+4 0 0 100 1 2 12.0 0.0 4 267.0 467.0 -1574 1946 other\001
+4 0 0 100 1 2 12.0 0.0 4 267.0 200.0 -1574 1648 by\001
+4 0 0 100 1 2 12.0 0.0 4 267.0 783.0 -1575 1350 Software\001
+3 0 0 1 0 0 100 1 -1 0 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 4837 4837 5625 4500 5625 3150 6075 3150
+ 0.0000 1.0000 1.0000 0.0000
+3 0 0 1 0 0 100 1 -1 0 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 6075 3037 5625 3037 5625 1350 4837 1350
+ 0.0000 1.0000 1.0000 0.0000
+3 0 0 1 0 0 100 1 -1 0 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 6075 4612 5625 4275 5625 3656 6075 3318
+ 0.0000 1.0000 1.0000 0.0000
+3 0 0 1 0 0 100 1 -1 0 0 1 0 3
+ 1 1 1.0 144.00 240.00
+ 4837 4668 5175 4387 4837 4162
+ 0.0000 1.0000 0.0000
+3 0 0 1 0 0 100 1 -1 0 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 2925 5512 2700 5287 2700 4500 2925 4275
+ 0.0000 1.0000 1.0000 0.0000
+3 0 0 1 0 0 100 1 -1 0 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 1687 5512 1912 5287 1912 4275 2925 4162
+ 0.0000 1.0000 1.0000 0.0000
+3 0 0 1 0 0 100 1 -1 0 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 1687 4612 1912 4387 1912 3937 2925 3937
+ 0.0000 1.0000 1.0000 0.0000
+3 0 1 1 0 0 100 1 -1 6.40 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ -225 5512 -562 5287 -562 1743 -225 1518
+ 0.0000 1.0000 1.0000 0.0000
+3 0 1 1 0 0 100 1 -1 6.40 0 1 0 6
+ 1 1 1.0 144.00 240.00
+ 1687 2025 1912 1912 2025 1800 2025 1687
+ 1912 1575 1687 1462
+ 0.0000 1.0000 1.0000 1.0000 1.0000 0.0000
+3 0 1 1 0 0 100 1 -1 6.40 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 1575 4612 1800 4050 1800 2925 1575 2475
+ 0.0000 1.0000 1.0000 0.0000
+3 0 1 1 0 0 100 1 -1 6.40 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 4837 3712 5175 3375 5175 2812 4837 2475
+ 0.0000 1.0000 1.0000 0.0000
+3 0 1 1 0 0 100 1 -1 6.40 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 4837 3825 5400 3600 5400 1687 4837 1462
+ 0.0000 1.0000 1.0000 0.0000
+3 0 1 1 0 0 100 1 -1 6.40 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 7987 4612 8212 4387 8212 2700 7987 2475
+ 0.0000 1.0000 1.0000 0.0000
+3 0 1 1 0 0 100 1 -1 6.40 0 1 0 4
+ 1 1 1.0 144.00 240.00
+ 7987 4725 8437 4500 8437 1800 7987 1575
+ 0.0000 1.0000 1.0000 0.0000
+2 2 0 0 7 7 100 1 -1 0 0 0 0 0 0 5
+ -2137 731 8550 731 8550 6975 -2137 6975 -2137 731
+6 8437 6243 -2025 6862
+6 5062 6356 3150 6750
+2 2 0 1 0 0 100 1 -1 0 0 0 0 0 0 5
+ 3150 6356 3543 6356 3543 6750 3150 6750 3150 6356
+4 0 0 100 1 0 12.0 0.0 4 267.0 133.0 3262 6637 B\001
+2 2 0 1 0 0 100 1 -1 0 0 0 0 0 0 5
+ 4668 6356 5062 6356 5062 6750 4668 6750 4668 6356
+4 0 0 100 1 0 12.0 0.0 4 267.0 150.0 4781 6637 A\001
+2 1 1 1 0 0 100 1 -1 6.40 0 0 12 1 0 2
+ 1 1 1.0 144.00 240.00
+ 4556 6581 3656 6581
+-6
+4 0 0 100 1 0 12.0 0.0 4 267.0 2516.0 225 6637 A needs B (B is required for A)\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 3100.0 5175 6637 A can use B (B is recommended for A)\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 133.0 -1687 6637 B\001
+4 0 0 100 1 0 12.0 0.0 4 267.0 150.0 -169 6637 A\001
+2 2 0 1 0 0 100 1 -1 0 0 0 0 0 0 5
+ -281 6356 112 6356 112 6750 -281 6750 -281 6356
+2 2 0 1 0 0 100 1 -1 0 0 0 0 0 0 5
+ -1800 6356 -1406 6356 -1406 6750 -1800 6750 -1800 6356
+2 1 0 1 0 0 100 1 -1 0 0 0 12 1 0 2
+ 1 1 1.0 144.00 240.00
+ -393 6581 -1293 6581
+2 1 0 1 0 0 100 1 -1 0 0 0 12 0 0 2
+ 2925 6862 2925 6243
+2 2 0 1 0 0 100 1 -1 0 0 0 0 0 0 5
+ -2025 6243 8437 6243 8437 6862 -2025 6862 -2025 6243
+-6
diff --git a/obsolete/support/png2pdf/DOCU/depgr.mp b/obsolete/support/png2pdf/DOCU/depgr.mp
new file mode 100644
index 0000000000..a40dd2960c
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/depgr.mp
@@ -0,0 +1,1416 @@
+% produced by fig2vect
+prologues:=0;
+labeloffset:=0;bbmargin:=0;
+verbatimtex
+%&latex;
+\documentclass[12pt]{article}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage{mathptmx}
+\usepackage[scaled=.92]{helvet}
+\usepackage{courier}
+\begin{document}
+\newfont{\fntA}{ptmr at 12pt}
+\newfont{\fntB}{ptmb at 12pt}
+etex
+beginfig(0)
+% 10
+path p;
+p = (125.81,198.76)
+..controls(114.274,198.567) and(104.074,198.367)
+..(94.888,198.111)
+..controls(85.7018,197.854) and(77.5424,197.541)
+..(70.3091,197.122)
+..controls(63.0758,196.703) and(56.777,196.177)
+..(51.3746,195.501)
+..controls(45.9723,194.826) and(41.4711,194)
+..(37.7963,192.997)
+..controls(34.1216,191.994) and(31.2738,190.813)
+..(29.1002,189.444)
+..controls(26.9266,188.075) and(25.4245,186.519)
+..(24.3798,184.771)
+..controls(23.3351,183.022) and(22.7446,181.084)
+..(22.3785,178.933)
+..controls(22.0124,176.782) and(21.8695,174.422)
+..(21.74,171.78)
+..controls(21.6105,169.138) and(21.4964,166.202)
+..(21.3962,162.948)
+..controls(21.2961,159.693) and(21.2102,156.12)
+..(21.14,152.268)
+..controls(21.0697,148.417) and(21.0153,144.287)
+..(20.9786,139.992)
+..controls(20.942,135.697) and(20.9232,131.239)
+..(20.9232,126.779)
+..controls(20.9232,122.319) and(20.942,117.86)
+..(20.9786,113.565)
+..controls(21.0153,109.269) and(21.0697,105.139)
+..(21.14,101.287)
+..controls(21.2102,97.4348) and(21.2961,93.8606)
+..(21.3962,90.6055)
+..controls(21.4964,87.3505) and(21.6105,84.4134)
+..(21.74,81.77)
+..controls(21.8695,79.1266) and(22.0124,76.7653)
+..(22.3785,74.6143)
+..controls(22.7446,72.4632) and(23.3351,70.5252)
+..(24.3798,68.78)
+..controls(25.4245,67.0348) and(26.9266,65.4841)
+..(29.1002,64.1242)
+..controls(31.2738,62.7643) and(34.1216,61.5964)
+..(37.7963,60.6106)
+..controls(41.4711,59.6248) and(45.9723,58.8213)
+..(51.3746,58.173)
+..controls(56.777,57.5247) and(63.0758,57.0312)
+..(70.3091,56.6499)
+..controls(77.5424,56.2685) and(85.7018,55.9987)
+..(94.888,55.7915)
+..controls(104.074,55.5843) and(114.274,55.4395)
+..(125.81,55.31)
+..controls(137.346,55.1805) and(150.269,55.0664)
+..(164.668,54.9662)
+..controls(179.067,54.8661) and(194.948,54.7802)
+..(212.111,54.71)
+..controls(229.274,54.6397) and(247.717,54.5853)
+..(266.922,54.5486)
+..controls(286.126,54.512) and(306.079,54.4932)
+..(326.04,54.4932)
+..controls(346.001,54.4932) and(365.954,54.512)
+..(385.158,54.5486)
+..controls(404.363,54.5853) and(422.806,54.6397)
+..(439.969,54.71)
+..controls(457.132,54.7802) and(473.013,54.8661)
+..(487.412,54.9662)
+..controls(501.811,55.0664) and(514.734,55.1805)
+..(526.27,55.31)
+..controls(537.806,55.4395) and(548.006,55.5843)
+..(557.192,55.7926)
+..controls(566.378,56.001) and(574.538,56.2731)
+..(581.771,56.6592)
+..controls(589.004,57.0454) and(595.303,57.5462)
+..(600.705,58.2054)
+..controls(606.108,58.8647) and(610.609,59.683)
+..(614.284,60.6882)
+..controls(617.958,61.6935) and(620.806,62.8854)
+..(622.98,64.2744)
+..controls(625.153,65.6635) and(626.655,67.2484)
+..(627.7,69.0333)
+..controls(628.745,70.8181) and(629.335,72.8009)
+..(629.702,75.0028)
+..controls(630.068,77.2046) and(630.211,79.6224)
+..(630.34,82.33)
+..controls(630.469,85.0376) and(630.584,88.0467)
+..(630.684,91.3822)
+..controls(630.784,94.7176) and(630.87,98.3806)
+..(630.94,102.329)
+..controls(631.01,106.277) and(631.065,110.511)
+..(631.101,114.914)
+..controls(631.138,119.317) and(631.157,123.887)
+..(631.157,128.459)
+..controls(631.157,133.03) and(631.138,137.6)
+..(631.101,142.003)
+..controls(631.065,146.406) and(631.01,150.639)
+..(630.94,154.586)
+..controls(630.87,158.534) and(630.784,162.196)
+..(630.684,165.531)
+..controls(630.584,168.865) and(630.469,171.874)
+..(630.34,174.58)
+..controls(630.211,177.286) and(630.068,179.703)
+..(629.702,181.902)
+..controls(629.335,184.101) and(628.745,186.08)
+..(627.7,187.859)
+..controls(626.655,189.637) and(625.153,191.213)
+..(622.98,192.589)
+..controls(620.806,193.965) and(617.958,195.14)
+..(614.284,196.124)
+..controls(610.609,197.108) and(606.108,197.9)
+..(600.705,198.528)
+..controls(595.303,199.157) and(589.004,199.621)
+..(581.771,199.966)
+..controls(574.538,200.311) and(566.378,200.537)
+..(557.192,200.693)
+..controls(548.006,200.849) and(537.806,200.936)
+..(526.27,201)
+..controls(514.734,201.064) and(501.811,201.105)
+..(487.412,201.124)
+..controls(473.013,201.143) and(457.132,201.139)
+..(439.969,201.113)
+..controls(422.806,201.086) and(404.363,201.037)
+..(385.158,200.966)
+..controls(365.954,200.895) and(346.001,200.801)
+..(326.04,200.69)
+..controls(306.079,200.578) and(286.126,200.447)
+..(266.922,200.303)
+..controls(247.717,200.16) and(229.274,200.002)
+..(212.111,199.837)
+..controls(194.948,199.671) and(179.067,199.497)
+..(164.668,199.317)
+..controls(150.269,199.138) and(137.346,198.953)
+..cycle;
+fill p withcolor (0.9,0.956,0.9);
+% 14
+path p;
+p = (125.25,366.97)
+..controls(113.778,366.841) and(103.635,366.696)
+..(94.4995,366.483)
+..controls(85.364,366.27) and(77.2495,365.988)
+..(70.0559,365.583)
+..controls(62.8622,365.178) and(56.5976,364.648)
+..(51.2244,363.944)
+..controls(45.8512,363.241) and(41.3741,362.363)
+..(37.7187,361.28)
+..controls(34.0633,360.197) and(31.2303,358.908)
+..(29.0677,357.402)
+..controls(26.9052,355.896) and(25.4104,354.173)
+..(24.3704,352.229)
+..controls(23.3305,350.285) and(22.7423,348.122)
+..(22.3774,345.716)
+..controls(22.0124,343.31) and(21.8695,340.665)
+..(21.74,337.7)
+..controls(21.6105,334.735) and(21.4964,331.436)
+..(21.3962,327.777)
+..controls(21.2961,324.119) and(21.2102,320.099)
+..(21.14,315.765)
+..controls(21.0697,311.431) and(21.0153,306.782)
+..(20.9786,301.947)
+..controls(20.942,297.112) and(20.9232,292.093)
+..(20.9232,287.071)
+..controls(20.9232,282.05) and(20.942,277.031)
+..(20.9786,272.196)
+..controls(21.0153,267.361) and(21.0697,262.713)
+..(21.14,258.38)
+..controls(21.2102,254.046) and(21.2961,250.027)
+..(21.3962,246.37)
+..controls(21.4964,242.712) and(21.6105,239.414)
+..(21.74,236.45)
+..controls(21.8695,233.486) and(22.0124,230.842)
+..(22.3785,228.438)
+..controls(22.7446,226.033) and(23.3351,223.872)
+..(24.3798,221.929)
+..controls(25.4245,219.987) and(26.9266,218.266)
+..(29.1002,216.762)
+..controls(31.2738,215.258) and(34.1216,213.971)
+..(37.7963,212.89)
+..controls(41.4711,211.809) and(45.9723,210.933)
+..(51.3746,210.232)
+..controls(56.777,209.53) and(63.0758,209.002)
+..(70.3091,208.598)
+..controls(77.5424,208.195) and(85.7018,207.915)
+..(94.888,207.703)
+..controls(104.074,207.492) and(114.274,207.348)
+..(125.81,207.22)
+..controls(137.346,207.092) and(150.269,206.979)
+..(164.668,206.879)
+..controls(179.067,206.78) and(194.948,206.695)
+..(212.111,206.625)
+..controls(229.274,206.556) and(247.717,206.502)
+..(266.922,206.465)
+..controls(286.126,206.429) and(306.079,206.41)
+..(326.04,206.41)
+..controls(346.001,206.41) and(365.954,206.429)
+..(385.158,206.465)
+..controls(404.363,206.502) and(422.806,206.556)
+..(439.969,206.625)
+..controls(457.132,206.695) and(473.013,206.78)
+..(487.412,206.879)
+..controls(501.811,206.979) and(514.734,207.092)
+..(526.27,207.22)
+..controls(537.806,207.348) and(548.006,207.492)
+..(557.191,207.703)
+..controls(566.376,207.915) and(574.533,208.195)
+..(581.761,208.598)
+..controls(588.99,209.002) and(595.282,209.53)
+..(600.673,210.232)
+..controls(606.064,210.933) and(610.551,211.809)
+..(614.206,212.89)
+..controls(617.861,213.971) and(620.685,215.258)
+..(622.83,216.762)
+..controls(624.974,218.266) and(626.442,219.987)
+..(627.447,221.929)
+..controls(628.452,223.872) and(628.998,226.033)
+..(629.313,228.438)
+..controls(629.628,230.842) and(629.715,233.486)
+..(629.78,236.45)
+..controls(629.845,239.414) and(629.887,242.712)
+..(629.907,246.37)
+..controls(629.927,250.027) and(629.924,254.046)
+..(629.898,258.38)
+..controls(629.872,262.713) and(629.824,267.361)
+..(629.753,272.196)
+..controls(629.682,277.031) and(629.589,282.05)
+..(629.477,287.071)
+..controls(629.365,292.093) and(629.234,297.112)
+..(629.09,301.947)
+..controls(628.946,306.782) and(628.788,311.431)
+..(628.622,315.765)
+..controls(628.456,320.099) and(628.281,324.119)
+..(628.1,327.777)
+..controls(627.92,331.436) and(627.734,334.735)
+..(627.54,337.7)
+..controls(627.346,340.665) and(627.147,343.31)
+..(626.731,345.716)
+..controls(626.315,348.122) and(625.682,350.285)
+..(624.603,352.229)
+..controls(623.523,354.173) and(621.994,355.896)
+..(619.802,357.402)
+..controls(617.611,358.908) and(614.754,360.197)
+..(611.079,361.28)
+..controls(607.404,362.363) and(602.912,363.241)
+..(597.528,363.944)
+..controls(592.144,364.648) and(585.872,365.178)
+..(578.674,365.583)
+..controls(571.475,365.988) and(563.358,366.27)
+..(554.222,366.483)
+..controls(545.085,366.696) and(534.942,366.841)
+..(523.47,366.97)
+..controls(511.998,367.099) and(499.147,367.214)
+..(484.829,367.314)
+..controls(470.51,367.414) and(454.718,367.5)
+..(437.651,367.57)
+..controls(420.584,367.64) and(402.244,367.695)
+..(383.147,367.731)
+..controls(364.051,367.768) and(344.209,367.787)
+..(324.36,367.787)
+..controls(304.511,367.787) and(284.669,367.768)
+..(265.573,367.731)
+..controls(246.476,367.695) and(228.136,367.64)
+..(211.069,367.57)
+..controls(194.002,367.5) and(178.21,367.414)
+..(163.891,367.314)
+..controls(149.573,367.214) and(136.722,367.099)
+..cycle;
+fill p withcolor (0.956,0.9,0.9);
+% 31
+path p;
+p = (499.83,216.18)
+--(601.11,216.18)
+--(601.11,239.82)
+--(499.83,239.82)
+--cycle;
+linecap:=0;
+linejoin:=0;
+pickup pencircle scaled 0.45;
+draw p withcolor (0.561,0,0);
+% 34
+path p;
+p = (499.83,276.96)
+--(601.11,276.96)
+--(601.11,300.6)
+--(499.83,300.6)
+--cycle;
+draw p withcolor (0.561,0,0);
+% 37
+path p;
+p = (499.83,330.96)
+--(601.11,330.96)
+--(601.11,354.6)
+--(499.83,354.6)
+--cycle;
+draw p withcolor (0.561,0,0);
+% 40
+path p;
+p = (310.83,276.96)
+--(412.11,276.96)
+--(412.11,300.6)
+--(310.83,300.6)
+--cycle;
+draw p withcolor (0.561,0,0);
+% 43
+path p;
+p = (310.83,330.96)
+--(412.11,330.96)
+--(412.11,354.6)
+--(310.83,354.6)
+--cycle;
+draw p withcolor (0.561,0,0);
+% 47
+path p;
+p = (121.89,276.96)
+--(223.11,276.96)
+--(223.11,300.6)
+--(121.89,300.6)
+--cycle;
+draw p withcolor (0.561,0,0);
+% 49
+path p;
+p = (121.89,330.96)
+--(223.11,330.96)
+--(223.11,354.6)
+--(121.89,354.6)
+--cycle;
+draw p withcolor (0.561,0,0);
+% 52
+path p;
+p = (7.11,6.96)
+--(634.83,6.96)
+--(634.83,44.1)
+--(7.11,44.1)
+--cycle;
+draw p withcolor (0,0,0);
+% 54
+path p;
+p = (304.11,6.96)
+--(304.11,44.1);
+draw p withcolor (0,0,0);
+% 56
+path p;
+p = (105.03,23.82)
+--(51.813,23.82);
+color c;
+c = (0,0,0);
+draw p withcolor c;
+path a;
+ahangle:=33.4;
+ahlength:=14.4;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 59
+path p;
+p = (20.61,13.68)
+--(44.25,13.68)
+--(44.25,37.32)
+--(20.61,37.32)
+--cycle;
+draw p withcolor (0,0,0);
+% 61
+path p;
+p = (111.75,13.68)
+--(135.33,13.68)
+--(135.33,37.32)
+--(111.75,37.32)
+--cycle;
+draw p withcolor (0,0,0);
+% 68
+path p;
+p = (401.97,23.82)
+--(348.753,23.82);
+color c;
+c = (0,0,0);
+draw p withcolor c
+dashed dashpattern(on 2.88bp off 5.76bp on 2.88bp);
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 72
+path p;
+p = (408.69,13.68)
+--(432.33,13.68)
+--(432.33,37.32)
+--(408.69,37.32)
+--cycle;
+draw p withcolor (0,0,0);
+% 75
+path p;
+p = (317.61,13.68)
+--(341.19,13.68)
+--(341.19,37.32)
+--(317.61,37.32)
+--cycle;
+draw p withcolor (0,0,0);
+% 85
+path p;
+p = (499.83,114.96)
+--(601.11,114.96)
+--(601.11,138.6)
+--(499.83,138.6)
+--cycle;
+draw p withcolor (0,0.561,0);
+% 87
+path p;
+p = (310.83,60.96)
+--(412.11,60.96)
+--(412.11,84.6)
+--(310.83,84.6)
+--cycle;
+draw p withcolor (0,0.561,0);
+% 89
+path p;
+p = (310.83,114.96)
+--(412.11,114.96)
+--(412.11,138.6)
+--(310.83,138.6)
+--cycle;
+draw p withcolor (0,0.561,0);
+% 91
+path p;
+p = (310.83,168.96)
+--(412.11,168.96)
+--(412.11,192.6)
+--(310.83,192.6)
+--cycle;
+draw p withcolor (0,0.561,0);
+% 93
+path p;
+p = (121.89,60.96)
+--(223.11,60.96)
+--(223.11,84.6)
+--(121.89,84.6)
+--cycle;
+draw p withcolor (0,0.561,0);
+% 95
+path p;
+p = (121.89,114.96)
+--(223.11,114.96)
+--(223.11,138.6)
+--(121.89,138.6)
+--cycle;
+draw p withcolor (0,0.561,0);
+% 97
+path p;
+p = (0.39,0.18)
+--(641.61,0.18)
+--(641.61,374.82)
+--(0.39,374.82)
+--cycle;
+pickup pencircle scaled 0;
+draw p withcolor (1,1,1);
+% 99
+path p;
+p = (607.83,135.18)
+..controls(607.83,135.18) and(607.85,135.189)
+..(608.202,135.448)
+..controls(608.553,135.707) and(609.241,136.223)
+..(610.285,137.076)
+..controls(611.329,137.93) and(612.714,139.114)
+..(614.216,140.53)
+..controls(615.719,141.946) and(617.321,143.582)
+..(618.822,145.328)
+..controls(620.322,147.073) and(621.721,148.926)
+..(622.952,150.875)
+..controls(624.183,152.823) and(625.252,154.87)
+..(626.175,157.09)
+..controls(627.099,159.31) and(627.88,161.707)
+..(628.558,164.397)
+..controls(629.237,167.086) and(629.814,170.078)
+..(630.33,173.43)
+..controls(630.846,176.782) and(631.3,180.483)
+..(631.699,184.568)
+..controls(632.098,188.654) and(632.44,193.125)
+..(632.719,197.934)
+..controls(632.999,202.743) and(633.216,207.889)
+..(633.362,213.237)
+..controls(633.508,218.585) and(633.583,224.131)
+..(633.583,229.68)
+..controls(633.583,235.229) and(633.508,240.775)
+..(633.362,246.123)
+..controls(633.216,251.471) and(632.999,256.617)
+..(632.719,261.426)
+..controls(632.44,266.235) and(632.098,270.706)
+..(631.699,274.792)
+..controls(631.3,278.877) and(630.846,282.578)
+..(630.33,285.93)
+..controls(629.814,289.282) and(629.237,292.274)
+..(628.558,294.963)
+..controls(627.88,297.653) and(627.099,300.05)
+..(626.175,302.27)
+..controls(625.252,304.49) and(624.183,306.537)
+..(622.952,308.485)
+..controls(621.721,310.434) and(620.322,312.287)
+..(618.822,314.032)
+..controls(617.321,315.778) and(615.719,317.414)
+..(614.216,318.83)
+..controls(612.714,320.246) and(611.329,321.43)
+..(610.285,322.284)
+..controls(609.456,322.961) and(608.852,323.425)
+..(608.462,323.718);
+color c;
+c = (0,0,0);
+pickup pencircle scaled 0.45;
+draw p withcolor c
+dashed dashpattern(on 2.88bp off 5.76bp on 2.88bp);
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 103
+path p;
+p = (607.83,141.96)
+..controls(607.83,141.96) and(607.84,141.97)
+..(608.016,142.197)
+..controls(608.191,142.425) and(608.535,142.876)
+..(609.057,143.605)
+..controls(609.579,144.334) and(610.272,145.334)
+..(611.023,146.501)
+..controls(611.774,147.667) and(612.576,148.99)
+..(613.326,150.362)
+..controls(614.076,151.735) and(614.775,153.155)
+..(615.391,154.603)
+..controls(616.007,156.051) and(616.541,157.531)
+..(617.003,159.091)
+..controls(617.464,160.651) and(617.855,162.296)
+..(618.194,164.103)
+..controls(618.533,165.911) and(618.822,167.889)
+..(619.08,170.08)
+..controls(619.338,172.271) and(619.565,174.669)
+..(619.764,177.3)
+..controls(619.964,179.93) and(620.135,182.795)
+..(620.275,185.867)
+..controls(620.415,188.938) and(620.523,192.217)
+..(620.596,195.619)
+..controls(620.669,199.021) and(620.706,202.545)
+..(620.706,206.07)
+..controls(620.706,209.595) and(620.669,213.119)
+..(620.596,216.521)
+..controls(620.523,219.923) and(620.415,223.202)
+..(620.275,226.273)
+..controls(620.135,229.345) and(619.964,232.21)
+..(619.764,234.84)
+..controls(619.565,237.471) and(619.338,239.869)
+..(619.08,242.06)
+..controls(618.822,244.251) and(618.533,246.229)
+..(618.194,248.037)
+..controls(617.855,249.844) and(617.464,251.489)
+..(617.003,253.049)
+..controls(616.541,254.609) and(616.007,256.089)
+..(615.391,257.537)
+..controls(614.775,258.985) and(614.076,260.405)
+..(613.326,261.778)
+..controls(612.576,263.15) and(611.774,264.473)
+..(611.023,265.639)
+..controls(610.272,266.806) and(609.579,267.806)
+..(609.057,268.535)
+..controls(608.744,268.972) and(608.495,269.31)
+..(608.307,269.559);
+color c;
+c = (0,0,0);
+draw p withcolor c
+dashed dashpattern(on 2.88bp off 5.76bp on 2.88bp);
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 107
+path p;
+p = (418.83,189.18)
+..controls(418.83,189.18) and(418.855,189.189)
+..(419.295,189.424)
+..controls(419.734,189.659) and(420.595,190.125)
+..(421.901,190.881)
+..controls(423.207,191.638) and(424.941,192.679)
+..(426.82,193.901)
+..controls(428.699,195.124) and(430.704,196.516)
+..(432.582,197.972)
+..controls(434.459,199.427) and(436.209,200.944)
+..(437.749,202.504)
+..controls(439.29,204.064) and(440.627,205.67)
+..(441.782,207.377)
+..controls(442.937,209.085) and(443.914,210.897)
+..(444.763,212.901)
+..controls(445.612,214.906) and(446.335,217.11)
+..(446.98,219.56)
+..controls(447.625,222.01) and(448.194,224.698)
+..(448.693,227.654)
+..controls(449.191,230.609) and(449.62,233.832)
+..(449.97,237.291)
+..controls(450.32,240.751) and(450.591,244.446)
+..(450.773,248.282)
+..controls(450.956,252.118) and(451.05,256.093)
+..(451.05,260.07)
+..controls(451.05,264.047) and(450.956,268.022)
+..(450.773,271.858)
+..controls(450.591,275.694) and(450.32,279.389)
+..(449.97,282.849)
+..controls(449.62,286.308) and(449.191,289.531)
+..(448.693,292.486)
+..controls(448.194,295.442) and(447.625,298.13)
+..(446.98,300.58)
+..controls(446.335,303.03) and(445.612,305.234)
+..(444.763,307.239)
+..controls(443.914,309.243) and(442.937,311.055)
+..(441.782,312.763)
+..controls(440.627,314.47) and(439.29,316.076)
+..(437.749,317.636)
+..controls(436.209,319.196) and(434.459,320.713)
+..(432.582,322.168)
+..controls(430.704,323.624) and(428.699,325.016)
+..(426.82,326.239)
+..controls(424.941,327.461) and(423.207,328.502)
+..(421.901,329.259)
+..controls(420.792,329.901) and(420.004,330.334)
+..(419.522,330.594);
+color c;
+c = (0,0,0);
+draw p withcolor c
+dashed dashpattern(on 2.88bp off 5.76bp on 2.88bp);
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 111
+path p;
+p = (418.83,195.96)
+..controls(418.83,195.96) and(418.845,195.975)
+..(419.109,196.255)
+..controls(419.373,196.536) and(419.89,197.087)
+..(420.674,197.938)
+..controls(421.458,198.789) and(422.499,199.929)
+..(423.627,201.192)
+..controls(424.755,202.456) and(425.959,203.83)
+..(427.086,205.161)
+..controls(428.213,206.493) and(429.263,207.781)
+..(430.188,208.981)
+..controls(431.113,210.181) and(431.916,211.296)
+..(432.609,212.355)
+..controls(433.303,213.413) and(433.889,214.416)
+..(434.399,215.414)
+..controls(434.909,216.413) and(435.343,217.409)
+..(435.73,218.44)
+..controls(436.117,219.471) and(436.459,220.536)
+..(436.758,221.657)
+..controls(437.058,222.777) and(437.315,223.954)
+..(437.525,225.187)
+..controls(437.735,226.42) and(437.898,227.708)
+..(438.007,229.031)
+..controls(438.117,230.355) and(438.173,231.712)
+..(438.173,233.07)
+..controls(438.173,234.428) and(438.117,235.785)
+..(438.007,237.109)
+..controls(437.898,238.432) and(437.735,239.72)
+..(437.525,240.953)
+..controls(437.315,242.186) and(437.058,243.363)
+..(436.758,244.483)
+..controls(436.459,245.604) and(436.117,246.669)
+..(435.73,247.7)
+..controls(435.343,248.731) and(434.909,249.727)
+..(434.399,250.726)
+..controls(433.889,251.724) and(433.303,252.727)
+..(432.609,253.785)
+..controls(431.916,254.844) and(431.113,255.959)
+..(430.188,257.159)
+..controls(429.263,258.359) and(428.213,259.647)
+..(427.086,260.979)
+..controls(425.959,262.31) and(424.755,263.684)
+..(423.627,264.948)
+..controls(422.499,266.211) and(421.458,267.351)
+..(420.674,268.202)
+..controls(420.094,268.832) and(419.66,269.297)
+..(419.367,269.61);
+color c;
+c = (0,0,0);
+draw p withcolor c
+dashed dashpattern(on 2.88bp off 5.76bp on 2.88bp);
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 115
+path p;
+p = (223.11,141.96)
+..controls(223.11,141.96) and(223.12,141.985)
+..(223.296,142.458)
+..controls(223.471,142.932) and(223.815,143.863)
+..(224.337,145.304)
+..controls(224.859,146.746) and(225.552,148.681)
+..(226.303,150.834)
+..controls(227.054,152.988) and(227.856,155.337)
+..(228.606,157.626)
+..controls(229.356,159.914) and(230.055,162.142)
+..(230.671,164.235)
+..controls(231.287,166.328) and(231.821,168.293)
+..(232.283,170.179)
+..controls(232.744,172.064) and(233.135,173.876)
+..(233.474,175.702)
+..controls(233.813,177.529) and(234.102,179.377)
+..(234.36,181.31)
+..controls(234.618,183.243) and(234.845,185.258)
+..(235.044,187.392)
+..controls(235.244,189.526) and(235.415,191.779)
+..(235.555,194.144)
+..controls(235.695,196.51) and(235.803,198.987)
+..(235.876,201.529)
+..controls(235.949,204.071) and(235.986,206.677)
+..(235.986,209.275)
+..controls(235.986,211.872) and(235.949,214.46)
+..(235.876,216.966)
+..controls(235.803,219.472) and(235.695,221.895)
+..(235.555,224.19)
+..controls(235.415,226.486) and(235.244,228.654)
+..(235.044,230.689)
+..controls(234.845,232.723) and(234.618,234.625)
+..(234.36,236.43)
+..controls(234.102,238.235) and(233.813,239.939)
+..(233.474,241.597)
+..controls(233.135,243.254) and(232.744,244.871)
+..(232.283,246.527)
+..controls(231.821,248.183) and(231.287,249.882)
+..(230.671,251.669)
+..controls(230.055,253.456) and(229.356,255.335)
+..(228.606,257.25)
+..controls(227.856,259.165) and(227.054,261.116)
+..(226.303,262.895)
+..controls(225.552,264.674) and(224.859,266.265)
+..(224.337,267.447)
+..controls(223.929,268.371) and(223.63,269.037)
+..(223.435,269.468);
+color c;
+c = (0,0,0);
+draw p withcolor c
+dashed dashpattern(on 2.88bp off 5.76bp on 2.88bp);
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 119
+path p;
+p = (229.83,297.18)
+..controls(229.83,297.18) and(229.84,297.185)
+..(230.019,297.277)
+..controls(230.198,297.368) and(230.55,297.548)
+..(231.085,297.824)
+..controls(231.621,298.1) and(232.334,298.468)
+..(233.113,298.873)
+..controls(233.892,299.278) and(234.729,299.715)
+..(235.52,300.133)
+..controls(236.312,300.551) and(237.06,300.95)
+..(237.731,301.315)
+..controls(238.403,301.679) and(239,302.01)
+..(239.536,302.315)
+..controls(240.071,302.62) and(240.545,302.899)
+..(240.983,303.167)
+..controls(241.421,303.435) and(241.823,303.692)
+..(242.21,303.95)
+..controls(242.597,304.208) and(242.97,304.466)
+..(243.336,304.732)
+..controls(243.702,304.997) and(244.062,305.27)
+..(244.415,305.552)
+..controls(244.768,305.833) and(245.114,306.124)
+..(245.448,306.42)
+..controls(245.782,306.716) and(246.105,307.018)
+..(246.408,307.32)
+..controls(246.712,307.622) and(246.997,307.924)
+..(247.258,308.22)
+..controls(247.519,308.516) and(247.757,308.807)
+..(247.97,309.088)
+..controls(248.183,309.37) and(248.371,309.643)
+..(248.538,309.908)
+..controls(248.705,310.174) and(248.851,310.432)
+..(248.98,310.69)
+..controls(249.109,310.948) and(249.224,311.206)
+..(249.324,311.472)
+..controls(249.424,311.738) and(249.51,312.012)
+..(249.58,312.295)
+..controls(249.65,312.577) and(249.705,312.869)
+..(249.741,313.166)
+..controls(249.778,313.463) and(249.797,313.767)
+..(249.797,314.07)
+..controls(249.797,314.373) and(249.778,314.677)
+..(249.741,314.974)
+..controls(249.705,315.271) and(249.65,315.563)
+..(249.58,315.845)
+..controls(249.51,316.128) and(249.424,316.402)
+..(249.324,316.668)
+..controls(249.224,316.934) and(249.109,317.192)
+..(248.98,317.45)
+..controls(248.851,317.708) and(248.705,317.966)
+..(248.538,318.232)
+..controls(248.371,318.497) and(248.183,318.77)
+..(247.97,319.052)
+..controls(247.757,319.333) and(247.519,319.624)
+..(247.258,319.92)
+..controls(246.997,320.216) and(246.712,320.518)
+..(246.408,320.82)
+..controls(246.105,321.122) and(245.782,321.424)
+..(245.448,321.72)
+..controls(245.114,322.016) and(244.768,322.307)
+..(244.415,322.588)
+..controls(244.062,322.87) and(243.702,323.143)
+..(243.336,323.408)
+..controls(242.97,323.674) and(242.597,323.932)
+..(242.21,324.19)
+..controls(241.823,324.448) and(241.421,324.705)
+..(240.983,324.973)
+..controls(240.545,325.241) and(240.071,325.52)
+..(239.536,325.825)
+..controls(239,326.13) and(238.403,326.461)
+..(237.731,326.825)
+..controls(237.06,327.19) and(236.312,327.589)
+..(235.52,328.007)
+..controls(234.729,328.425) and(233.892,328.862)
+..(233.113,329.267)
+..controls(232.334,329.672) and(231.621,330.04)
+..(231.085,330.316)
+..controls(230.87,330.427) and(230.684,330.523)
+..(230.527,330.603);
+color c;
+c = (0,0,0);
+draw p withcolor c
+dashed dashpattern(on 2.88bp off 5.76bp on 2.88bp);
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 124
+path p;
+p = (115.11,87.96)
+..controls(115.11,87.96) and(115.095,87.9688)
+..(114.832,88.254)
+..controls(114.569,88.5392) and(114.053,89.1087)
+..(113.272,90.0655)
+..controls(112.49,91.0222) and(111.452,92.3598)
+..(110.327,93.9839)
+..controls(109.202,95.6081) and(108.002,97.5053)
+..(106.879,99.562)
+..controls(105.755,101.619) and(104.707,103.832)
+..(103.785,106.197)
+..controls(102.863,108.562) and(102.063,111.082)
+..(101.371,113.851)
+..controls(100.68,116.621) and(100.095,119.646)
+..(99.5869,123.07)
+..controls(99.0786,126.494) and(98.6461,130.331)
+..(98.26,134.65)
+..controls(97.8739,138.969) and(97.5334,143.756)
+..(97.2348,149.053)
+..controls(96.9362,154.35) and(96.68,160.16)
+..(96.4705,166.416)
+..controls(96.261,172.673) and(96.0987,179.376)
+..(95.9893,186.345)
+..controls(95.88,193.314) and(95.8241,200.546)
+..(95.8241,207.78)
+..controls(95.8241,215.014) and(95.88,222.246)
+..(95.9893,229.215)
+..controls(96.0987,236.184) and(96.261,242.887)
+..(96.4705,249.144)
+..controls(96.68,255.4) and(96.9362,261.21)
+..(97.2348,266.507)
+..controls(97.5334,271.804) and(97.8739,276.591)
+..(98.26,280.91)
+..controls(98.6461,285.229) and(99.0786,289.066)
+..(99.5869,292.49)
+..controls(100.095,295.914) and(100.68,298.939)
+..(101.371,301.709)
+..controls(102.063,304.478) and(102.863,306.998)
+..(103.785,309.363)
+..controls(104.707,311.728) and(105.755,313.941)
+..(106.879,315.998)
+..controls(108.002,318.055) and(109.202,319.952)
+..(110.327,321.576)
+..controls(111.452,323.2) and(112.49,324.538)
+..(113.272,325.495)
+..controls(113.852,326.204) and(114.285,326.701)
+..(114.577,327.026);
+color c;
+c = (0,0,0);
+draw p withcolor c
+dashed dashpattern(on 2.88bp off 5.76bp on 2.88bp);
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 128
+path p;
+p = (229.83,141.96)
+..controls(229.83,141.96) and(229.84,141.97)
+..(230.016,142.16)
+..controls(230.191,142.349) and(230.535,142.722)
+..(231.057,143.299)
+..controls(231.579,143.876) and(232.272,144.651)
+..(233.023,145.513)
+..controls(233.774,146.375) and(234.576,147.315)
+..(235.326,148.231)
+..controls(236.076,149.147) and(236.775,150.039)
+..(237.391,150.877)
+..controls(238.007,151.714) and(238.541,152.501)
+..(239.003,153.256)
+..controls(239.464,154.01) and(239.855,154.735)
+..(240.194,155.466)
+..controls(240.533,156.197) and(240.822,156.937)
+..(241.08,157.71)
+..controls(241.338,158.483) and(241.565,159.29)
+..(241.79,160.14)
+..controls(242.014,160.99) and(242.236,161.884)
+..(242.482,162.815)
+..controls(242.728,163.746) and(242.997,164.713)
+..(243.313,165.695)
+..controls(243.63,166.676) and(243.993,167.671)
+..(244.422,168.648)
+..controls(244.851,169.625) and(245.345,170.583)
+..(245.917,171.491)
+..controls(246.489,172.4) and(247.138,173.259)
+..(247.874,174.05)
+..controls(248.609,174.841) and(249.431,175.564)
+..(250.353,176.215)
+..controls(251.276,176.865) and(252.299,177.444)
+..(253.46,177.96)
+..controls(254.621,178.476) and(255.921,178.926)
+..(257.449,179.318)
+..controls(258.976,179.71) and(260.734,180.044)
+..(262.812,180.337)
+..controls(264.891,180.63) and(267.297,180.882)
+..(270.069,181.104)
+..controls(272.84,181.327) and(275.989,181.519)
+..(279.367,181.685)
+..controls(282.744,181.851) and(286.352,181.99)
+..(289.734,182.101)
+..controls(293.115,182.211) and(296.234,182.293)
+..(298.584,182.348)
+..controls(300.934,182.404) and(302.483,182.432)
+..(303.274,182.446)
+..controls(303.292,182.447) and(303.31,182.447)
+..(303.327,182.447);
+color c;
+c = (0,0,0);
+draw p withcolor c;
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 132
+path p;
+p = (229.83,87.96)
+..controls(229.83,87.96) and(229.84,87.9698)
+..(230.016,88.1767)
+..controls(230.191,88.3836) and(230.535,88.792)
+..(231.057,89.4381)
+..controls(231.579,90.0842) and(232.272,90.9611)
+..(233.023,91.9615)
+..controls(233.774,92.9619) and(234.576,94.0761)
+..(235.326,95.1994)
+..controls(236.076,96.3227) and(236.775,97.4545)
+..(237.391,98.5696)
+..controls(238.007,99.6848) and(238.541,100.786)
+..(239.003,101.907)
+..controls(239.464,103.028) and(239.855,104.17)
+..(240.194,105.39)
+..controls(240.533,106.61) and(240.822,107.913)
+..(241.08,109.33)
+..controls(241.338,110.747) and(241.565,112.277)
+..(241.79,113.936)
+..controls(242.014,115.595) and(242.236,117.385)
+..(242.482,119.29)
+..controls(242.728,121.194) and(242.997,123.213)
+..(243.313,125.296)
+..controls(243.63,127.38) and(243.993,129.526)
+..(244.422,131.665)
+..controls(244.851,133.803) and(245.345,135.931)
+..(245.917,137.978)
+..controls(246.489,140.026) and(247.138,141.99)
+..(247.874,143.825)
+..controls(248.609,145.66) and(249.431,147.364)
+..(250.353,148.925)
+..controls(251.276,150.485) and(252.299,151.901)
+..(253.46,153.19)
+..controls(254.621,154.479) and(255.921,155.637)
+..(257.449,156.689)
+..controls(258.976,157.74) and(260.734,158.688)
+..(262.812,159.579)
+..controls(264.891,160.47) and(267.297,161.305)
+..(270.069,162.114)
+..controls(272.84,162.923) and(275.989,163.706)
+..(279.367,164.456)
+..controls(282.744,165.206) and(286.352,165.921)
+..(289.734,166.548)
+..controls(293.115,167.175) and(296.234,167.707)
+..(298.584,168.093)
+..controls(300.934,168.479) and(302.483,168.716)
+..(303.274,168.836)
+..controls(303.295,168.839) and(303.315,168.842)
+..(303.335,168.845);
+color c;
+c = (0,0,0);
+draw p withcolor c;
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 136
+path p;
+p = (304.11,87.96)
+..controls(304.11,87.96) and(304.1,87.9699)
+..(303.924,88.1698)
+..controls(303.749,88.3697) and(303.405,88.7638)
+..(302.883,89.3824)
+..controls(302.361,90.0009) and(301.668,90.8368)
+..(300.917,91.7818)
+..controls(300.166,92.7268) and(299.364,93.7714)
+..(298.614,94.8118)
+..controls(297.864,95.8521) and(297.165,96.8877)
+..(296.549,97.8918)
+..controls(295.933,98.896) and(295.399,99.8711)
+..(294.937,100.845)
+..controls(294.476,101.82) and(294.085,102.795)
+..(293.746,103.819)
+..controls(293.407,104.844) and(293.118,105.92)
+..(292.86,107.08)
+..controls(292.602,108.24) and(292.375,109.479)
+..(292.176,110.818)
+..controls(291.976,112.157) and(291.805,113.594)
+..(291.665,115.122)
+..controls(291.525,116.65) and(291.417,118.269)
+..(291.344,119.942)
+..controls(291.271,121.615) and(291.234,123.342)
+..(291.234,125.07)
+..controls(291.234,126.798) and(291.271,128.525)
+..(291.344,130.198)
+..controls(291.417,131.871) and(291.525,133.49)
+..(291.665,135.018)
+..controls(291.805,136.546) and(291.976,137.983)
+..(292.176,139.322)
+..controls(292.375,140.661) and(292.602,141.9)
+..(292.86,143.06)
+..controls(293.118,144.22) and(293.407,145.296)
+..(293.746,146.321)
+..controls(294.085,147.345) and(294.476,148.32)
+..(294.937,149.295)
+..controls(295.399,150.269) and(295.933,151.244)
+..(296.549,152.248)
+..controls(297.165,153.252) and(297.864,154.288)
+..(298.614,155.328)
+..controls(299.364,156.369) and(300.166,157.413)
+..(300.917,158.358)
+..controls(301.668,159.303) and(302.361,160.139)
+..(302.883,160.758)
+..controls(303.175,161.104) and(303.412,161.38)
+..(303.594,161.591);
+color c;
+c = (0,0,0);
+draw p withcolor c;
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 140
+path p;
+p = (418.83,138.6)
+..controls(418.83,138.6) and(418.845,138.613)
+..(419.099,138.839)
+..controls(419.352,139.065) and(419.847,139.509)
+..(420.59,140.189)
+..controls(421.333,140.868) and(422.312,141.774)
+..(423.357,142.768)
+..controls(424.402,143.761) and(425.501,144.831)
+..(426.504,145.851)
+..controls(427.506,146.871) and(428.412,147.841)
+..(429.17,148.721)
+..controls(429.928,149.601) and(430.541,150.394)
+..(431.015,151.117)
+..controls(431.488,151.84) and(431.824,152.495)
+..(432.039,153.115)
+..controls(432.255,153.734) and(432.35,154.32)
+..(432.35,154.9)
+..controls(432.35,155.48) and(432.255,156.05)
+..(432.039,156.634)
+..controls(431.824,157.218) and(431.488,157.817)
+..(431.015,158.462)
+..controls(430.541,159.106) and(429.928,159.798)
+..(429.17,160.552)
+..controls(428.412,161.307) and(427.506,162.126)
+..(426.504,162.98)
+..controls(425.501,163.834) and(424.402,164.722)
+..(423.357,165.542)
+..controls(422.312,166.363) and(421.333,167.107)
+..(420.59,167.663)
+..controls(420.113,168.021) and(419.738,168.298)
+..(419.463,168.499);
+color c;
+c = (0,0,0);
+draw p withcolor c;
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 144
+path p;
+p = (493.11,141.96)
+..controls(493.11,141.96) and(493.09,141.975)
+..(492.738,142.257)
+..controls(492.387,142.539) and(491.699,143.094)
+..(490.655,143.952)
+..controls(489.611,144.809) and(488.226,145.96)
+..(486.724,147.237)
+..controls(485.221,148.515) and(483.619,149.906)
+..(482.118,151.258)
+..controls(480.618,152.61) and(479.219,153.922)
+..(477.988,155.149)
+..controls(476.757,156.377) and(475.688,157.524)
+..(474.765,158.619)
+..controls(473.841,159.713) and(473.06,160.758)
+..(472.382,161.805)
+..controls(471.703,162.852) and(471.126,163.905)
+..(470.61,165)
+..controls(470.094,166.095) and(469.64,167.232)
+..(469.241,168.433)
+..controls(468.842,169.635) and(468.5,170.9)
+..(468.221,172.229)
+..controls(467.941,173.558) and(467.724,174.95)
+..(467.578,176.381)
+..controls(467.432,177.812) and(467.357,179.281)
+..(467.357,180.751)
+..controls(467.357,182.222) and(467.432,183.691)
+..(467.578,185.123)
+..controls(467.724,186.554) and(467.941,187.946)
+..(468.221,189.276)
+..controls(468.5,190.605) and(468.842,191.872)
+..(469.241,193.074)
+..controls(469.64,194.276) and(470.094,195.413)
+..(470.61,196.51)
+..controls(471.126,197.607) and(471.703,198.66)
+..(472.382,199.709)
+..controls(473.06,200.757) and(473.841,201.804)
+..(474.765,202.9)
+..controls(475.688,203.997) and(476.757,205.147)
+..(477.988,206.377)
+..controls(479.219,207.607) and(480.618,208.922)
+..(482.118,210.278)
+..controls(483.619,211.633) and(485.221,213.028)
+..(486.724,214.309)
+..controls(488.226,215.59) and(489.611,216.743)
+..(490.655,217.603)
+..controls(491.499,218.298) and(492.111,218.795)
+..(492.5,219.109);
+color c;
+c = (0,0,0);
+draw p withcolor c;
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 148
+path p;
+p = (493.11,236.46)
+..controls(493.11,236.46) and(493.09,236.459)
+..(492.738,236.512)
+..controls(492.387,236.564) and(491.699,236.671)
+..(490.655,236.878)
+..controls(489.611,237.085) and(488.226,237.392)
+..(486.724,237.807)
+..controls(485.221,238.223) and(483.619,238.745)
+..(482.118,239.367)
+..controls(480.618,239.989) and(479.219,240.709)
+..(477.988,241.542)
+..controls(476.757,242.375) and(475.688,243.32)
+..(474.765,244.418)
+..controls(473.841,245.517) and(473.06,246.771)
+..(472.382,248.239)
+..controls(471.703,249.708) and(471.126,251.397)
+..(470.61,253.33)
+..controls(470.094,255.263) and(469.64,257.434)
+..(469.216,259.856)
+..controls(468.792,262.278) and(468.399,264.953)
+..(468.013,267.847)
+..controls(467.628,270.74) and(467.25,273.851)
+..(466.861,277.092)
+..controls(466.471,280.333) and(466.071,283.701)
+..(465.642,287.07)
+..controls(465.213,290.439) and(464.756,293.807)
+..(464.257,297.048)
+..controls(463.758,300.289) and(463.217,303.4)
+..(462.622,306.293)
+..controls(462.026,309.187) and(461.376,311.862)
+..(460.652,314.284)
+..controls(459.929,316.706) and(459.133,318.877)
+..(458.23,320.81)
+..controls(457.327,322.743) and(456.316,324.432)
+..(455.127,325.901)
+..controls(453.939,327.369) and(452.572,328.623)
+..(450.955,329.722)
+..controls(449.338,330.82) and(447.466,331.765)
+..(445.31,332.598)
+..controls(443.154,333.431) and(440.705,334.151)
+..(438.077,334.773)
+..controls(435.45,335.395) and(432.644,335.917)
+..(430.013,336.333)
+..controls(427.383,336.748) and(424.956,337.055)
+..(423.128,337.262)
+..controls(421.421,337.455) and(420.258,337.562)
+..(419.611,337.617);
+color c;
+c = (0,0,0);
+draw p withcolor c;
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 152
+path p;
+p = (418.83,128.46)
+..controls(418.83,128.46) and(418.866,128.475)
+..(419.481,128.779)
+..controls(420.096,129.084) and(421.3,129.685)
+..(423.128,130.633)
+..controls(424.956,131.58) and(427.383,132.863)
+..(430.013,134.321)
+..controls(432.644,135.779) and(435.45,137.396)
+..(438.077,139.017)
+..controls(440.705,140.639) and(443.154,142.263)
+..(445.31,143.852)
+..controls(447.466,145.44) and(449.338,146.997)
+..(450.955,148.567)
+..controls(452.572,150.138) and(453.939,151.726)
+..(455.127,153.409)
+..controls(456.316,155.093) and(457.327,156.877)
+..(458.23,158.81)
+..controls(459.133,160.743) and(459.929,162.82)
+..(460.652,165.064)
+..controls(461.376,167.308) and(462.026,169.719)
+..(462.622,172.273)
+..controls(463.217,174.826) and(463.758,177.522)
+..(464.257,180.291)
+..controls(464.756,183.06) and(465.213,185.9)
+..(465.642,188.713)
+..controls(466.071,191.526) and(466.471,194.31)
+..(466.861,196.97)
+..controls(467.25,199.629) and(467.628,202.163)
+..(468.013,204.507)
+..controls(468.399,206.851) and(468.792,209.006)
+..(469.216,210.951)
+..controls(469.64,212.896) and(470.094,214.633)
+..(470.61,216.18)
+..controls(471.126,217.727) and(471.703,219.079)
+..(472.382,220.254)
+..controls(473.06,221.429) and(473.841,222.432)
+..(474.765,223.311)
+..controls(475.688,224.191) and(476.757,224.947)
+..(477.988,225.613)
+..controls(479.219,226.28) and(480.618,226.856)
+..(482.118,227.354)
+..controls(483.619,227.852) and(485.221,228.269)
+..(486.724,228.602)
+..controls(488.226,228.934) and(489.611,229.18)
+..(490.655,229.345)
+..controls(491.387,229.462) and(491.944,229.538)
+..(492.332,229.589);
+color c;
+c = (0,0,0);
+draw p withcolor c;
+path a;
+a = arrowhead p;
+fill a withcolor c;
+draw a withcolor c;
+% 19
+picture q;
+q =
+btex \mbox{\fntB Software} etex;
+label.urt(q,((34.11,168.96)+(llcorner q))) withcolor (0,0.561,0);
+% 20
+picture q;
+q =
+btex \mbox{\fntB made~by} etex;
+label.urt(q,((34.17,151.08)+(llcorner q))) withcolor (0,0.561,0);
+% 21
+picture q;
+q =
+btex \mbox{\fntB Dirk} etex;
+label.urt(q,((34.17,133.2)+(llcorner q))) withcolor (0,0.561,0);
+% 22
+picture q;
+q =
+btex \mbox{\fntB Krause} etex;
+label.urt(q,((34.23,115.32)+(llcorner q))) withcolor (0,0.561,0);
+% 25
+picture q;
+q =
+btex \mbox{\fntB Software} etex;
+label.urt(q,((34.11,337.68)+(llcorner q))) withcolor (0.561,0,0);
+% 26
+picture q;
+q =
+btex \mbox{\fntB by} etex;
+label.urt(q,((34.17,319.8)+(llcorner q))) withcolor (0.561,0,0);
+% 27
+picture q;
+q =
+btex \mbox{\fntB other} etex;
+label.urt(q,((34.17,301.92)+(llcorner q))) withcolor (0.561,0,0);
+% 28
+picture q;
+q =
+btex \mbox{\fntB authors} etex;
+label.urt(q,((34.23,284.04)+(llcorner q))) withcolor (0.561,0,0);
+% 30
+picture q;
+q =
+btex \mbox{\fntA PNG~library} etex;
+label.urt(q,((520.11,222.96)+(llcorner q))) withcolor (0.561,0,0);
+% 33
+picture q;
+q =
+btex \mbox{\fntA JPEG~library} etex;
+label.urt(q,((520.11,283.68)+(llcorner q))) withcolor (0.561,0,0);
+% 36
+picture q;
+q =
+btex \mbox{\fntA NetPBM~library} etex;
+label.urt(q,((513.33,337.68)+(llcorner q))) withcolor (0.561,0,0);
+% 39
+picture q;
+q =
+btex \mbox{\fntA bzip2~library} etex;
+label.urt(q,((331.11,283.68)+(llcorner q))) withcolor (0.561,0,0);
+% 42
+picture q;
+q =
+btex \mbox{\fntA zlib} etex;
+label.urt(q,((351.33,337.68)+(llcorner q))) withcolor (0.561,0,0);
+% 45
+picture q;
+q =
+btex \mbox{\fntA Net-SNMP~library} etex;
+label.urt(q,((128.61,283.68)+(llcorner q))) withcolor (0.561,0,0);
+% 46
+picture q;
+q =
+btex \mbox{\fntA OpenSSL~library} etex;
+label.urt(q,((128.61,337.68)+(llcorner q))) withcolor (0.561,0,0);
+% 63
+picture q;
+q =
+btex \mbox{\fntA A} etex;
+label.urt(q,((118.47,20.46)+(llcorner q))) withcolor (0,0,0);
+% 64
+picture q;
+q =
+btex \mbox{\fntA B} etex;
+label.urt(q,((27.39,20.46)+(llcorner q))) withcolor (0,0,0);
+% 65
+picture q;
+q =
+btex \mbox{\fntA A~can~use~B~(B~is~recommended~for~A)} etex;
+label.urt(q,((439.11,20.46)+(llcorner q))) withcolor (0,0,0);
+% 66
+picture q;
+q =
+btex \mbox{\fntA A~needs~B~(B~is~required~for~A)} etex;
+label.urt(q,((142.11,20.46)+(llcorner q))) withcolor (0,0,0);
+% 71
+picture q;
+q =
+btex \mbox{\fntA A} etex;
+label.urt(q,((415.47,20.46)+(llcorner q))) withcolor (0,0,0);
+% 74
+picture q;
+q =
+btex \mbox{\fntA B} etex;
+label.urt(q,((324.33,20.46)+(llcorner q))) withcolor (0,0,0);
+% 79
+picture q;
+q =
+btex \mbox{\fntA bmeps} etex;
+label.urt(q,((533.61,121.68)+(llcorner q))) withcolor (0,0.561,0);
+% 80
+picture q;
+q =
+btex \mbox{\fntA genau} etex;
+label.urt(q,((344.61,67.68)+(llcorner q))) withcolor (0,0.561,0);
+% 81
+picture q;
+q =
+btex \mbox{\fntA png2pdf} etex;
+label.urt(q,((337.83,121.68)+(llcorner q))) withcolor (0,0.561,0);
+% 82
+picture q;
+q =
+btex \mbox{\fntA dklibs} etex;
+label.urt(q,((344.61,175.68)+(llcorner q))) withcolor (0,0.561,0);
+% 83
+picture q;
+q =
+btex \mbox{\fntA dkt} etex;
+label.urt(q,((155.61,67.68)+(llcorner q))) withcolor (0,0.561,0);
+% 84
+picture q;
+q =
+btex \mbox{\fntA yanolc} etex;
+label.urt(q,((155.61,121.68)+(llcorner q))) withcolor (0,0.561,0);
+endfig;
+end
diff --git a/obsolete/support/png2pdf/DOCU/depgr.mps b/obsolete/support/png2pdf/DOCU/depgr.mps
new file mode 100644
index 0000000000..a1966a2c86
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/depgr.mps
@@ -0,0 +1,1160 @@
+%!PS
+%%BoundingBox: 0 0 642 375
+%%Creator: MetaPost
+%%CreationDate: 2006.07.13:1635
+%%Pages: 1
+%*Font: ptmr8r 10.9988 9.96265 28:c42000652f90007f5ffc6
+%*Font: ptmb8r 10.9988 9.96265 44:81010006ed53d4
+%%EndProlog
+%%Page: 1 1
+ 0.9 0.956 0.9 setrgbcolor
+newpath 125.81 198.76 moveto
+114.274 198.567 104.074 198.367 94.888 198.111 curveto
+85.7018 197.854 77.5424 197.541 70.3091 197.122 curveto
+63.0758 196.703 56.777 196.177 51.3746 195.501 curveto
+45.9723 194.826 41.4711 194 37.7963 192.997 curveto
+34.1216 191.994 31.2738 190.813 29.1002 189.444 curveto
+26.9266 188.075 25.4245 186.519 24.3798 184.771 curveto
+23.3351 183.022 22.7445 181.084 22.3785 178.933 curveto
+22.0124 176.782 21.8695 174.422 21.74 171.78 curveto
+21.6105 169.138 21.4964 166.202 21.3963 162.947 curveto
+21.2961 159.693 21.2102 156.12 21.14 152.268 curveto
+21.0697 148.417 21.0153 144.287 20.9786 139.992 curveto
+20.942 135.697 20.9232 131.239 20.9232 126.779 curveto
+20.9232 122.319 20.942 117.86 20.9786 113.565 curveto
+21.0153 109.269 21.0697 105.139 21.14 101.287 curveto
+21.2102 97.4348 21.2961 93.8606 21.3963 90.6055 curveto
+21.4964 87.3505 21.6105 84.4134 21.74 81.77 curveto
+21.8695 79.1266 22.0124 76.7653 22.3785 74.6142 curveto
+22.7445 72.4632 23.3351 70.5252 24.3798 68.78 curveto
+25.4245 67.0348 26.9266 65.4841 29.1002 64.1242 curveto
+31.2738 62.7643 34.1216 61.5964 37.7963 60.6106 curveto
+41.4711 59.6248 45.9723 58.8212 51.3746 58.173 curveto
+56.777 57.5247 63.0758 57.0312 70.3091 56.6499 curveto
+77.5424 56.2685 85.7018 55.9987 94.888 55.7915 curveto
+104.074 55.5843 114.274 55.4395 125.81 55.31 curveto
+137.346 55.1805 150.269 55.0664 164.668 54.9663 curveto
+179.067 54.8661 194.948 54.7802 212.111 54.71 curveto
+229.274 54.6397 247.717 54.5853 266.922 54.5486 curveto
+286.126 54.512 306.079 54.4932 326.04 54.4932 curveto
+346.001 54.4932 365.954 54.512 385.158 54.5486 curveto
+404.363 54.5853 422.806 54.6397 439.969 54.71 curveto
+457.132 54.7802 473.013 54.8661 487.412 54.9663 curveto
+501.811 55.0664 514.734 55.1805 526.27 55.31 curveto
+537.806 55.4395 548.006 55.5843 557.192 55.7926 curveto
+566.378 56.001 574.538 56.2731 581.771 56.6592 curveto
+589.004 57.0454 595.303 57.5461 600.705 58.2054 curveto
+606.108 58.8647 610.609 59.683 614.284 60.6882 curveto
+617.958 61.6934 620.806 62.8854 622.98 64.2744 curveto
+625.153 65.6635 626.655 67.2484 627.7 69.0333 curveto
+628.745 70.8181 629.335 72.8009 629.702 75.0028 curveto
+630.068 77.2046 630.211 79.6224 630.34 82.33 curveto
+630.469 85.0376 630.584 88.0467 630.684 91.3822 curveto
+630.784 94.7176 630.87 98.3806 630.94 102.329 curveto
+631.01 106.277 631.065 110.511 631.101 114.914 curveto
+631.138 119.317 631.157 123.887 631.157 128.459 curveto
+631.157 133.03 631.138 137.6 631.101 142.003 curveto
+631.065 146.406 631.01 150.639 630.94 154.586 curveto
+630.87 158.534 630.784 162.196 630.684 165.531 curveto
+630.584 168.865 630.469 171.874 630.34 174.58 curveto
+630.211 177.286 630.068 179.703 629.702 181.902 curveto
+629.335 184.101 628.745 186.08 627.7 187.859 curveto
+626.655 189.637 625.153 191.213 622.98 192.589 curveto
+620.806 193.965 617.958 195.14 614.284 196.124 curveto
+610.609 197.108 606.108 197.9 600.705 198.528 curveto
+595.303 199.157 589.004 199.621 581.771 199.966 curveto
+574.538 200.311 566.378 200.537 557.192 200.693 curveto
+548.006 200.849 537.806 200.936 526.27 201 curveto
+514.734 201.064 501.811 201.105 487.412 201.124 curveto
+473.013 201.143 457.132 201.139 439.969 201.113 curveto
+422.806 201.086 404.363 201.037 385.158 200.966 curveto
+365.954 200.895 346.001 200.801 326.04 200.69 curveto
+306.079 200.578 286.126 200.447 266.922 200.303 curveto
+247.717 200.16 229.274 200.002 212.111 199.837 curveto
+194.948 199.671 179.067 199.497 164.668 199.317 curveto
+150.269 199.138 137.346 198.953 125.81 198.76 curveto closepath fill
+ 0 setgray 0 0.9 dtransform truncate idtransform setlinewidth pop
+ [1.44 1.44 ] 0.72 setdash 0 setlinecap 0 setlinejoin
+ 10 setmiterlimit
+newpath 125.81 198.76 moveto
+114.274 198.567 104.074 198.367 94.888 198.111 curveto
+85.7018 197.854 77.5424 197.541 70.3091 197.122 curveto
+63.0758 196.703 56.777 196.177 51.3746 195.501 curveto
+45.9723 194.826 41.4711 194 37.7963 192.997 curveto
+34.1216 191.994 31.2738 190.813 29.1002 189.444 curveto
+26.9266 188.075 25.4245 186.519 24.3798 184.771 curveto
+23.3351 183.022 22.7445 181.084 22.3785 178.933 curveto
+22.0124 176.782 21.8695 174.422 21.74 171.78 curveto
+21.6105 169.138 21.4964 166.202 21.3963 162.947 curveto
+21.2961 159.693 21.2102 156.12 21.14 152.268 curveto
+21.0697 148.417 21.0153 144.287 20.9786 139.992 curveto
+20.942 135.697 20.9232 131.239 20.9232 126.779 curveto
+20.9232 122.319 20.942 117.86 20.9786 113.565 curveto
+21.0153 109.269 21.0697 105.139 21.14 101.287 curveto
+21.2102 97.4348 21.2961 93.8606 21.3963 90.6055 curveto
+21.4964 87.3505 21.6105 84.4134 21.74 81.77 curveto
+21.8695 79.1266 22.0124 76.7653 22.3785 74.6142 curveto
+22.7445 72.4632 23.3351 70.5252 24.3798 68.78 curveto
+25.4245 67.0348 26.9266 65.4841 29.1002 64.1242 curveto
+31.2738 62.7643 34.1216 61.5964 37.7963 60.6106 curveto
+41.4711 59.6248 45.9723 58.8212 51.3746 58.173 curveto
+56.777 57.5247 63.0758 57.0312 70.3091 56.6499 curveto
+77.5424 56.2685 85.7018 55.9987 94.888 55.7915 curveto
+104.074 55.5843 114.274 55.4395 125.81 55.31 curveto
+137.346 55.1805 150.269 55.0664 164.668 54.9663 curveto
+179.067 54.8661 194.948 54.7802 212.111 54.71 curveto
+229.274 54.6397 247.717 54.5853 266.922 54.5486 curveto
+286.126 54.512 306.079 54.4932 326.04 54.4932 curveto
+346.001 54.4932 365.954 54.512 385.158 54.5486 curveto
+404.363 54.5853 422.806 54.6397 439.969 54.71 curveto
+457.132 54.7802 473.013 54.8661 487.412 54.9663 curveto
+501.811 55.0664 514.734 55.1805 526.27 55.31 curveto
+537.806 55.4395 548.006 55.5843 557.192 55.7926 curveto
+566.378 56.001 574.538 56.2731 581.771 56.6592 curveto
+589.004 57.0454 595.303 57.5461 600.705 58.2054 curveto
+606.108 58.8647 610.609 59.683 614.284 60.6882 curveto
+617.958 61.6934 620.806 62.8854 622.98 64.2744 curveto
+625.153 65.6635 626.655 67.2484 627.7 69.0333 curveto
+628.745 70.8181 629.335 72.8009 629.702 75.0028 curveto
+630.068 77.2046 630.211 79.6224 630.34 82.33 curveto
+630.469 85.0376 630.584 88.0467 630.684 91.3822 curveto
+630.784 94.7176 630.87 98.3806 630.94 102.329 curveto
+631.01 106.277 631.065 110.511 631.101 114.914 curveto
+631.138 119.317 631.157 123.887 631.157 128.459 curveto
+631.157 133.03 631.138 137.6 631.101 142.003 curveto
+631.065 146.406 631.01 150.639 630.94 154.586 curveto
+630.87 158.534 630.784 162.196 630.684 165.531 curveto
+630.584 168.865 630.469 171.874 630.34 174.58 curveto
+630.211 177.286 630.068 179.703 629.702 181.902 curveto
+629.335 184.101 628.745 186.08 627.7 187.859 curveto
+626.655 189.637 625.153 191.213 622.98 192.589 curveto
+620.806 193.965 617.958 195.14 614.284 196.124 curveto
+610.609 197.108 606.108 197.9 600.705 198.528 curveto
+595.303 199.157 589.004 199.621 581.771 199.966 curveto
+574.538 200.311 566.378 200.537 557.192 200.693 curveto
+548.006 200.849 537.806 200.936 526.27 201 curveto
+514.734 201.064 501.811 201.105 487.412 201.124 curveto
+473.013 201.143 457.132 201.139 439.969 201.113 curveto
+422.806 201.086 404.363 201.037 385.158 200.966 curveto
+365.954 200.895 346.001 200.801 326.04 200.69 curveto
+306.079 200.578 286.126 200.447 266.922 200.303 curveto
+247.717 200.16 229.274 200.002 212.111 199.837 curveto
+194.948 199.671 179.067 199.497 164.668 199.317 curveto
+150.269 199.138 137.346 198.953 125.81 198.76 curveto closepath stroke
+ 0.956 0.9 0.9 setrgbcolor
+newpath 125.25 366.97 moveto
+113.778 366.841 103.635 366.696 94.4995 366.483 curveto
+85.364 366.27 77.2495 365.988 70.0559 365.583 curveto
+62.8622 365.178 56.5976 364.648 51.2244 363.944 curveto
+45.8512 363.241 41.3741 362.363 37.7187 361.28 curveto
+34.0633 360.197 31.2303 358.908 29.0678 357.402 curveto
+26.9052 355.896 25.4104 354.173 24.3704 352.229 curveto
+23.3305 350.285 22.7423 348.122 22.3773 345.716 curveto
+22.0124 343.31 21.8695 340.665 21.74 337.7 curveto
+21.6105 334.735 21.4964 331.436 21.3963 327.777 curveto
+21.2961 324.119 21.2102 320.099 21.14 315.765 curveto
+21.0697 311.431 21.0153 306.782 20.9786 301.947 curveto
+20.942 297.112 20.9232 292.093 20.9232 287.071 curveto
+20.9232 282.05 20.942 277.031 20.9786 272.196 curveto
+21.0153 267.361 21.0697 262.713 21.14 258.38 curveto
+21.2102 254.046 21.2961 250.027 21.3963 246.37 curveto
+21.4964 242.712 21.6105 239.414 21.74 236.45 curveto
+21.8695 233.486 22.0124 230.842 22.3785 228.438 curveto
+22.7445 226.033 23.3351 223.872 24.3798 221.929 curveto
+25.4245 219.987 26.9266 218.266 29.1002 216.762 curveto
+31.2738 215.258 34.1216 213.971 37.7963 212.89 curveto
+41.4711 211.809 45.9723 210.933 51.3746 210.232 curveto
+56.777 209.53 63.0758 209.002 70.3091 208.598 curveto
+77.5424 208.195 85.7018 207.915 94.888 207.703 curveto
+104.074 207.492 114.274 207.348 125.81 207.22 curveto
+137.346 207.092 150.269 206.979 164.668 206.879 curveto
+179.067 206.78 194.948 206.695 212.111 206.625 curveto
+229.274 206.556 247.717 206.502 266.922 206.465 curveto
+286.126 206.429 306.079 206.41 326.04 206.41 curveto
+346.001 206.41 365.954 206.429 385.158 206.465 curveto
+404.363 206.502 422.806 206.556 439.969 206.625 curveto
+457.132 206.695 473.013 206.78 487.412 206.879 curveto
+501.811 206.979 514.734 207.092 526.27 207.22 curveto
+537.806 207.348 548.006 207.492 557.191 207.703 curveto
+566.376 207.915 574.533 208.195 581.761 208.598 curveto
+588.99 209.002 595.282 209.53 600.673 210.232 curveto
+606.064 210.933 610.551 211.809 614.206 212.89 curveto
+617.861 213.971 620.685 215.258 622.83 216.762 curveto
+624.974 218.266 626.442 219.987 627.447 221.929 curveto
+628.452 223.872 628.998 226.033 629.313 228.438 curveto
+629.628 230.842 629.715 233.486 629.78 236.45 curveto
+629.845 239.414 629.887 242.712 629.907 246.37 curveto
+629.927 250.027 629.924 254.046 629.898 258.38 curveto
+629.872 262.713 629.824 267.361 629.753 272.196 curveto
+629.682 277.031 629.589 282.05 629.477 287.071 curveto
+629.365 292.093 629.234 297.112 629.09 301.947 curveto
+628.946 306.782 628.788 311.431 628.622 315.765 curveto
+628.456 320.099 628.281 324.119 628.1 327.777 curveto
+627.92 331.436 627.734 334.735 627.54 337.7 curveto
+627.346 340.665 627.147 343.31 626.731 345.716 curveto
+626.315 348.122 625.682 350.285 624.603 352.229 curveto
+623.523 354.173 621.994 355.896 619.802 357.402 curveto
+617.611 358.908 614.754 360.197 611.079 361.28 curveto
+607.404 362.363 602.912 363.241 597.528 363.944 curveto
+592.144 364.648 585.872 365.178 578.674 365.583 curveto
+571.475 365.988 563.358 366.27 554.222 366.483 curveto
+545.085 366.696 534.942 366.841 523.47 366.97 curveto
+511.998 367.099 499.147 367.214 484.829 367.314 curveto
+470.51 367.414 454.718 367.5 437.651 367.57 curveto
+420.584 367.64 402.244 367.695 383.147 367.731 curveto
+364.051 367.768 344.209 367.787 324.36 367.787 curveto
+304.511 367.787 284.669 367.768 265.573 367.731 curveto
+246.476 367.695 228.136 367.64 211.069 367.57 curveto
+194.002 367.5 178.21 367.414 163.891 367.314 curveto
+149.573 367.214 136.722 367.099 125.25 366.97 curveto closepath fill
+ 0 setgray
+newpath 125.25 366.97 moveto
+113.778 366.841 103.635 366.696 94.4995 366.483 curveto
+85.364 366.27 77.2495 365.988 70.0559 365.583 curveto
+62.8622 365.178 56.5976 364.648 51.2244 363.944 curveto
+45.8512 363.241 41.3741 362.363 37.7187 361.28 curveto
+34.0633 360.197 31.2303 358.908 29.0678 357.402 curveto
+26.9052 355.896 25.4104 354.173 24.3704 352.229 curveto
+23.3305 350.285 22.7423 348.122 22.3773 345.716 curveto
+22.0124 343.31 21.8695 340.665 21.74 337.7 curveto
+21.6105 334.735 21.4964 331.436 21.3963 327.777 curveto
+21.2961 324.119 21.2102 320.099 21.14 315.765 curveto
+21.0697 311.431 21.0153 306.782 20.9786 301.947 curveto
+20.942 297.112 20.9232 292.093 20.9232 287.071 curveto
+20.9232 282.05 20.942 277.031 20.9786 272.196 curveto
+21.0153 267.361 21.0697 262.713 21.14 258.38 curveto
+21.2102 254.046 21.2961 250.027 21.3963 246.37 curveto
+21.4964 242.712 21.6105 239.414 21.74 236.45 curveto
+21.8695 233.486 22.0124 230.842 22.3785 228.438 curveto
+22.7445 226.033 23.3351 223.872 24.3798 221.929 curveto
+25.4245 219.987 26.9266 218.266 29.1002 216.762 curveto
+31.2738 215.258 34.1216 213.971 37.7963 212.89 curveto
+41.4711 211.809 45.9723 210.933 51.3746 210.232 curveto
+56.777 209.53 63.0758 209.002 70.3091 208.598 curveto
+77.5424 208.195 85.7018 207.915 94.888 207.703 curveto
+104.074 207.492 114.274 207.348 125.81 207.22 curveto
+137.346 207.092 150.269 206.979 164.668 206.879 curveto
+179.067 206.78 194.948 206.695 212.111 206.625 curveto
+229.274 206.556 247.717 206.502 266.922 206.465 curveto
+286.126 206.429 306.079 206.41 326.04 206.41 curveto
+346.001 206.41 365.954 206.429 385.158 206.465 curveto
+404.363 206.502 422.806 206.556 439.969 206.625 curveto
+457.132 206.695 473.013 206.78 487.412 206.879 curveto
+501.811 206.979 514.734 207.092 526.27 207.22 curveto
+537.806 207.348 548.006 207.492 557.191 207.703 curveto
+566.376 207.915 574.533 208.195 581.761 208.598 curveto
+588.99 209.002 595.282 209.53 600.673 210.232 curveto
+606.064 210.933 610.551 211.809 614.206 212.89 curveto
+617.861 213.971 620.685 215.258 622.83 216.762 curveto
+624.974 218.266 626.442 219.987 627.447 221.929 curveto
+628.452 223.872 628.998 226.033 629.313 228.438 curveto
+629.628 230.842 629.715 233.486 629.78 236.45 curveto
+629.845 239.414 629.887 242.712 629.907 246.37 curveto
+629.927 250.027 629.924 254.046 629.898 258.38 curveto
+629.872 262.713 629.824 267.361 629.753 272.196 curveto
+629.682 277.031 629.589 282.05 629.477 287.071 curveto
+629.365 292.093 629.234 297.112 629.09 301.947 curveto
+628.946 306.782 628.788 311.431 628.622 315.765 curveto
+628.456 320.099 628.281 324.119 628.1 327.777 curveto
+627.92 331.436 627.734 334.735 627.54 337.7 curveto
+627.346 340.665 627.147 343.31 626.731 345.716 curveto
+626.315 348.122 625.682 350.285 624.603 352.229 curveto
+623.523 354.173 621.994 355.896 619.802 357.402 curveto
+617.611 358.908 614.754 360.197 611.079 361.28 curveto
+607.404 362.363 602.912 363.241 597.528 363.944 curveto
+592.144 364.648 585.872 365.178 578.674 365.583 curveto
+571.475 365.988 563.358 366.27 554.222 366.483 curveto
+545.085 366.696 534.942 366.841 523.47 366.97 curveto
+511.998 367.099 499.147 367.214 484.829 367.314 curveto
+470.51 367.414 454.718 367.5 437.651 367.57 curveto
+420.584 367.64 402.244 367.695 383.147 367.731 curveto
+364.051 367.768 344.209 367.787 324.36 367.787 curveto
+304.511 367.787 284.669 367.768 265.573 367.731 curveto
+246.476 367.695 228.136 367.64 211.069 367.57 curveto
+194.002 367.5 178.21 367.414 163.891 367.314 curveto
+149.573 367.214 136.722 367.099 125.25 366.97 curveto closepath stroke
+ [] 0 setdash
+newpath 499.83 330.96 moveto
+601.11 330.96 lineto
+601.11 354.6 lineto
+499.83 354.6 lineto
+ closepath stroke
+newpath 499.83 276.96 moveto
+601.11 276.96 lineto
+601.11 300.6 lineto
+499.83 300.6 lineto
+ closepath stroke
+newpath 499.83 216.18 moveto
+601.11 216.18 lineto
+601.11 239.82 lineto
+499.83 239.82 lineto
+ closepath stroke
+newpath 310.83 276.96 moveto
+412.11 276.96 lineto
+412.11 300.6 lineto
+310.83 300.6 lineto
+ closepath stroke
+newpath 310.83 330.96 moveto
+412.11 330.96 lineto
+412.11 354.6 lineto
+310.83 354.6 lineto
+ closepath stroke
+newpath 121.89 276.96 moveto
+223.11 276.96 lineto
+223.11 300.6 lineto
+121.89 300.6 lineto
+ closepath stroke
+newpath 121.89 330.96 moveto
+223.11 330.96 lineto
+223.11 354.6 lineto
+121.89 354.6 lineto
+ closepath stroke
+newpath 499.83 114.96 moveto
+601.11 114.96 lineto
+601.11 138.6 lineto
+499.83 138.6 lineto
+ closepath stroke
+newpath 310.83 168.96 moveto
+412.11 168.96 lineto
+412.11 192.6 lineto
+310.83 192.6 lineto
+ closepath stroke
+newpath 310.83 114.96 moveto
+412.11 114.96 lineto
+412.11 138.6 lineto
+310.83 138.6 lineto
+ closepath stroke
+newpath 310.83 60.96 moveto
+412.11 60.96 lineto
+412.11 84.6 lineto
+310.83 84.6 lineto
+ closepath stroke
+newpath 121.89 60.96 moveto
+223.11 60.96 lineto
+223.11 84.6 lineto
+121.89 84.6 lineto
+ closepath stroke
+newpath 121.89 114.96 moveto
+223.11 114.96 lineto
+223.11 138.6 lineto
+121.89 138.6 lineto
+ closepath stroke
+ 1 setgray 0 0 dtransform truncate idtransform setlinewidth pop
+newpath 0.39 0.18 moveto
+641.61 0.18 lineto
+641.61 374.82 lineto
+0.39 374.82 lineto
+ closepath stroke
+ 0 setgray 0 0.9 dtransform truncate idtransform setlinewidth pop
+newpath 317.61 13.68 moveto
+341.19 13.68 lineto
+341.19 37.32 lineto
+317.61 37.32 lineto
+ closepath stroke
+newpath 408.69 13.68 moveto
+432.33 13.68 lineto
+432.33 37.32 lineto
+408.69 37.32 lineto
+ closepath stroke
+newpath 111.75 13.68 moveto
+135.33 13.68 lineto
+135.33 37.32 lineto
+111.75 37.32 lineto
+ closepath stroke
+newpath 20.61 13.68 moveto
+44.25 13.68 lineto
+44.25 37.32 lineto
+20.61 37.32 lineto
+ closepath stroke
+newpath 105.03 23.82 moveto
+52.5961 23.82 lineto stroke
+newpath 66.38857 27.95784 moveto
+52.5961 23.82 lineto
+66.38857 19.68217 lineto
+ closepath fill
+newpath 66.38857 27.95784 moveto
+52.5961 23.82 lineto
+66.38857 19.68217 lineto
+ closepath stroke
+ 0.9 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 304.11 6.96 moveto
+304.11 44.1 lineto stroke
+ 0 0.9 dtransform truncate idtransform setlinewidth pop
+newpath 7.11 6.96 moveto
+634.83 6.96 lineto
+634.83 44.1 lineto
+7.11 44.1 lineto
+ closepath stroke
+ [5.76001 5.76 ] 2.88 setdash
+newpath 401.97 23.82 moveto
+349.536 23.82 lineto stroke
+newpath 363.3285 27.95786 moveto
+349.536 23.82 lineto
+363.3285 19.68216 lineto
+ closepath fill
+ [] 0 setdash
+newpath 363.3285 27.95786 moveto
+349.536 23.82 lineto
+363.3285 19.68216 lineto
+ closepath stroke
+newpath 418.83 128.46 moveto
+418.83 128.46 418.866 128.475 419.481 128.779 curveto
+420.096 129.084 421.3 129.685 423.128 130.633 curveto
+424.956 131.58 427.383 132.863 430.013 134.321 curveto
+432.644 135.779 435.45 137.396 438.077 139.017 curveto
+440.705 140.639 443.154 142.263 445.31 143.852 curveto
+447.466 145.44 449.338 146.997 450.955 148.567 curveto
+452.572 150.138 453.939 151.726 455.127 153.409 curveto
+456.316 155.093 457.327 156.877 458.23 158.81 curveto
+459.133 160.743 459.929 162.82 460.652 165.064 curveto
+461.376 167.308 462.026 169.719 462.622 172.273 curveto
+463.217 174.826 463.758 177.522 464.257 180.291 curveto
+464.756 183.06 465.213 185.9 465.642 188.713 curveto
+466.07 191.526 466.471 194.31 466.861 196.97 curveto
+467.25 199.629 467.628 202.163 468.013 204.507 curveto
+468.399 206.851 468.792 209.006 469.216 210.951 curveto
+469.64 212.896 470.094 214.633 470.61 216.18 curveto
+471.126 217.727 471.703 219.079 472.382 220.254 curveto
+473.06 221.429 473.841 222.432 474.765 223.311 curveto
+475.688 224.191 476.757 224.947 477.988 225.613 curveto
+479.219 226.28 480.618 226.856 482.118 227.354 curveto
+483.619 227.852 485.221 228.269 486.724 228.602 curveto
+488.226 228.934 489.611 229.18 490.655 229.345 curveto
+490.993 229.399 491.293 229.444 491.556 229.482 curveto stroke
+newpath 479.46297 221.6641 moveto
+479.67201 221.87738 lineto
+480.65941 222.86996 481.83391 223.82368 483.12753 224.73172 curveto
+484.42213 225.64001 485.83673 226.49977 487.18066 227.25063 curveto
+488.52391 228.00023 489.7798 228.63383 490.73236 229.09187 curveto
+491.04059 229.24072 491.31502 229.37003 491.556 229.482 curveto
+491.29317 229.52118 490.99289 229.56427 490.65363 229.6097 curveto
+489.60625 229.75163 488.20897 229.91402 486.67493 230.0276 curveto
+485.13962 230.14055 483.48537 230.20148 481.90457 230.15579 curveto
+480.32472 230.10982 478.8192 229.96011 477.44847 229.67499 curveto
+477.15654 229.612 lineto
+ closepath fill
+newpath 479.46297 221.6641 moveto
+479.67201 221.87738 lineto
+480.65941 222.86996 481.83391 223.82368 483.12753 224.73172 curveto
+484.42213 225.64001 485.83673 226.49977 487.18066 227.25063 curveto
+488.52391 228.00023 489.7798 228.63383 490.73236 229.09187 curveto
+491.04059 229.24072 491.31502 229.37003 491.556 229.482 curveto
+491.29317 229.52118 490.99289 229.56427 490.65363 229.6097 curveto
+489.60625 229.75163 488.20897 229.91402 486.67493 230.0276 curveto
+485.13962 230.14055 483.48537 230.20148 481.90457 230.15579 curveto
+480.32472 230.10982 478.8192 229.96011 477.44847 229.67499 curveto
+477.15654 229.612 lineto
+ closepath stroke
+newpath 493.11 236.46 moveto
+493.11 236.46 493.09 236.459 492.738 236.512 curveto
+492.387 236.564 491.699 236.671 490.655 236.878 curveto
+489.611 237.085 488.226 237.392 486.724 237.807 curveto
+485.221 238.223 483.619 238.745 482.118 239.367 curveto
+480.618 239.989 479.219 240.709 477.988 241.542 curveto
+476.757 242.375 475.688 243.32 474.765 244.418 curveto
+473.841 245.517 473.06 246.771 472.382 248.239 curveto
+471.703 249.708 471.126 251.397 470.61 253.33 curveto
+470.094 255.263 469.64 257.434 469.216 259.856 curveto
+468.792 262.278 468.399 264.953 468.013 267.847 curveto
+467.628 270.74 467.25 273.851 466.861 277.092 curveto
+466.471 280.333 466.07 283.701 465.642 287.07 curveto
+465.213 290.439 464.756 293.807 464.257 297.048 curveto
+463.758 300.289 463.217 303.4 462.622 306.293 curveto
+462.026 309.187 461.376 311.862 460.652 314.284 curveto
+459.929 316.706 459.133 318.877 458.23 320.81 curveto
+457.327 322.743 456.316 324.432 455.127 325.901 curveto
+453.939 327.369 452.572 328.623 450.955 329.722 curveto
+449.338 330.82 447.466 331.765 445.31 332.598 curveto
+443.154 333.431 440.705 334.151 438.077 334.773 curveto
+435.45 335.395 432.644 335.917 430.013 336.332 curveto
+427.383 336.748 424.956 337.055 423.128 337.262 curveto
+421.967 337.393 421.057 337.485 420.39 337.547 curveto stroke
+newpath 434.62881 339.69589 moveto
+433.04895 339.54253 431.46999 339.35408 429.95628 339.14844 curveto
+427.31766 338.79115 424.9048 338.3878 423.09442 338.06079 curveto
+421.94473 337.85266 421.04669 337.67928 420.39 337.547 curveto
+421.01105 337.29594 421.85623 336.94635 422.93063 336.48724 curveto
+424.62206 335.76369 426.85846 334.77223 429.25801 333.61804 curveto
+430.63493 332.95647 432.05688 332.24461 433.46027 331.50299 curveto
+ closepath fill
+newpath 434.62881 339.69589 moveto
+433.04895 339.54253 431.46999 339.35408 429.95628 339.14844 curveto
+427.31766 338.79115 424.9048 338.3878 423.09442 338.06079 curveto
+421.94473 337.85266 421.04669 337.67928 420.39 337.547 curveto
+421.01105 337.29594 421.85623 336.94635 422.93063 336.48724 curveto
+424.62206 335.76369 426.85846 334.77223 429.25801 333.61804 curveto
+430.63493 332.95647 432.05688 332.24461 433.46027 331.50299 curveto
+ closepath stroke
+newpath 493.11 141.96 moveto
+493.11 141.96 493.09 141.975 492.738 142.257 curveto
+492.387 142.539 491.699 143.094 490.655 143.952 curveto
+489.611 144.809 488.226 145.96 486.724 147.237 curveto
+485.221 148.515 483.619 149.906 482.118 151.258 curveto
+480.618 152.61 479.219 153.922 477.988 155.149 curveto
+476.757 156.377 475.688 157.524 474.765 158.619 curveto
+473.841 159.713 473.06 160.758 472.382 161.805 curveto
+471.703 162.852 471.126 163.905 470.61 165 curveto
+470.094 166.095 469.64 167.232 469.241 168.433 curveto
+468.842 169.635 468.5 170.9 468.221 172.229 curveto
+467.941 173.558 467.724 174.95 467.578 176.381 curveto
+467.432 177.812 467.357 179.281 467.357 180.751 curveto
+467.357 182.222 467.432 183.691 467.578 185.123 curveto
+467.724 186.554 467.941 187.946 468.221 189.276 curveto
+468.5 190.605 468.842 191.872 469.241 193.074 curveto
+469.64 194.276 470.094 195.413 470.61 196.51 curveto
+471.126 197.607 471.703 198.66 472.382 199.709 curveto
+473.06 200.757 473.841 201.804 474.765 202.9 curveto
+475.688 203.997 476.757 205.147 477.988 206.377 curveto
+479.219 207.607 480.618 208.922 482.118 210.278 curveto
+483.619 211.633 485.221 213.028 486.724 214.309 curveto
+488.226 215.59 489.611 216.743 490.655 217.603 curveto
+491.145 218.006 491.557 218.343 491.892 218.616 curveto stroke
+newpath 484.12837 206.48805 moveto
+484.38797 206.92706 484.6542 207.37177 484.92616 207.82106 curveto
+485.97452 209.55023 487.10808 211.34674 488.17958 213.00562 curveto
+489.25015 214.66418 490.2454 216.16653 490.99826 217.29027 curveto
+491.3518 217.81708 491.64958 218.25826 491.892 218.616 curveto
+491.49269 218.45079 491.00122 218.24637 490.41608 218.00117 curveto
+489.16899 217.47745 487.51108 216.77106 485.70433 215.97571 curveto
+483.89662 215.1806 481.96133 214.30478 480.13426 213.43825 curveto
+479.65988 213.21286 479.19281 212.98816 478.73442 212.76454 curveto
+ closepath fill
+newpath 484.12837 206.48805 moveto
+484.38797 206.92706 484.6542 207.37177 484.92616 207.82106 curveto
+485.97452 209.55023 487.10808 211.34674 488.17958 213.00562 curveto
+489.25015 214.66418 490.2454 216.16653 490.99826 217.29027 curveto
+491.3518 217.81708 491.64958 218.25826 491.892 218.616 curveto
+491.49269 218.45079 491.00122 218.24637 490.41608 218.00117 curveto
+489.16899 217.47745 487.51108 216.77106 485.70433 215.97571 curveto
+483.89662 215.1806 481.96133 214.30478 480.13426 213.43825 curveto
+479.65988 213.21286 479.19281 212.98816 478.73442 212.76454 curveto
+ closepath stroke
+newpath 418.83 138.6 moveto
+418.83 138.6 418.845 138.613 419.099 138.839 curveto
+419.352 139.065 419.847 139.509 420.59 140.189 curveto
+421.333 140.868 422.312 141.774 423.357 142.768 curveto
+424.402 143.761 425.501 144.831 426.504 145.851 curveto
+427.506 146.871 428.412 147.841 429.17 148.721 curveto
+429.928 149.601 430.541 150.394 431.015 151.117 curveto
+431.488 151.84 431.824 152.495 432.039 153.115 curveto
+432.255 153.734 432.35 154.32 432.35 154.9 curveto
+432.35 155.48 432.255 156.05 432.039 156.634 curveto
+431.824 157.218 431.488 157.817 431.015 158.462 curveto
+430.541 159.106 429.928 159.798 429.17 160.552 curveto
+428.412 161.307 427.506 162.126 426.504 162.98 curveto
+425.501 163.834 424.402 164.722 423.357 165.542 curveto
+422.312 166.363 421.333 167.107 420.59 167.663 curveto
+420.41 167.798 420.244 167.922 420.093 168.034 curveto stroke
+newpath 433.20407 162.07916 moveto
+432.58371 162.53545 431.83084 162.9977 430.93715 163.47586 curveto
+429.99417 163.9812 428.89102 164.50534 427.6859 165.03537 curveto
+426.4798 165.56516 425.17198 166.09988 423.93541 166.58504 curveto
+422.69858 167.07112 421.54707 167.5024 420.67564 167.82144 curveto
+420.46445 167.89905 420.26982 167.97012 420.093 168.034 curveto
+420.20546 167.88333 420.32883 167.71686 420.46242 167.53583 curveto
+421.01433 166.78978 421.73825 165.79585 422.50325 164.70918 curveto
+423.26854 163.62347 424.06604 162.45712 424.78133 161.35092 curveto
+425.49567 160.24503 426.12811 159.20023 426.63719 158.25925 curveto
+427.12009 157.36809 427.49417 156.56776 427.76093 155.84534 curveto
+ closepath fill
+newpath 433.20407 162.07916 moveto
+432.58371 162.53545 431.83084 162.9977 430.93715 163.47586 curveto
+429.99417 163.9812 428.89102 164.50534 427.6859 165.03537 curveto
+426.4798 165.56516 425.17198 166.09988 423.93541 166.58504 curveto
+422.69858 167.07112 421.54707 167.5024 420.67564 167.82144 curveto
+420.46445 167.89905 420.26982 167.97012 420.093 168.034 curveto
+420.20546 167.88333 420.32883 167.71686 420.46242 167.53583 curveto
+421.01433 166.78978 421.73825 165.79585 422.50325 164.70918 curveto
+423.26854 163.62347 424.06604 162.45712 424.78133 161.35092 curveto
+425.49567 160.24503 426.12811 159.20023 426.63719 158.25925 curveto
+427.12009 157.36809 427.49417 156.56776 427.76093 155.84534 curveto
+ closepath stroke
+newpath 304.11 87.96 moveto
+304.11 87.96 304.1 87.9699 303.924 88.1698 curveto
+303.749 88.3697 303.405 88.7638 302.883 89.3824 curveto
+302.361 90.0009 301.668 90.8368 300.917 91.7818 curveto
+300.166 92.7268 299.364 93.7714 298.614 94.8118 curveto
+297.864 95.8521 297.165 96.8877 296.549 97.8918 curveto
+295.933 98.8959 295.399 99.8711 294.937 100.845 curveto
+294.476 101.82 294.085 102.795 293.746 103.819 curveto
+293.407 104.844 293.118 105.92 292.86 107.08 curveto
+292.602 108.24 292.375 109.479 292.176 110.818 curveto
+291.976 112.157 291.805 113.594 291.665 115.122 curveto
+291.525 116.65 291.417 118.269 291.344 119.942 curveto
+291.271 121.615 291.234 123.342 291.234 125.07 curveto
+291.234 126.798 291.271 128.525 291.344 130.198 curveto
+291.417 131.871 291.525 133.49 291.665 135.018 curveto
+291.805 136.546 291.976 137.983 292.176 139.322 curveto
+292.375 140.661 292.602 141.9 292.86 143.06 curveto
+293.118 144.22 293.407 145.296 293.746 146.321 curveto
+294.085 147.345 294.476 148.32 294.937 149.295 curveto
+295.399 150.269 295.933 151.244 296.549 152.248 curveto
+297.165 153.252 297.864 154.288 298.614 155.328 curveto
+299.364 156.369 300.166 157.413 300.917 158.358 curveto
+301.668 159.303 302.361 160.139 302.883 160.758 curveto
+302.953 160.841 303.021 160.921 303.085 160.996 curveto stroke
+newpath 298.62187 147.30513 moveto
+298.64296 147.44714 lineto
+298.8056 148.5128 299.03691 149.60014 299.33842 150.7388 curveto
+299.63994 151.87746 300.01176 153.07063 300.43129 154.28229 curveto
+300.85052 155.4949 301.3187 156.72531 301.76648 157.84627 curveto
+302.21426 158.96721 302.63779 159.9671 302.9599 160.70999 curveto
+303.00311 160.8096 303.04524 160.90578 303.085 160.996 curveto
+303.00215 160.94255 302.91403 160.88547 302.82312 160.82608 curveto
+302.14526 160.38321 301.24127 159.78157 300.2504 159.09224 curveto
+299.25952 158.4029 298.19135 157.63339 297.17384 156.8518 curveto
+296.15663 156.07118 295.1894 155.27974 294.3109 154.49509 curveto
+293.43236 153.71046 292.64072 152.93001 291.91832 152.12985 curveto
+291.82253 152.0229 lineto
+ closepath fill
+newpath 298.62187 147.30513 moveto
+298.64296 147.44714 lineto
+298.8056 148.5128 299.03691 149.60014 299.33842 150.7388 curveto
+299.63994 151.87746 300.01176 153.07063 300.43129 154.28229 curveto
+300.85052 155.4949 301.3187 156.72531 301.76648 157.84627 curveto
+302.21426 158.96721 302.63779 159.9671 302.9599 160.70999 curveto
+303.00311 160.8096 303.04524 160.90578 303.085 160.996 curveto
+303.00215 160.94255 302.91403 160.88547 302.82312 160.82608 curveto
+302.14526 160.38321 301.24127 159.78157 300.2504 159.09224 curveto
+299.25952 158.4029 298.19135 157.63339 297.17384 156.8518 curveto
+296.15663 156.07118 295.1894 155.27974 294.3109 154.49509 curveto
+293.43236 153.71046 292.64072 152.93001 291.91832 152.12985 curveto
+291.82253 152.0229 lineto
+ closepath stroke
+newpath 229.83 87.96 moveto
+229.83 87.96 229.84 87.9698 230.016 88.1767 curveto
+230.191 88.3836 230.535 88.792 231.057 89.4381 curveto
+231.579 90.0842 232.272 90.9611 233.023 91.9615 curveto
+233.774 92.9619 234.576 94.0761 235.326 95.1994 curveto
+236.076 96.3227 236.775 97.4545 237.391 98.5696 curveto
+238.007 99.6848 238.541 100.786 239.003 101.907 curveto
+239.464 103.028 239.855 104.17 240.194 105.39 curveto
+240.533 106.61 240.822 107.913 241.08 109.33 curveto
+241.338 110.747 241.565 112.277 241.79 113.936 curveto
+242.014 115.595 242.236 117.385 242.482 119.29 curveto
+242.728 121.194 242.997 123.213 243.313 125.296 curveto
+243.63 127.38 243.993 129.526 244.422 131.665 curveto
+244.851 133.803 245.345 135.931 245.917 137.978 curveto
+246.489 140.026 247.138 141.99 247.874 143.825 curveto
+248.609 145.66 249.431 147.364 250.353 148.925 curveto
+251.276 150.485 252.299 151.901 253.46 153.19 curveto
+254.621 154.479 255.921 155.637 257.449 156.689 curveto
+258.976 157.74 260.734 158.688 262.812 159.579 curveto
+264.891 160.47 267.297 161.305 270.069 162.114 curveto
+272.84 162.923 275.989 163.706 279.367 164.456 curveto
+282.744 165.206 286.352 165.921 289.734 166.548 curveto
+293.115 167.175 296.234 167.707 298.584 168.093 curveto
+300.363 168.385 301.682 168.592 302.561 168.727 curveto stroke
+newpath 289.66641 162.31659 moveto
+290.08072 162.53143 290.49263 162.74405 290.90112 162.95403 curveto
+293.95937 164.52612 296.79395 165.93193 298.93391 166.97693 curveto
+300.55399 167.7678 301.75789 168.34511 302.561 168.727 curveto
+301.68028 168.85027 300.35742 169.03102 298.56953 169.26254 curveto
+296.20773 169.5681 293.06743 169.9548 289.64883 170.32579 curveto
+289.19221 170.37537 288.7313 170.42459 288.26715 170.4733 curveto
+ closepath fill
+newpath 289.66641 162.31659 moveto
+290.08072 162.53143 290.49263 162.74405 290.90112 162.95403 curveto
+293.95937 164.52612 296.79395 165.93193 298.93391 166.97693 curveto
+300.55399 167.7678 301.75789 168.34511 302.561 168.727 curveto
+301.68028 168.85027 300.35742 169.03102 298.56953 169.26254 curveto
+296.20773 169.5681 293.06743 169.9548 289.64883 170.32579 curveto
+289.19221 170.37537 288.7313 170.42459 288.26715 170.4733 curveto
+ closepath stroke
+newpath 229.83 141.96 moveto
+229.83 141.96 229.84 141.97 230.016 142.16 curveto
+230.191 142.349 230.535 142.722 231.057 143.299 curveto
+231.579 143.876 232.272 144.651 233.023 145.513 curveto
+233.774 146.375 234.576 147.315 235.326 148.231 curveto
+236.076 149.147 236.775 150.039 237.391 150.877 curveto
+238.007 151.714 238.541 152.501 239.003 153.256 curveto
+239.464 154.01 239.855 154.735 240.194 155.466 curveto
+240.533 156.197 240.822 156.937 241.08 157.71 curveto
+241.338 158.483 241.565 159.29 241.79 160.14 curveto
+242.014 160.99 242.236 161.884 242.482 162.815 curveto
+242.728 163.746 242.997 164.713 243.313 165.695 curveto
+243.63 166.676 243.993 167.671 244.422 168.648 curveto
+244.851 169.625 245.345 170.583 245.917 171.491 curveto
+246.489 172.4 247.138 173.259 247.874 174.05 curveto
+248.609 174.841 249.431 175.564 250.353 176.215 curveto
+251.276 176.865 252.299 177.444 253.46 177.96 curveto
+254.621 178.476 255.921 178.926 257.449 179.318 curveto
+258.976 179.71 260.734 180.044 262.812 180.337 curveto
+264.891 180.63 267.297 180.882 270.069 181.104 curveto
+272.84 181.327 275.989 181.519 279.367 181.685 curveto
+282.744 181.851 286.352 181.99 289.734 182.101 curveto
+293.115 182.211 296.234 182.293 298.584 182.349 curveto
+300.351 182.39 301.665 182.416 302.544 182.433 curveto stroke
+newpath 288.86705 177.9273 moveto
+289.37183 178.09805 289.87325 178.26712 290.36966 178.434 curveto
+293.57648 179.51091 296.54034 180.4857 298.77515 181.21461 curveto
+300.45584 181.76164 301.70695 182.16412 302.544 182.433 curveto
+301.69719 182.66931 300.43112 183.02199 298.72687 183.49046 curveto
+296.4599 184.1121 293.44888 184.92982 290.17886 185.796 curveto
+289.67256 185.92996 289.16089 186.06482 288.64546 186.20013 curveto
+ closepath fill
+newpath 288.86705 177.9273 moveto
+289.37183 178.09805 289.87325 178.26712 290.36966 178.434 curveto
+293.57648 179.51091 296.54034 180.4857 298.77515 181.21461 curveto
+300.45584 181.76164 301.70695 182.16412 302.544 182.433 curveto
+301.69719 182.66931 300.43112 183.02199 298.72687 183.49046 curveto
+296.4599 184.1121 293.44888 184.92982 290.17886 185.796 curveto
+289.67256 185.92996 289.16089 186.06482 288.64546 186.20013 curveto
+ closepath stroke
+ [5.76001 5.76 ] 2.88 setdash
+newpath 115.11 87.96 moveto
+115.11 87.96 115.095 87.9688 114.832 88.254 curveto
+114.569 88.5392 114.053 89.1087 113.272 90.0655 curveto
+112.49 91.0222 111.452 92.3598 110.327 93.984 curveto
+109.202 95.6081 108.002 97.5053 106.879 99.562 curveto
+105.755 101.619 104.707 103.832 103.785 106.197 curveto
+102.863 108.562 102.063 111.082 101.371 113.851 curveto
+100.68 116.621 100.095 119.646 99.5869 123.07 curveto
+99.0786 126.494 98.6462 130.331 98.26 134.65 curveto
+97.8739 138.969 97.5334 143.756 97.2348 149.053 curveto
+96.9363 154.35 96.68 160.16 96.4705 166.416 curveto
+96.261 172.673 96.0986 179.376 95.9894 186.345 curveto
+95.8801 193.314 95.8241 200.546 95.8241 207.78 curveto
+95.8241 215.014 95.8801 222.246 95.9894 229.215 curveto
+96.0986 236.184 96.261 242.887 96.4705 249.144 curveto
+96.68 255.4 96.9363 261.21 97.2348 266.507 curveto
+97.5334 271.804 97.8739 276.591 98.26 280.91 curveto
+98.6462 285.229 99.0786 289.066 99.5869 292.49 curveto
+100.095 295.914 100.68 298.939 101.371 301.709 curveto
+102.063 304.478 102.863 306.998 103.785 309.363 curveto
+104.707 311.728 105.755 313.941 106.879 315.998 curveto
+108.002 318.055 109.202 319.952 110.327 321.576 curveto
+111.452 323.2 112.49 324.538 113.272 325.495 curveto
+113.574 325.865 113.837 326.177 114.061 326.438 curveto stroke
+newpath 109.84726 312.66827 moveto
+109.9513 313.24449 110.06305 313.81334 110.18187 314.37453 curveto
+110.66643 316.66748 111.27069 318.82928 111.88159 320.70808 curveto
+112.49248 322.58685 113.10223 324.1667 113.57626 325.30804 curveto
+113.7592 325.74924 113.92145 326.12364 114.061 326.438 curveto
+113.77145 326.25237 113.42989 326.02911 113.0343 325.76147 curveto
+112.01028 325.06956 110.63158 324.08627 109.08737 322.85405 curveto
+107.54315 321.6218 105.84865 320.14963 104.18193 318.50209 curveto
+103.7738 318.09898 103.36737 317.6856 102.96332 317.26181 curveto
+ closepath fill
+ [] 0 setdash
+newpath 109.84726 312.66827 moveto
+109.9513 313.24449 110.06305 313.81334 110.18187 314.37453 curveto
+110.66643 316.66748 111.27069 318.82928 111.88159 320.70808 curveto
+112.49248 322.58685 113.10223 324.1667 113.57626 325.30804 curveto
+113.7592 325.74924 113.92145 326.12364 114.061 326.438 curveto
+113.77145 326.25237 113.42989 326.02911 113.0343 325.76147 curveto
+112.01028 325.06956 110.63158 324.08627 109.08737 322.85405 curveto
+107.54315 321.6218 105.84865 320.14963 104.18193 318.50209 curveto
+103.7738 318.09898 103.36737 317.6856 102.96332 317.26181 curveto
+ closepath stroke
+ [5.76001 5.76 ] 2.88 setdash
+newpath 229.83 297.18 moveto
+229.83 297.18 229.84 297.185 230.019 297.277 curveto
+230.198 297.368 230.55 297.548 231.085 297.824 curveto
+231.621 298.1 232.335 298.468 233.113 298.873 curveto
+233.892 299.278 234.729 299.715 235.52 300.133 curveto
+236.312 300.551 237.06 300.95 237.731 301.315 curveto
+238.403 301.679 239 302.01 239.536 302.315 curveto
+240.071 302.62 240.545 302.899 240.983 303.167 curveto
+241.421 303.435 241.823 303.692 242.21 303.95 curveto
+242.597 304.208 242.97 304.466 243.336 304.732 curveto
+243.702 304.997 244.062 305.27 244.415 305.552 curveto
+244.768 305.833 245.114 306.124 245.448 306.42 curveto
+245.782 306.716 246.105 307.018 246.408 307.32 curveto
+246.712 307.622 246.997 307.924 247.258 308.22 curveto
+247.519 308.516 247.757 308.807 247.97 309.088 curveto
+248.183 309.37 248.371 309.643 248.538 309.908 curveto
+248.705 310.174 248.851 310.432 248.98 310.69 curveto
+249.109 310.948 249.224 311.206 249.324 311.472 curveto
+249.424 311.738 249.51 312.012 249.58 312.295 curveto
+249.65 312.577 249.705 312.869 249.741 313.166 curveto
+249.778 313.463 249.797 313.767 249.797 314.07 curveto
+249.797 314.373 249.778 314.677 249.741 314.974 curveto
+249.705 315.271 249.65 315.563 249.58 315.845 curveto
+249.51 316.128 249.424 316.402 249.324 316.668 curveto
+249.224 316.934 249.109 317.192 248.98 317.45 curveto
+248.851 317.708 248.705 317.966 248.538 318.232 curveto
+248.371 318.497 248.183 318.77 247.97 319.052 curveto
+247.757 319.333 247.519 319.624 247.258 319.92 curveto
+246.997 320.216 246.712 320.518 246.408 320.82 curveto
+246.105 321.122 245.782 321.424 245.448 321.72 curveto
+245.114 322.016 244.768 322.307 244.415 322.588 curveto
+244.062 322.87 243.702 323.143 243.336 323.408 curveto
+242.97 323.674 242.597 323.932 242.21 324.19 curveto
+241.823 324.448 241.421 324.705 240.983 324.973 curveto
+240.545 325.241 240.071 325.52 239.536 325.825 curveto
+239 326.13 238.403 326.461 237.731 326.825 curveto
+237.06 327.19 236.312 327.589 235.52 328.007 curveto
+234.729 328.425 233.892 328.862 233.113 329.267 curveto
+232.4 329.638 231.741 329.978 231.223 330.245 curveto stroke
+newpath 245.25511 327.01067 moveto
+244.78976 327.17706 lineto
+244.36276 327.32666 243.93135 327.46661 243.48656 327.60252 curveto
+243.04173 327.73843 242.58284 327.8691 242.08629 327.99992 curveto
+241.58975 328.13075 241.05557 328.26178 240.45549 328.40018 curveto
+239.85445 328.5383 239.18753 328.68379 238.43927 328.83934 curveto
+237.6917 328.99612 236.86058 329.16336 235.98187 329.33615 curveto
+235.10411 329.50922 234.17685 329.68727 233.31433 329.85133 curveto
+232.52478 330.00182 231.79587 330.1381 231.223 330.245 curveto
+231.64243 329.84041 232.17593 329.3254 232.75226 328.76515 curveto
+233.38202 328.1534 234.05815 327.4943 234.69568 326.86664 curveto
+235.33415 326.23868 235.93596 325.64157 236.47379 325.09914 curveto
+237.01285 324.55739 237.48955 324.06882 237.9153 323.62265 curveto
+238.34009 323.17679 238.71393 322.77333 239.05644 322.3908 curveto
+239.39897 322.00822 239.71016 321.64655 240.0067 321.28822 curveto
+240.30324 320.9299 240.58636 320.57559 240.8605 320.21564 curveto
+241.1574 319.82057 lineto
+ closepath fill
+ [] 0 setdash
+newpath 245.25511 327.01067 moveto
+244.78976 327.17706 lineto
+244.36276 327.32666 243.93135 327.46661 243.48656 327.60252 curveto
+243.04173 327.73843 242.58284 327.8691 242.08629 327.99992 curveto
+241.58975 328.13075 241.05557 328.26178 240.45549 328.40018 curveto
+239.85445 328.5383 239.18753 328.68379 238.43927 328.83934 curveto
+237.6917 328.99612 236.86058 329.16336 235.98187 329.33615 curveto
+235.10411 329.50922 234.17685 329.68727 233.31433 329.85133 curveto
+232.52478 330.00182 231.79587 330.1381 231.223 330.245 curveto
+231.64243 329.84041 232.17593 329.3254 232.75226 328.76515 curveto
+233.38202 328.1534 234.05815 327.4943 234.69568 326.86664 curveto
+235.33415 326.23868 235.93596 325.64157 236.47379 325.09914 curveto
+237.01285 324.55739 237.48955 324.06882 237.9153 323.62265 curveto
+238.34009 323.17679 238.71393 322.77333 239.05644 322.3908 curveto
+239.39897 322.00822 239.71016 321.64655 240.0067 321.28822 curveto
+240.30324 320.9299 240.58636 320.57559 240.8605 320.21564 curveto
+241.1574 319.82057 lineto
+ closepath stroke
+ [5.76001 5.76 ] 2.88 setdash
+newpath 223.11 141.96 moveto
+223.11 141.96 223.12 141.985 223.296 142.458 curveto
+223.471 142.932 223.815 143.863 224.337 145.304 curveto
+224.859 146.746 225.552 148.681 226.303 150.834 curveto
+227.054 152.988 227.856 155.337 228.606 157.626 curveto
+229.356 159.914 230.055 162.142 230.671 164.235 curveto
+231.287 166.328 231.821 168.293 232.283 170.179 curveto
+232.744 172.064 233.135 173.876 233.474 175.702 curveto
+233.813 177.529 234.102 179.377 234.36 181.31 curveto
+234.618 183.243 234.845 185.258 235.044 187.392 curveto
+235.244 189.526 235.415 191.779 235.555 194.144 curveto
+235.695 196.51 235.803 198.987 235.876 201.529 curveto
+235.949 204.071 235.986 206.677 235.986 209.275 curveto
+235.986 211.872 235.949 214.46 235.876 216.966 curveto
+235.803 219.472 235.695 221.895 235.555 224.19 curveto
+235.415 226.486 235.244 228.654 235.044 230.689 curveto
+234.845 232.723 234.618 234.625 234.36 236.43 curveto
+234.102 238.235 233.813 239.939 233.474 241.597 curveto
+233.135 243.254 232.744 244.871 232.283 246.527 curveto
+231.821 248.183 231.287 249.882 230.671 251.669 curveto
+230.055 253.456 229.356 255.335 228.606 257.25 curveto
+227.856 259.165 227.054 261.116 226.303 262.895 curveto
+225.552 264.674 224.859 266.265 224.337 267.447 curveto
+224.11 267.961 223.917 268.395 223.756 268.754 curveto stroke
+newpath 232.88097 257.61429 moveto
+232.49646 258.11629 232.10472 258.6216 231.70717 259.12885 curveto
+230.43852 260.74756 229.10971 262.38582 227.87918 263.874 curveto
+226.64867 265.36215 225.5277 266.68694 224.68806 267.6691 curveto
+224.32295 268.09618 224.01338 268.4564 223.756 268.754 curveto
+223.80705 268.36388 223.8672 267.89272 223.93694 267.33517 curveto
+224.09724 266.05302 224.30385 264.32999 224.51196 262.41022 curveto
+224.7201 260.49043 224.92766 258.39127 225.09575 256.34152 curveto
+225.14842 255.6992 225.1973 255.06169 225.24196 254.43094 curveto
+ closepath fill
+ [] 0 setdash
+newpath 232.88097 257.61429 moveto
+232.49646 258.11629 232.10472 258.6216 231.70717 259.12885 curveto
+230.43852 260.74756 229.10971 262.38582 227.87918 263.874 curveto
+226.64867 265.36215 225.5277 266.68694 224.68806 267.6691 curveto
+224.32295 268.09618 224.01338 268.4564 223.756 268.754 curveto
+223.80705 268.36388 223.8672 267.89272 223.93694 267.33517 curveto
+224.09724 266.05302 224.30385 264.32999 224.51196 262.41022 curveto
+224.7201 260.49043 224.92766 258.39127 225.09575 256.34152 curveto
+225.14842 255.6992 225.1973 255.06169 225.24196 254.43094 curveto
+ closepath stroke
+ [5.76001 5.76 ] 2.88 setdash
+newpath 418.83 195.96 moveto
+418.83 195.96 418.845 195.975 419.109 196.255 curveto
+419.373 196.536 419.89 197.087 420.674 197.938 curveto
+421.458 198.789 422.499 199.929 423.627 201.192 curveto
+424.755 202.456 425.959 203.83 427.086 205.161 curveto
+428.213 206.493 429.264 207.781 430.188 208.981 curveto
+431.113 210.181 431.916 211.296 432.609 212.355 curveto
+433.303 213.413 433.889 214.416 434.399 215.414 curveto
+434.909 216.413 435.343 217.409 435.73 218.44 curveto
+436.117 219.471 436.459 220.536 436.758 221.657 curveto
+437.058 222.777 437.315 223.954 437.525 225.187 curveto
+437.735 226.42 437.898 227.708 438.007 229.031 curveto
+438.117 230.355 438.173 231.712 438.173 233.07 curveto
+438.173 234.428 438.117 235.786 438.007 237.109 curveto
+437.898 238.432 437.735 239.72 437.525 240.953 curveto
+437.315 242.186 437.058 243.363 436.758 244.483 curveto
+436.459 245.604 436.117 246.669 435.73 247.7 curveto
+435.343 248.731 434.909 249.727 434.399 250.726 curveto
+433.889 251.724 433.303 252.727 432.609 253.785 curveto
+431.916 254.844 431.113 255.959 430.188 257.159 curveto
+429.264 258.359 428.213 259.647 427.086 260.979 curveto
+425.959 262.31 424.755 263.684 423.627 264.948 curveto
+422.499 266.211 421.458 267.351 420.674 268.202 curveto
+420.378 268.523 420.121 268.8 419.901 269.037 curveto stroke
+newpath 432.0931 261.37457 moveto
+431.1541 262.02696 430.1483 262.7 429.09846 263.38348 curveto
+427.63654 264.33449 426.0885 265.3046 424.64484 266.19113 curveto
+423.20148 267.07672 421.8768 267.8695 420.88133 268.45934 curveto
+420.5056 268.68175 420.17982 268.87321 419.901 269.037 curveto
+420.04362 268.74678 420.21019 268.40761 420.40144 268.01509 curveto
+420.90784 266.9747 421.57736 265.58365 422.29486 264.04977 curveto
+423.01208 262.51495 423.77048 260.85292 424.46748 259.25421 curveto
+424.9677 258.1057 425.4369 256.99016 425.86171 255.92862 curveto
+ closepath fill
+ [] 0 setdash
+newpath 432.0931 261.37457 moveto
+431.1541 262.02696 430.1483 262.7 429.09846 263.38348 curveto
+427.63654 264.33449 426.0885 265.3046 424.64484 266.19113 curveto
+423.20148 267.07672 421.8768 267.8695 420.88133 268.45934 curveto
+420.5056 268.68175 420.17982 268.87321 419.901 269.037 curveto
+420.04362 268.74678 420.21019 268.40761 420.40144 268.01509 curveto
+420.90784 266.9747 421.57736 265.58365 422.29486 264.04977 curveto
+423.01208 262.51495 423.77048 260.85292 424.46748 259.25421 curveto
+424.9677 258.1057 425.4369 256.99016 425.86171 255.92862 curveto
+ closepath stroke
+ [5.76001 5.76 ] 2.88 setdash
+newpath 418.83 189.18 moveto
+418.83 189.18 418.855 189.189 419.295 189.424 curveto
+419.734 189.659 420.595 190.125 421.901 190.881 curveto
+423.207 191.638 424.941 192.679 426.82 193.901 curveto
+428.699 195.124 430.704 196.516 432.582 197.972 curveto
+434.459 199.427 436.209 200.944 437.749 202.504 curveto
+439.29 204.064 440.627 205.67 441.782 207.377 curveto
+442.937 209.085 443.914 210.897 444.763 212.901 curveto
+445.612 214.906 446.335 217.11 446.98 219.56 curveto
+447.625 222.01 448.194 224.698 448.693 227.654 curveto
+449.191 230.609 449.62 233.832 449.97 237.291 curveto
+450.32 240.751 450.591 244.446 450.773 248.282 curveto
+450.956 252.118 451.05 256.093 451.05 260.07 curveto
+451.05 264.047 450.956 268.022 450.773 271.858 curveto
+450.591 275.694 450.32 279.389 449.97 282.849 curveto
+449.62 286.308 449.191 289.531 448.693 292.486 curveto
+448.194 295.442 447.625 298.13 446.98 300.58 curveto
+446.335 303.03 445.612 305.234 444.763 307.239 curveto
+443.914 309.243 442.937 311.055 441.782 312.763 curveto
+440.627 314.47 439.29 316.076 437.749 317.636 curveto
+436.209 319.196 434.459 320.713 432.582 322.168 curveto
+430.704 323.624 428.699 325.016 426.82 326.239 curveto
+424.941 327.461 423.207 328.502 421.901 329.259 curveto
+421.216 329.656 420.653 329.973 420.209 330.218 curveto stroke
+newpath 434.03491 326.19238 moveto
+431.92102 326.99442 429.72655 327.7071 427.68457 328.3065 curveto
+425.53366 328.93703 423.57367 329.43585 422.10521 329.78566 curveto
+421.33504 329.96907 420.70468 330.11092 420.209 330.218 curveto
+420.56387 329.85576 421.01204 329.39034 421.55406 328.81325 curveto
+422.58746 327.71289 423.94919 326.21751 425.3978 324.50713 curveto
+426.7726 322.88264 428.21237 321.07968 429.53568 319.24646 curveto
+ closepath fill
+ [] 0 setdash
+newpath 434.03491 326.19238 moveto
+431.92102 326.99442 429.72655 327.7071 427.68457 328.3065 curveto
+425.53366 328.93703 423.57367 329.43585 422.10521 329.78566 curveto
+421.33504 329.96907 420.70468 330.11092 420.209 330.218 curveto
+420.56387 329.85576 421.01204 329.39034 421.55406 328.81325 curveto
+422.58746 327.71289 423.94919 326.21751 425.3978 324.50713 curveto
+426.7726 322.88264 428.21237 321.07968 429.53568 319.24646 curveto
+ closepath stroke
+ [5.76001 5.76 ] 2.88 setdash
+newpath 607.83 141.96 moveto
+607.83 141.96 607.84 141.97 608.016 142.197 curveto
+608.191 142.425 608.535 142.876 609.057 143.605 curveto
+609.579 144.334 610.272 145.334 611.023 146.501 curveto
+611.774 147.667 612.576 148.99 613.326 150.362 curveto
+614.076 151.735 614.775 153.155 615.391 154.603 curveto
+616.007 156.051 616.541 157.531 617.003 159.091 curveto
+617.464 160.651 617.855 162.296 618.194 164.103 curveto
+618.533 165.911 618.822 167.889 619.08 170.08 curveto
+619.338 172.271 619.565 174.669 619.764 177.3 curveto
+619.964 179.93 620.135 182.795 620.275 185.867 curveto
+620.415 188.938 620.523 192.217 620.596 195.619 curveto
+620.669 199.021 620.706 202.545 620.706 206.07 curveto
+620.706 209.595 620.669 213.119 620.596 216.521 curveto
+620.523 219.923 620.415 223.202 620.275 226.273 curveto
+620.135 229.345 619.964 232.21 619.764 234.84 curveto
+619.565 237.471 619.338 239.869 619.08 242.06 curveto
+618.822 244.251 618.533 246.229 618.194 248.037 curveto
+617.855 249.844 617.464 251.489 617.003 253.049 curveto
+616.541 254.609 616.007 256.089 615.391 257.537 curveto
+614.775 258.985 614.076 260.405 613.326 261.778 curveto
+612.576 263.15 611.774 264.473 611.023 265.639 curveto
+610.272 266.806 609.579 267.806 609.057 268.535 curveto
+608.956 268.677 608.861 268.808 608.773 268.929 curveto stroke
+newpath 619.16159 258.95723 moveto
+618.90733 259.2821 618.64874 259.6025 618.38542 259.91916 curveto
+617.37929 261.12909 616.30174 262.28833 615.18884 263.38791 curveto
+614.07622 264.48653 612.92787 265.52328 611.87349 266.42432 curveto
+610.81883 267.32628 609.86769 268.08498 609.15825 268.63324 curveto
+609.02069 268.74022 608.89206 268.83838 608.773 268.929 curveto
+608.82251 268.78781 608.87585 268.63506 608.93181 268.47 curveto
+609.2223 267.62175 609.59874 266.4648 609.98271 265.13123 curveto
+610.36699 263.79858 610.75499 262.30092 611.0791 260.77127 curveto
+611.40294 259.24066 611.66441 257.67969 611.83836 256.11575 curveto
+611.88388 255.7064 611.92339 255.2966 611.95682 254.88542 curveto
+ closepath fill
+ [] 0 setdash
+newpath 619.16159 258.95723 moveto
+618.90733 259.2821 618.64874 259.6025 618.38542 259.91916 curveto
+617.37929 261.12909 616.30174 262.28833 615.18884 263.38791 curveto
+614.07622 264.48653 612.92787 265.52328 611.87349 266.42432 curveto
+610.81883 267.32628 609.86769 268.08498 609.15825 268.63324 curveto
+609.02069 268.74022 608.89206 268.83838 608.773 268.929 curveto
+608.82251 268.78781 608.87585 268.63506 608.93181 268.47 curveto
+609.2223 267.62175 609.59874 266.4648 609.98271 265.13123 curveto
+610.36699 263.79858 610.75499 262.30092 611.0791 260.77127 curveto
+611.40294 259.24066 611.66441 257.67969 611.83836 256.11575 curveto
+611.88388 255.7064 611.92339 255.2966 611.95682 254.88542 curveto
+ closepath stroke
+ [5.76001 5.76 ] 2.88 setdash
+newpath 607.83 135.18 moveto
+607.83 135.18 607.85 135.189 608.202 135.448 curveto
+608.553 135.707 609.241 136.223 610.285 137.076 curveto
+611.329 137.93 612.714 139.114 614.216 140.53 curveto
+615.719 141.946 617.321 143.582 618.822 145.328 curveto
+620.322 147.073 621.721 148.926 622.952 150.875 curveto
+624.183 152.823 625.252 154.87 626.175 157.09 curveto
+627.099 159.31 627.88 161.707 628.558 164.397 curveto
+629.237 167.086 629.814 170.078 630.33 173.43 curveto
+630.846 176.782 631.3 180.483 631.699 184.568 curveto
+632.098 188.654 632.44 193.125 632.719 197.934 curveto
+632.999 202.743 633.216 207.889 633.362 213.237 curveto
+633.508 218.585 633.583 224.131 633.583 229.68 curveto
+633.583 235.229 633.508 240.775 633.362 246.123 curveto
+633.216 251.471 632.999 256.617 632.719 261.426 curveto
+632.44 266.235 632.098 270.706 631.699 274.792 curveto
+631.3 278.877 630.846 282.578 630.33 285.93 curveto
+629.814 289.282 629.237 292.274 628.558 294.963 curveto
+627.88 297.653 627.099 300.05 626.175 302.27 curveto
+625.252 304.49 624.183 306.537 622.952 308.485 curveto
+621.721 310.434 620.322 312.287 618.822 314.032 curveto
+617.321 315.778 615.719 317.414 614.216 318.83 curveto
+612.714 320.246 611.329 321.43 610.285 322.284 curveto
+609.812 322.67 609.413 322.987 609.084 323.242 curveto stroke
+newpath 621.89705 316.67044 moveto
+621.61884 316.856 621.33902 317.03873 621.05783 317.21867 curveto
+619.11841 318.45973 617.11386 319.56639 615.26736 320.49078 curveto
+613.42183 321.41545 611.755 322.15152 610.50963 322.66951 curveto
+609.94566 322.90332 609.4724 323.0923 609.084 323.242 curveto
+609.32585 322.90321 609.61693 322.48492 609.95906 321.9793 curveto
+610.71362 320.8613 611.7 319.32927 612.73175 317.54138 curveto
+613.76447 315.75322 614.8288 313.72588 615.76477 311.62218 curveto
+615.90048 311.31717 616.03348 311.01057 616.16362 310.70251 curveto
+ closepath fill
+ [] 0 setdash
+newpath 621.89705 316.67044 moveto
+621.61884 316.856 621.33902 317.03873 621.05783 317.21867 curveto
+619.11841 318.45973 617.11386 319.56639 615.26736 320.49078 curveto
+613.42183 321.41545 611.755 322.15152 610.50963 322.66951 curveto
+609.94566 322.90332 609.4724 323.0923 609.084 323.242 curveto
+609.32585 322.90321 609.61693 322.48492 609.95906 321.9793 curveto
+610.71362 320.8613 611.7 319.32927 612.73175 317.54138 curveto
+613.76447 315.75322 614.8288 313.72588 615.76477 311.62218 curveto
+615.90048 311.31717 616.03348 311.01057 616.16362 310.70251 curveto
+ closepath stroke
+128.61 337.68 moveto
+(OpenSSL) ptmr8r 10.9988 fshow
+174.1335 337.68 moveto
+(library) ptmr8r 10.9988 fshow
+128.61 283.68 moveto
+(Net-SNMP) ptmr8r 10.9988 fshow
+180.8535 283.68 moveto
+(library) ptmr8r 10.9988 fshow
+351.33 337.68 moveto
+(zlib) ptmr8r 10.9988 fshow
+331.11 283.68 moveto
+(bzip2) ptmr8r 10.9988 fshow
+358.2987 283.68 moveto
+(library) ptmr8r 10.9988 fshow
+513.33 337.68 moveto
+(NetPBM) ptmr8r 10.9988 fshow
+555.1907 337.68 moveto
+(library) ptmr8r 10.9988 fshow
+520.11 283.68 moveto
+(JPEG) ptmr8r 10.9988 fshow
+547.9146 283.68 moveto
+(library) ptmr8r 10.9988 fshow
+520.11 222.96 moveto
+(PNG) ptmr8r 10.9988 fshow
+544.857 222.96 moveto
+(library) ptmr8r 10.9988 fshow
+533.61 121.68 moveto
+(bmeps) ptmr8r 10.9988 fshow
+344.61 67.68 moveto
+(genau) ptmr8r 10.9988 fshow
+337.83 121.68 moveto
+(png2pdf) ptmr8r 10.9988 fshow
+344.61 175.68 moveto
+(dklibs) ptmr8r 10.9988 fshow
+155.61 67.68 moveto
+(dkt) ptmr8r 10.9988 fshow
+155.61 121.68 moveto
+(yanolc) ptmr8r 10.9988 fshow
+34.23 115.32 moveto
+(Krause) ptmb8r 10.9988 fshow
+34.17 133.2 moveto
+(Dirk) ptmb8r 10.9988 fshow
+34.17 151.08 moveto
+(made) ptmb8r 10.9988 fshow
+62.5796 151.08 moveto
+(by) ptmb8r 10.9988 fshow
+34.11 168.96 moveto
+(Softwar) ptmb8r 10.9988 fshow
+71.1756 168.96 moveto
+(e) ptmb8r 10.9988 fshow
+34.23 284.04 moveto
+(authors) ptmb8r 10.9988 fshow
+34.17 301.92 moveto
+(other) ptmb8r 10.9988 fshow
+34.17 319.8 moveto
+(by) ptmb8r 10.9988 fshow
+34.11 337.68 moveto
+(Softwar) ptmb8r 10.9988 fshow
+71.1756 337.68 moveto
+(e) ptmb8r 10.9988 fshow
+324.33 20.46 moveto
+(B) ptmr8r 10.9988 fshow
+415.47 20.46 moveto
+(A) ptmr8r 10.9988 fshow
+142.11 20.46 moveto
+(A) ptmr8r 10.9988 fshow
+152.8007 20.46 moveto
+(needs) ptmr8r 10.9988 fshow
+180.5943 20.46 moveto
+(B) ptmr8r 10.9988 fshow
+190.6801 20.46 moveto
+(\(B) ptmr8r 10.9988 fshow
+204.4284 20.46 moveto
+(is) ptmr8r 10.9988 fshow
+214.514 20.46 moveto
+(required) ptmr8r 10.9988 fshow
+253.9111 20.46 moveto
+(for) ptmr8r 10.9988 fshow
+269.4852 20.46 moveto
+(A\)) ptmr8r 10.9988 fshow
+439.11 20.46 moveto
+(A) ptmr8r 10.9988 fshow
+449.8007 20.46 moveto
+(can) ptmr8r 10.9988 fshow
+467.8165 20.46 moveto
+(use) ptmr8r 10.9988 fshow
+485.2274 20.46 moveto
+(B) ptmr8r 10.9988 fshow
+495.3131 20.46 moveto
+(\(B) ptmr8r 10.9988 fshow
+509.0614 20.46 moveto
+(is) ptmr8r 10.9988 fshow
+519.147 20.46 moveto
+(recommended) ptmr8r 10.9988 fshow
+584.2041 20.46 moveto
+(for) ptmr8r 10.9988 fshow
+599.7782 20.46 moveto
+(A\)) ptmr8r 10.9988 fshow
+27.39 20.46 moveto
+(B) ptmr8r 10.9988 fshow
+118.47 20.46 moveto
+(A) ptmr8r 10.9988 fshow
+showpage
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/errors b/obsolete/support/png2pdf/DOCU/errors
new file mode 100644
index 0000000000..703c2e5ba0
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/errors
@@ -0,0 +1,366 @@
+png2pdf -r -m 255,255,255 -s fbt.png x1.pdf
+bmeps -p2 -c -er8 fbt.png x1.eps
+png2pdf -r -m 255,255,255 -s fbt.png x2.pdf
+png2pdf -r -i -m 255,128,128 -s fbt.png x3.pdf
+bmeps -p3 -c -e8f -am255,128,128s fbt.png x3.eps
+png2pdf -r -a -m 255,128,128 -s fbt.png x4.pdf
+pdflatex png2pdf && pdflatex png2pdf && pdflatex png2pdf
+This is pdfTeX, Version 3.14159-1.10b (Web2C 7.4.5)
+(./png2pdf.tex{/a/et/skr/wrk11/teTeX/share/texmf/pdftex/config/pdftex.cfg}
+LaTeX2e <2001/06/01>
+Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, n
+ohyphenation, loaded.
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/article.cls
+Document Class: article 2001/04/21 v1.4e Standard LaTeX document class
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/size12.clo))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/lscape.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/graphics.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/trig.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/graphics.cfg)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/pdftex.def)))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/oberdiek/ifpdf.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/inputenc.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/latin1.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/fontenc.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/t1enc.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/textcomp.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ts1enc.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/mathptmx.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/helvet.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/keyval.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/courier.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/array.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/enumerate.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/longtable.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/latexsym.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/varioref.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/color.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/color.cfg))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pdfcprot.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ifthen.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/graphicx.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/oberdiek/epstopdf.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/ppower4/background.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/ppower4/pause.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/hyperref.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/pd1enc.def)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/hyperref.cfg)
+Implicit mode ON; LaTeX internals redefined
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/misc/url.sty))
+*hyperref using driver hpdftex*
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/hpdftex.def
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/pifont.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/upzd.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/upsy.fd)))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/listings.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstpatch.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstmisc.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/listings.cfg))
+(./png2pdf.aux) (/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ts1cmr.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/context/base/supp-pdf.tex
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/context/base/supp-mis.tex
+loading : Context Support Macros / Missing
+)
+loading : Context Support Macros / PDF
+) (/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pplmnT1.cpa)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ts1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pplmnTS1.cpa)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1phv.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ts1phv.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/nameref.sty)
+(./png2pdf.out) (./png2pdf.out)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ot1ztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omlztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omsztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omxztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ot1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ulasy.fd) [1{/a/et/skr/wrk11/
+teTeX/share/texmf/dvips/config/pdftex.map}] (./png2pdf.toc)
+! pdfTeX warning (ext4): destination with the same identifier (name{page.1}) ha
+s been already used, duplicate ignored
+<to be read again>
+ \penalty
+l.66 \clearpage
+ [1] [2]
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1pcr.fd) [3] [4] [5]
+[6]
+Underfull \hbox (badness 10000) in paragraph at lines 223--227
+
+[7] [8] <fbt.png, id=189, 96.36pt x 96.36pt> <use fbt.png>
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstmisc.sty) [9 <./fbt.p
+ng>] <x1.pdf, id=207, 128.48pt x 128.48pt> <use x1.pdf> [10 <./x1.pdf>]
+<x2.pdf, id=233, 128.48pt x 128.48pt> <use x2.pdf> [11 <./x2.pdf>]
+<use x2.pdf> [12] <x3.pdf, id=266, 128.48pt x 128.48pt> <use x3.pdf>
+<x4.pdf, id=267, 128.48pt x 128.48pt> <use x4.pdf> [13 <./x3.pdf> <./x4.pdf>]
+<png2pdf-logo1.pdf, id=293, 301.125pt x 62.2325pt> <use png2pdf-logo1.pdf>
+<png2pdf-logo2.pdf, id=294, 301.125pt x 62.2325pt> <use png2pdf-logo2.pdf>
+[14 <./png2pdf-logo1.pdf> <./png2pdf-logo2.pdf>]
+
+Package hyperref Warning: bookmark level for unknown lstlisting defaults to 0.
+
+(./beamtest.tex
+Overfull \hbox (56.76361pt too wide) in paragraph at lines 2--3
+[][][][][][][][][][][][][][][][][]
+
+Overfull \hbox (23.91335pt too wide) in paragraph at lines 12--13
+[][][][][][][][][][][][][][][][][][][][][][][][][]
+) [15] (./png2pdf.aux) )
+(see the transcript file for additional information){/a/et/skr/wrk11/teTeX/shar
+e/texmf/dvips/tetex/bbad153f.enc}</a/et/skr/wrk11/teTeX/share/texmf/fonts/type1
+/bluesky/cm/cmsy10.pfb>{/a/et/skr/wrk11/teTeX/share/texmf/dvips/psnfss/8r.enc}
+Output written on png2pdf.pdf (16 pages, 78186 bytes).
+Transcript written on png2pdf.log.
+This is pdfTeX, Version 3.14159-1.10b (Web2C 7.4.5)
+(./png2pdf.tex{/a/et/skr/wrk11/teTeX/share/texmf/pdftex/config/pdftex.cfg}
+LaTeX2e <2001/06/01>
+Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, n
+ohyphenation, loaded.
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/article.cls
+Document Class: article 2001/04/21 v1.4e Standard LaTeX document class
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/size12.clo))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/lscape.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/graphics.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/trig.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/graphics.cfg)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/pdftex.def)))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/oberdiek/ifpdf.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/inputenc.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/latin1.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/fontenc.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/t1enc.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/textcomp.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ts1enc.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/mathptmx.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/helvet.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/keyval.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/courier.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/array.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/enumerate.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/longtable.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/latexsym.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/varioref.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/color.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/color.cfg))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pdfcprot.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ifthen.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/graphicx.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/oberdiek/epstopdf.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/ppower4/background.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/ppower4/pause.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/hyperref.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/pd1enc.def)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/hyperref.cfg)
+Implicit mode ON; LaTeX internals redefined
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/misc/url.sty))
+*hyperref using driver hpdftex*
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/hpdftex.def
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/pifont.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/upzd.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/upsy.fd)))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/listings.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstpatch.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstmisc.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/listings.cfg))
+(./png2pdf.aux) (/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ts1cmr.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/context/base/supp-pdf.tex
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/context/base/supp-mis.tex
+loading : Context Support Macros / Missing
+)
+loading : Context Support Macros / PDF
+) (/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pplmnT1.cpa)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ts1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pplmnTS1.cpa)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1phv.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ts1phv.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/nameref.sty)
+(./png2pdf.out) (./png2pdf.out)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ot1ztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omlztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omsztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omxztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ot1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ulasy.fd) [1{/a/et/skr/wrk11/
+teTeX/share/texmf/dvips/config/pdftex.map}] (./png2pdf.toc)
+! pdfTeX warning (ext4): destination with the same identifier (name{page.1}) ha
+s been already used, duplicate ignored
+<to be read again>
+ \penalty
+l.66 \clearpage
+ [1] [2]
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1pcr.fd) [3] [4] [5]
+[6]
+Underfull \hbox (badness 10000) in paragraph at lines 223--227
+
+[7] [8] <fbt.png, id=189, 96.36pt x 96.36pt> <use fbt.png>
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstmisc.sty) [9 <./fbt.p
+ng>] <x1.pdf, id=207, 128.48pt x 128.48pt> <use x1.pdf> [10 <./x1.pdf>]
+<x2.pdf, id=233, 128.48pt x 128.48pt> <use x2.pdf> [11 <./x2.pdf>]
+<use x2.pdf> [12] <x3.pdf, id=266, 128.48pt x 128.48pt> <use x3.pdf>
+<x4.pdf, id=267, 128.48pt x 128.48pt> <use x4.pdf> [13 <./x3.pdf> <./x4.pdf>]
+<png2pdf-logo1.pdf, id=293, 301.125pt x 62.2325pt> <use png2pdf-logo1.pdf>
+<png2pdf-logo2.pdf, id=294, 301.125pt x 62.2325pt> <use png2pdf-logo2.pdf>
+[14 <./png2pdf-logo1.pdf> <./png2pdf-logo2.pdf>]
+
+Package hyperref Warning: bookmark level for unknown lstlisting defaults to 0.
+
+(./beamtest.tex
+Overfull \hbox (56.76361pt too wide) in paragraph at lines 2--3
+[][][][][][][][][][][][][][][][][]
+
+Overfull \hbox (23.91335pt too wide) in paragraph at lines 12--13
+[][][][][][][][][][][][][][][][][][][][][][][][][]
+) [15] (./png2pdf.aux) )
+(see the transcript file for additional information){/a/et/skr/wrk11/teTeX/shar
+e/texmf/dvips/tetex/bbad153f.enc}</a/et/skr/wrk11/teTeX/share/texmf/fonts/type1
+/bluesky/cm/cmsy10.pfb>{/a/et/skr/wrk11/teTeX/share/texmf/dvips/psnfss/8r.enc}
+Output written on png2pdf.pdf (16 pages, 78186 bytes).
+Transcript written on png2pdf.log.
+This is pdfTeX, Version 3.14159-1.10b (Web2C 7.4.5)
+(./png2pdf.tex{/a/et/skr/wrk11/teTeX/share/texmf/pdftex/config/pdftex.cfg}
+LaTeX2e <2001/06/01>
+Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, n
+ohyphenation, loaded.
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/article.cls
+Document Class: article 2001/04/21 v1.4e Standard LaTeX document class
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/size12.clo))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/lscape.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/graphics.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/trig.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/graphics.cfg)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/pdftex.def)))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/oberdiek/ifpdf.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/inputenc.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/latin1.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/fontenc.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/t1enc.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/textcomp.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ts1enc.def))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/mathptmx.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/helvet.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/keyval.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/courier.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/array.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/enumerate.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/longtable.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/latexsym.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/tools/varioref.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/color.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/color.cfg))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pdfcprot.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ifthen.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/graphics/graphicx.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/oberdiek/epstopdf.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/ppower4/background.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/ppower4/pause.sty))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/hyperref.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/pd1enc.def)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/config/hyperref.cfg)
+Implicit mode ON; LaTeX internals redefined
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/misc/url.sty))
+*hyperref using driver hpdftex*
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/hpdftex.def
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/pifont.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/upzd.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/upsy.fd)))
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/listings.sty
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstpatch.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstmisc.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/listings.cfg))
+(./png2pdf.aux) (/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ts1cmr.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/context/base/supp-pdf.tex
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/context/base/supp-mis.tex
+loading : Context Support Macros / Missing
+)
+loading : Context Support Macros / PDF
+) (/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pplmnT1.cpa)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ts1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/pdfcprot/pplmnTS1.cpa)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1phv.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ts1phv.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/hyperref/nameref.sty)
+(./png2pdf.out) (./png2pdf.out)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ot1ztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omlztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omsztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/omxztmcm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/ot1ptm.fd)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/base/ulasy.fd) [1{/a/et/skr/wrk11/
+teTeX/share/texmf/dvips/config/pdftex.map}] (./png2pdf.toc)
+! pdfTeX warning (ext4): destination with the same identifier (name{page.1}) ha
+s been already used, duplicate ignored
+<to be read again>
+ \penalty
+l.66 \clearpage
+ [1] [2]
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/psnfss/t1pcr.fd) [3] [4] [5]
+[6]
+Underfull \hbox (badness 10000) in paragraph at lines 223--227
+
+[7] [8] <fbt.png, id=189, 96.36pt x 96.36pt> <use fbt.png>
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang1.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang2.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstlang3.sty)
+(/a/et/skr/wrk11/teTeX/share/texmf/tex/latex/listings2/lstmisc.sty) [9 <./fbt.p
+ng>] <x1.pdf, id=207, 128.48pt x 128.48pt> <use x1.pdf> [10 <./x1.pdf>]
+<x2.pdf, id=233, 128.48pt x 128.48pt> <use x2.pdf> [11 <./x2.pdf>]
+<use x2.pdf> [12] <x3.pdf, id=266, 128.48pt x 128.48pt> <use x3.pdf>
+<x4.pdf, id=267, 128.48pt x 128.48pt> <use x4.pdf> [13 <./x3.pdf> <./x4.pdf>]
+<png2pdf-logo1.pdf, id=293, 301.125pt x 62.2325pt> <use png2pdf-logo1.pdf>
+<png2pdf-logo2.pdf, id=294, 301.125pt x 62.2325pt> <use png2pdf-logo2.pdf>
+[14 <./png2pdf-logo1.pdf> <./png2pdf-logo2.pdf>]
+
+Package hyperref Warning: bookmark level for unknown lstlisting defaults to 0.
+
+(./beamtest.tex
+Overfull \hbox (56.76361pt too wide) in paragraph at lines 2--3
+[][][][][][][][][][][][][][][][][]
+
+Overfull \hbox (23.91335pt too wide) in paragraph at lines 12--13
+[][][][][][][][][][][][][][][][][][][][][][][][][]
+) [15] (./png2pdf.aux) )
+(see the transcript file for additional information){/a/et/skr/wrk11/teTeX/shar
+e/texmf/dvips/tetex/bbad153f.enc}</a/et/skr/wrk11/teTeX/share/texmf/fonts/type1
+/bluesky/cm/cmsy10.pfb>{/a/et/skr/wrk11/teTeX/share/texmf/dvips/psnfss/8r.enc}
+Output written on png2pdf.pdf (16 pages, 78186 bytes).
+Transcript written on png2pdf.log.
+ppower4 png2pdf.pdf png2pdf-x.pdf
+This is PPower4 version 0.9.4.
+[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16]
+Writing modified output file...
+Done.
+mv png2pdf-x.pdf png2pdf.pdf
+multivalent compress png2pdf.pdf
+/h/et/m/h0/krause/PROGR/C/LibDev/distinfo/png2pdf/DOCU/png2pdf.pdf, 80759 bytes
+PDF 1.3, producer=pdfTeX-1.10b extended by PPower4 V0.9.4, creator=LaTeX with hyperref package
+additional compression may be possible with:
+ [omit -old] -compact -jpeg
+=> new length = 68204, saved 15%, elapsed time = 4 sec
+pdfopt png2pdf-o.pdf png2pdf.pdf
+rm png2pdf-o.pdf
diff --git a/obsolete/support/png2pdf/DOCU/faq.html b/obsolete/support/png2pdf/DOCU/faq.html
new file mode 100644
index 0000000000..89db0f07fa
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/faq.html
@@ -0,0 +1,70 @@
+<html>
+<head>
+<title>png2pdf - Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft" rowspan="2"><img src="./png2pdf-logo.png"></td>
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">FAQ</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+</td>
+</tr>
+</table>
+</p>
+</div>
+<div class="text">
+
+<table width="100%">
+<tr>
+<td class="h2tdleft"><h2>FAQ</h2></td>
+<td class="h2tdright"><a class="smallotherlink" href="png2pdf.pdf">PDF manual "png2pdf.pdf" available</a></td>
+</tr>
+</table>
+<h3>User FAQ</h3>
+<h4>Where can I find more information about preferences...?</h4>
+<p>
+This package uses the dklibs library set
+(see
+<a class="linkoutside" href="http://dklibs.sourceforge.net">http://dklibs.sourceforge.net</a>)
+for preference managment, localization and logging. The "Administration"
+section in the PDF manual
+<a class="linkoutside" target="_blank" href="http://dklibs.sourceforge.net/dklibs.pdf">http://dklibs.sourceforge.net/dklibs.pdf</a> describes this in detail.
+</p>
+
+<h3>Developer FAQ</h3>
+<h4>For modifications, should I modify .c or .ctr files?</h4>
+<p>
+For changes please use the .ctr files. The .c files are generated from the
+.ctr files using the tracecc preprocessor.<br>
+Changes to .c files are lost after running tracecc the next time.
+</p>
+
+</div>
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2003/11/30</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
+
diff --git a/obsolete/support/png2pdf/DOCU/fbt.png b/obsolete/support/png2pdf/DOCU/fbt.png
new file mode 100644
index 0000000000..ed1fbb6b40
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/fbt.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/fbt/fbt.pl b/obsolete/support/png2pdf/DOCU/fbt/fbt.pl
new file mode 100644
index 0000000000..a991aac87d
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/fbt/fbt.pl
@@ -0,0 +1,95 @@
+use Posix;
+
+my $px = "128px";
+my $width = 1000;
+my $wh = $width / 2;
+my $factor = 0.75;
+
+my $c1 = "#7F7FFF"; # color of circles
+my $c2 = "#7F7FFF"; # color of short pointer
+my $c3 = "#7F7FFF"; # color of long pointer
+
+my $w1 = 30; # width of short pointer
+my $w2 = 20; # width of long pointer
+
+my $f1 = 0.8; # end of white filled, end of circles
+
+my $r2 = 30; # point radius;
+
+# radius where the points are on
+my $r1 = POSIX::floor($f1 * $wh - $r2);
+
+my $r3 = 290; # length of long pointer
+$r3 = $factor * ($r1 - $r2);
+
+my $r4 = 179; # length of short pointer
+$r4 = $factor * $factor * $r3;
+
+my $pi = 3.1415926;
+
+
+
+my $i; my $alpha; my $x; my $y;
+
+print "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>\n";
+print "";
+print "<svg width=\"$px\" height=\"$px\" viewBox=\"0 0 $width $width\"\n";
+print "xmlns=\"http://www.w3.org/2000/svg\">\n";
+print "<title>5 before 12</title>\n";
+print "<desc>Analog clock image</desc>\n";
+print "<defs>\n";
+print "<style type=\"text/css\"><![CDATA[\n";
+print ".A {\n"; # circle
+print "fill: $c1;\n";
+print "}\n";
+print ".B {\n"; # short pointer
+print "fill: $c2;\n";
+print "stroke: $c2;\n";
+print "stroke-linecap: round;\n";
+print "stroke-width: $w1;\n";
+print "}\n";
+print ".C {\n"; # long pointer
+print "fill: $c2;\n";
+print "stroke: $c2;\n";
+print "stroke-linecap: round;\n";
+print "stroke-width: $w2;\n";
+print "}\n";
+print "]]></style>\n";
+print "<radialGradient id=\"MyGradient\" gradientUnits=\"userSpaceOnUse\"\n";
+print "cx=\"500\" cy=\"500\" r=\"500\">\n";
+print "<stop offset=\"0\" stop-color=\"white\" stop-opacity=\"1\" />\n";
+print "<stop offset=\"0.5\" stop-color=\"white\" stop-opacity=\"1\" />\n";
+print "<stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\" />\n";
+print "</radialGradient>\n";
+print "<mask id=\"MyMask\" maskUnits=\"userSpaceOnUse\"\n";
+print "x=\"0\" y=\"0\" width=\"1000\" height=\"1000\">\n";
+print "<rect x=\"0\" y=\"0\" width=\"1000\" height=\"1000\" fill=\"url(#MyGradient)\"\n";
+print "/>\n";
+print "</mask>\n";
+print "</defs>\n";
+print "<rect x=\"0\" y=\"0\" width=\"1000\" height=\"1000\" fill=\"white\"";
+print " mask=\"url(#MyMask)\" />\n";
+# 5-minute-circles
+for($i = 0; $i < 12; $i++) {
+ $alpha = 2.0 * $pi * $i / 12.0;
+ $x = $wh + $r1 * cos($alpha);
+ $y = $wh + $r1 * sin($alpha);
+ $x = 0.1 * POSIX::floor(10.0 * $x + 0.5);
+ $y = 0.1 * POSIX::floor(10.0 * $y + 0.5);
+ print "<circle cx=\"$x\" cy=\"$y\" r=\"$r2\" class=\"A\"/>\n";
+}
+# short pointer
+$alpha = 0.0 - ((1.0 / 2.0 + 1.0 / 72.0) * $pi);
+$x = $wh + $r4 * cos($alpha);
+$y = $wh + $r4 * sin($alpha);
+$x = 0.1 * POSIX::floor(10.0 * $x + 0.5);
+$y = 0.1 * POSIX::floor(10.0 * $y + 0.5);
+print "<line x1=\"$wh\" y1=\"$wh\" x2=\"$x\" y2=\"$y\" class=\"B\"/>\n";
+# long pointer
+$alpha = -2.0 * $pi / 3.0;
+$x = $wh + $r3 * cos($alpha);
+$y = $wh + $r3 * sin($alpha);
+$x = 0.1 * POSIX::floor(10.0 * $x + 0.5);
+$y = 0.1 * POSIX::floor(10.0 * $y + 0.5);
+print "<line x1=\"$wh\" y1=\"$wh\" x2=\"$x\" y2=\"$y\" class=\"C\"/>\n";
+print "</svg>\n";
diff --git a/obsolete/support/png2pdf/DOCU/fbt/fbt.png b/obsolete/support/png2pdf/DOCU/fbt/fbt.png
new file mode 100644
index 0000000000..ed1fbb6b40
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/fbt/fbt.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/fbt/fbt.svg b/obsolete/support/png2pdf/DOCU/fbt/fbt.svg
new file mode 100644
index 0000000000..aecb55a186
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/fbt/fbt.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<svg width="128px" height="128px" viewBox="0 0 1000 1000"
+xmlns="http://www.w3.org/2000/svg">
+<title>5 before 12</title>
+<desc>Analog clock image</desc>
+<defs>
+<style type="text/css"><![CDATA[
+.A {
+fill: #7F7FFF;
+}
+.B {
+fill: #7F7FFF;
+stroke: #7F7FFF;
+stroke-linecap: round;
+stroke-width: 30;
+}
+.C {
+fill: #7F7FFF;
+stroke: #7F7FFF;
+stroke-linecap: round;
+stroke-width: 20;
+}
+]]></style>
+<radialGradient id="MyGradient" gradientUnits="userSpaceOnUse"
+cx="500" cy="500" r="500">
+<stop offset="0" stop-color="white" stop-opacity="1" />
+<stop offset="0.5" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</radialGradient>
+<mask id="MyMask" maskUnits="userSpaceOnUse"
+x="0" y="0" width="1000" height="1000">
+<rect x="0" y="0" width="1000" height="1000" fill="url(#MyGradient)"
+/>
+</mask>
+</defs>
+<rect x="0" y="0" width="1000" height="1000" fill="white" mask="url(#MyMask)" />
+<circle cx="870" cy="500" r="30" class="A"/>
+<circle cx="820.4" cy="685" r="30" class="A"/>
+<circle cx="685" cy="820.4" r="30" class="A"/>
+<circle cx="500" cy="870" r="30" class="A"/>
+<circle cx="315" cy="820.4" r="30" class="A"/>
+<circle cx="179.6" cy="685" r="30" class="A"/>
+<circle cx="130" cy="500" r="30" class="A"/>
+<circle cx="179.6" cy="315" r="30" class="A"/>
+<circle cx="315" cy="179.6" r="30" class="A"/>
+<circle cx="500" cy="130" r="30" class="A"/>
+<circle cx="685" cy="179.6" r="30" class="A"/>
+<circle cx="820.4" cy="315" r="30" class="A"/>
+<line x1="500" y1="500" x2="493.7" y2="356.7" class="B"/>
+<line x1="500" y1="500" x2="372.5" y2="279.2" class="C"/>
+</svg>
diff --git a/obsolete/support/png2pdf/DOCU/fbt/test.html b/obsolete/support/png2pdf/DOCU/fbt/test.html
new file mode 100644
index 0000000000..18541d952a
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/fbt/test.html
@@ -0,0 +1,6 @@
+<html>
+ <head><title>Test</title></head>
+ <body bgcolor="yellow">
+ <img src="fbt.png">
+ </body>
+</html>
diff --git a/obsolete/support/png2pdf/DOCU/index.html b/obsolete/support/png2pdf/DOCU/index.html
new file mode 100644
index 0000000000..07534593e0
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/index.html
@@ -0,0 +1,70 @@
+<html>
+<head>
+<title>png2pdf - Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft" rowspan="2"><img src="./png2pdf-logo.png"></td>
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<span class="navimenucurrent">Overview</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+</td>
+</tr>
+</table>
+</p>
+</div>
+<div class="text">
+
+<table width="100%">
+<tr>
+<td class="h2tdleft"><h2>Overview</h2></td>
+<td class="h2tdright"><a class="smallotherlink" href="png2pdf.pdf">PDF manual "png2pdf.pdf" available</a></td>
+</tr>
+</table>
+<table width="100%">
+<tr>
+<td align="LEFT" valign="TOP">
+The png2pdf program converts PNG images to PDF. If the PNG file contains
+an alpha channel, this can be used to:
+</td>
+<td width="5%">&nbsp;</td>
+<td align="RIGHT" valign="TOP"><b>Current&nbsp;version:&nbsp;1.0.12</b></td>
+</tr>
+</table>
+<ul>
+<li>create an appropriate alpha channel in the PDF file or
+</li>
+<li>mix against a user specified background.
+</li>
+</ul>
+The program is mainly intended for use with pdfLaTeX but may be used
+for other purposes too.<br>
+The software is licensed to you under the terms of a BSD-style license.
+</div>
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2005/02/01</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
+
diff --git a/obsolete/support/png2pdf/DOCU/inst_w32.pdf b/obsolete/support/png2pdf/DOCU/inst_w32.pdf
new file mode 100644
index 0000000000..266b5846d2
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/inst_w32.pdf
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/inst_w32.tex b/obsolete/support/png2pdf/DOCU/inst_w32.tex
new file mode 100644
index 0000000000..0563d24d8f
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/inst_w32.tex
@@ -0,0 +1,376 @@
+%
+% %Z% %G% %I% %M%
+%
+
+\documentclass[12pt,a4paper,titlepage]{article}
+\usepackage{lscape}
+\usepackage{ifpdf}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+% \usepackage{newcent}
+\usepackage{mathptmx}
+\usepackage[scaled=.92]{helvet}
+\usepackage{courier}
+\usepackage{array}
+\usepackage{enumerate}
+\usepackage{longtable}
+\usepackage{latexsym}
+\usepackage{varioref}
+\usepackage{color}
+\usepackage{listings}
+\ifpdf
+\usepackage[activate=normal]{pdfcprot}
+\usepackage[pdftex]{graphicx}
+\usepackage{epstopdf}
+\pdfcompresslevel=9
+\usepackage[
+ pdftex,
+ a4paper=true,
+ pdftitle={Dklibs installation on Windows},
+ pdfsubject={Dklibs installation on Windows},
+ pdfauthor={Dipl.-Ing. D. Krause},
+ colorlinks=true,
+ linkcolor=black,
+ pdfpagemode=None,
+ pdfstartview=FitH
+]{hyperref}
+\else
+\usepackage[dvips]{graphicx}
+\DeclareGraphicsRule{.png}{eps}{.bb}{`bmeps #1}
+\usepackage[
+ dvips,
+ colorlinks=true,
+ linkcolor=black
+]{hyperref}
+\fi
+% \renewcommand*{\sectfont}{\bfseries}
+\parindent0cm
+\author{Dipl.-Ing.~D.~Krause}
+\title{Dklibs installation on Windows}
+
+\def\leftsideofhandler{0.45\linewidth}
+\def\rightsideofhandler{0.55\linewidth}
+
+\newcommand{\ximagelw}[3]{
+ \begin{figure}[htb]
+ {\centering
+ \includegraphics[width=#1\linewidth]{#2.mps}
+ \caption{#3}
+ \label{fig:#2}
+ }
+ \end{figure}
+}
+
+\begin{document}
+\maketitle
+\cleardoublepage
+\ifpdf\pdfbookmark[1]{\contentsname}{tocanc}\fi
+\tableofcontents
+\cleardoublepage
+\section{Overview}
+This manual tries to give you hints to install dklibs and some of
+the applications based on these libraries on a Windows system.\\
+Figure~\vref{fig:depgr} shows the dependencies between the packages.
+\ximagelw{}{depgr}{Software dependencies}
+\clearpage
+\section{Software and skills needed for the build}
+To build the software you need an ANSI-C-compiler, a linker and
+a ``make'' program. There are several development suites available,
+both commercial software (MS Visual Studio, Borland/Imprise products)
+and open-source software (Cygwin, MingW).
+
+To build OpenSSL from source you also need a working Perl distribution.
+I suggest to use ActivePerl \footnote{see \url{http://www.activestate.com}}.
+An assembler is helpful to build OpenSSL, you can use either
+MASM (available via platform SDK) or NASM.
+
+You should have a working knowledge about:
+\begin{itemize}
+\item the command line options of the C compiler, linker and
+ make program you use and
+\item the structure of makefiles.
+\end{itemize}
+\clearpage
+
+\section{Some decisions before starting to install}
+Before you start any build process you have to decide whether
+you want to have statically linked software or dynamically
+linked software.
+
+I recommend static linking.
+
+Using MS Visual C you have several versions of the C run-time library
+available. The preferred run-time library file for each source
+module is choosen by \emph{compiler} switches when compiling the module.
+
+
+
+\begin{longtable}{|c|l|}
+\caption{Command line switches to choose run-time library}
+\label{tab:keys-for-features}
+\\
+%
+\hline
+&\\*[-0.95em]\multicolumn{1}{|c|}{\textbf{Switch}} & \multicolumn{1}{c|}{\textbf{File}}\\
+\hline
+\endfirsthead
+%
+\hline
+&\\*[-0.95em]\multicolumn{2}{|r|}{\small \textsl{Continuation}}\\
+\hline
+\endhead
+%
+&\\*[-0.95em]\multicolumn{2}{|r|}{\small \textsl{\ldots{}to be continued}}\\
+\hline
+\endfoot
+%
+\hline
+\endlastfoot
+%
+\hline
+&\\*[-0.95em]/ML & LIBC.LIB (static, release, single-threaded)\\*
+\hline
+&\\*[-0.95em]/MLd & LIBCD.LIB (static, debug, single-threaded)\\*
+\hline
+&\\*[-0.95em]/MT & LIBCMT.LIB (static, release, multi-threaded)\\*
+\hline
+&\\*[-0.95em]/MTd & LIBCMTD.LIB (static, debug, multi-threaded)\\*
+\hline
+&\\*[-0.95em]/MD & MSVCRT.LIB (DLL, release)\\*
+\hline
+&\\*[-0.95em]/MDd & MSVCRTD.LIB (DLL, debug)\\*
+\end{longtable}
+
+Object modules contain an information which run-time library they want
+to be linked with. During linking the linker inspects all object
+files -- even those in libraries -- and tries to use all the run-time
+libraries mentioned in any object module. If two (or more) modules
+were compiled specifying a different run-time library the linker
+will report conflicts and abort.\\
+Conclusion: You need to use the same run-time library selection
+switch for all objects (both for installing the required/recommended
+libraries and installing dklibs and software based on it).\\
+I recommend to use ``/MT'' for static linking or ``/MD'' for
+DLL-linking.
+
+As pointed out you need to use the same run-time selection switch
+for all packages to build. When building DLL verions of
+the required/recommended libraries our compiler switches might differ
+from the compiler switches used to build the ``official'' DLL.
+If you have other software installed built to use one of the ``official'' DLLs
+strange things might happen if this software finds our self-made
+DLLs instead. That's why I recommend to use static linking.
+\clearpage
+
+\section{Installing the required/recommended libraries}
+\subsection{Installation order}
+I suggest to build the libraries in the following order:
+\begin{itemize}
+\item zlib\\*\url{http://www.gzip.org/zlib}\\*This library can be used
+ by the dklibs library set to access gzip compressed files. If you
+ want to build bmeps or png2pdf this library is required.
+\item bzip2\\*\url{http://sources.redhat.com/bzip2}\\*This library
+ can be used by the dklibs library set to access bzip2 compressed files.
+\item libpng\\*\url{http://www.libpng.org}\\*
+ This library is used by bmeps and png2pdf to read PNG images. It is
+ required to build these packages.
+\item JPEG lib\\*\url{ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz}
+ This library can used by bmeps to read JPEG files, it is optional.
+\item NetPBM lib\\*\url{ftp://ftp.metalab.unc.edu/pub/Linux/apps/graphics/convert/netpbm-10.11.10.tgz}\\*
+ This library can be used by bmeps to read NetPBM images, it is
+ optional. The NetPBM tools allow to convert a wide variety
+ of bitmap graphics formats to the NetPBM formats.
+\item OpenSSL\\*\url{http://www.openssl.org}\\*
+ This library can be used by the kls application to calculate
+ and print message digests (checksums) for files, it is optional.
+ The Net-SNMP library can optionally use OpenSLL for authentication.
+\item Net-SNMP\\*\url{http://net-snmp.sourceforge.net}\\*
+ This library can optionally be used by the yanolc package to build the
+ snmpyalc program to request printer status information via SNMP.
+ If none of your printers has a direct ethernet connection
+ via internal print servers (i.e. HP JetDirect interface) the
+ snmpyalc will probably not be usefull for you.
+\end{itemize}
+It is not in all cases necessary to install all libraries, see
+figure~\vref{fig:depgr} for package dependencies.
+\clearpage
+\subsection{General instructions}
+\subsubsection{Makefile modifications}
+The library archives contain makefiles named ``makefile.msc'' or
+``makefile.vc'' for use with MS Visual C++. Additionally there are
+build instructions in readme files, file names differ.
+
+To build the libraries follow the instructions in the readme files,
+but before running ``nmake'' or ``make'' modify the
+makefile manually:
+\begin{itemize}
+\item Open the makefile in a text editor,
+\item Search for a section introduced by a line
+ \begin{lstlisting}
+ .c.obj:
+ \end{lstlisting}
+\item The line after ``.c.obj:'' specifies the command to invoke
+ the C compiler. You need to remove any command line
+ switch choosing a C run-time library version and replace
+ it by the switch you have decided to use in all the builds.
+\item Sometimes the command line switches are not specified directly,
+ a macro expansion mechanism is used instead.\\
+ If the command line looks like
+ \begin{lstlisting}
+ CL $(CFLAGS) /c $*.c
+ \end{lstlisting}
+ you have to search for a line started by ``CFLAGS='' to do the
+ replacements there.
+\end{itemize}
+\subsubsection{Building the libraries}
+To build the libraries run
+\begin{lstlisting}
+ nmake -f makefile.msc
+\end{lstlisting}
+The name of the makefile may differ. For some of the libraries
+it is usefull to give the name of the library to build on the
+command line, i.e.
+\begin{lstlisting}
+ nmake -f makefile.msc libbz2.lib
+\end{lstlisting}
+\subsubsection{Copying files in place}
+If you are doing static builds, create a directory
+``c:\textbackslash{}p\textbackslash{}lib-stt'', for a DLL-based build
+use ``c:\textbackslash{}p\textbackslash{}lib-dll''. Create subdirectories
+``lib'', ``include'' and ``bin''. Do the following copy operations
+\begin{lstlisting}
+ xcopy *.h c:\p\lib-stt\include\ /Y
+ xcopy *.lib c:\p\lib-stt\lib\ /Y
+ xcopy *.exe c:\p\lib-stt\bin\ /Y
+\end{lstlisting}
+For a DLL-based build this loooks like
+\begin{lstlisting}
+ xcopy *.h c:\p\lib-dll\include\ /Y
+ xcopy *.lib c:\p\lib-dll\lib\ /Y
+ xcopy *.dll c:\p\lib-dll\bin\ /Y
+ xcopy *.exe c:\p\lib-dll\bin\ /Y
+\end{lstlisting}
+
+\subsection{Library-specific instructions}
+\subsubsection{LibPNG}
+The makefile.msc assumes to find the zlib library in ``../zlib''.
+We have installed zlib in subdirectories of
+``C\textbackslash{}p\textbackslash{}lib-stt''
+so we need to correct the makefile entry to
+``-I"C:\textbackslash{}p\textbackslash{}lib-stt\textbackslash{}include"''.
+For a DLL-build replace ``lib-stt'' by ``lib-dll''.
+\subsubsection{JPEG library}
+The JPEG library is shipped without a *.def file for DLL building.
+The contrib/jpeg directory in bmeps contains a ``jpeg.def'' file.
+\clearpage
+\subsubsection{NetPBM library}
+The NetPBM library is shipped without a *.def file too.
+The contrib/netpbm directory in bmeps contains a ``netpbm.def'' file.
+
+To build the NetPBM library unpack the sources archive and go
+into the ``lib'' subdirectory. Copy all the files from the ``util''
+subdirectory into the ``lib'' directory.
+
+Edit the ``shhopt.c'' file, add the function
+\begin{lstlisting}
+char *rindex(char *s, int c)
+{
+ char *back = NULL;
+ char *ptr;
+ ptr = s;
+ while(*ptr) {
+ if(*ptr == c) {
+ back = ptr;
+ }
+ ptr++;
+ }
+ return back;
+}
+\end{lstlisting}
+
+Edit the file ``libpm.c'' and add the following two sections:
+\begin{lstlisting}
+#include <io.h>
+#include <process.h>
+#include <stdlib.h>
+\end{lstlisting}
+\begin{lstlisting}
+static int _S_ISREG(int m)
+{
+ int back = 0;
+ if((m & _S_IFMT) == _S_IFREG) {
+ back = 1;
+ }
+ return back;
+}
+\end{lstlisting}
+\clearpage
+\subsubsection{OpenSSL}
+The makefiles ``nt.mak'' and ``ntdll.mak'' are generated
+(or possibly renewed) by the
+\begin{lstlisting}
+ perl Configure VC-WIN32
+ ms\do_masm
+\end{lstlisting}
+commands. You have to edit the makefiles to set up the run-time
+library version after running the two commands above and before running
+\begin{lstlisting}
+ nmake -f ms\nt.mak
+\end{lstlisting}
+or
+\begin{lstlisting}
+ nmake -f ms\ntdll.mak
+\end{lstlisting}
+Additionally remove all the optimization/warning related compiler
+flags and add ``-DOPENSSL\_NO\_HW\_PADLOCK=1 /Zm1000'' to increase the used memory pool for the
+compiler and to disable inline-assembling of eng\_padlock.c.\\
+For the static library we should have
+\begin{lstlisting}
+CFLAGS= /MT /nologo -DOPENSSL_SYSNAME_WIN32 ... \
+ -DOPENSSL_NO_KRB5 -DOPENSSL_NO_HW_PADLOCK=1 /Zm1000
+\end{lstlisting}
+\subsubsection{Net-SNMP}
+The Net-SNMP library archive contains a project/workspace for
+MSVC. When following the instructions in the readme you will possibly
+add OpenSLL support. Among other things you need to add the libraries
+``libeay32.lib'' and ``ssleay32.lib'' to all the projects. Make sure
+that ``gdi32.lib'' is also included. Newer version of Net-SNMP
+use the ``gdi32.lib'' library (I do not know exactly but I think
+it is to get entropy from the screen).
+Somewhere in the project settings you can change the setting for
+the C run-time. Switch this to the library you have decided to use
+for all the projects.
+\clearpage
+\section{Dklibs and applications}
+You have to install the dklibs library set before you try bo build
+any application using it.
+There is no specific order to build the applications, choose as you
+want.
+
+The archives contain a file named ``makefile.msc''. Each of these
+makefiles has two configuration sections possibly needing modifications.
+\begin{itemize}
+\item The first configuration section is at the beginning of the
+ file. This section is used for
+ \begin{itemize}
+ \item locations of directories and
+ \item subsections to indicate which libraries are available.
+ \end{itemize}
+ The subsections for required libraries are ready-to-use.
+ Subsections for recommended libraries must be toggled to use
+ the library. Toggling such a subsection means to add a
+ comment sign (``\#'') in front of all lines not started by ``\#''.
+ For all lines started by ``\#'' remove the leading ``\#''.\\*
+ Note: a subsection ends at an empty line.
+\item The second configuration section contains information how to
+ build libraries: either DLL-linked or statically linked.
+ The default is static linking, toggle all the subsection
+ to switch to DLL-linking.\\*
+ Switching to DLL-linking also requires to toggle some lines
+ in the first configuration section to activate the installation
+ commands to copy *.DLL files into the right places. For zlib
+ we also need to correct the name of the linker import library.
+\end{itemize}
+\end{document}
+
diff --git a/obsolete/support/png2pdf/DOCU/install.html b/obsolete/support/png2pdf/DOCU/install.html
new file mode 100644
index 0000000000..d74dec24dd
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/install.html
@@ -0,0 +1,123 @@
+<html>
+<head>
+<title>png2pdf - Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft" rowspan="2"><img src="./png2pdf-logo.png"></td>
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Installation</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+</td>
+</tr>
+</table>
+</p>
+</div>
+<div class="text">
+
+<table width="100%">
+<tr>
+<td class="h2tdleft"><h2>Installation</h2></td>
+<td class="h2tdright"><a class="smallotherlink" href="png2pdf.pdf">PDF manual "png2pdf.pdf" available</a></td>
+</tr>
+</table>
+
+<h3>Prerequisitions</h3>
+<p>
+The following libraries are recommended/required to install png2pdf:
+<ul>
+<li><b>zlib</b> (required)<br>
+<a class="linkoutside" target="_blank" href="http://www.gzip.org/zlib">http://www.gzip.org/zlib</a>
+</li>
+<li>bzip2 (recommended)<br>
+<a class="linkoutside" target="_blank" href="http://sources.redhat.com/bzip2">http://sources.redhat.com/bzip2</a>
+</li>
+<li><b>libpng</b> (required)<br>
+<a class="linkoutside" target="_blank" href="http://www.libpng.org">http://www.libpng.org</a>
+</li>
+<li><b>dklibs 1.11.2 or above</b> (required)<br>
+<a class="linkoutside" target="_blank" href="http://sourceforge.net/projects/dklibs">http://sourceforge.net/projects/dklibs</a>
+</li>
+</ul>
+<em>Note:</em> If you installed these packages using your
+OS vendors package management
+software make sure the header files... are also installed.<br>
+Some systems have separated packages: one for binaries and shared libraries
+and an additional one (mostly called "xxx&nbsp;developer&nbsp;support")
+containing C header files and other material needed to compile programs
+using the library.
+</p>
+
+<h3>Download</h3>
+<p>
+The software can be obtained via
+<a class="linkoutside" href="http://sourceforge.net/projects/png2pdf">http://sourceforge.net/projects/png2pdf</a>
+</p>
+
+<h3>Building and installing the software</h3>
+<p>
+Make sure to have CFLAGS and LDFLAGS set properly. For dklibs
+these variables must point to the include/lib subdirectory of the
+directory where the dklibs were installed to, <em>not</em> to
+the dklibs <em>source</em>/<em>build</em> directory.
+<br>
+After unpacking the source archive run
+<pre>
+ ./configure
+ make
+ make install
+</pre>
+The usual options are recognized by the configure script.
+</p>
+
+<h3>Windows installation</h3>
+<p>
+Building the libraries and the programs using the libraries
+on Windows systems from source requires manual changes in makefiles.
+Good skills in using the development tools and a significant amount of
+time is needed to do that.<br>
+So it is recommended to use the setup program in dklibs-win32-*-setup.exe from
+<a class="linkoutside" target="_blank" href="http://sourceforge.net/projects/dklibs">http://sourceforge.net/projects/dklibs</a>.
+<br>This program installs dklibs, dktools, bmeps, png2pdf, yanolc and genau.
+<br>
+There are two different setup programs:
+<ul>
+<li>A small executable dklibs_win32-*-user-setup.exe to install software
+for users (binaries and documentation) and
+</li>
+<li>a larger executable dklibs-win32-*-dev-setup.exe to install the software
+for developers (binaries, documentation, libraries, used libraries
+and sources).
+</li>
+</ul>
+For both executables you can choose either english or german language.
+</p>
+
+</div>
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2003/11/30</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
+
diff --git a/obsolete/support/png2pdf/DOCU/interpolate.html b/obsolete/support/png2pdf/DOCU/interpolate.html
new file mode 100644
index 0000000000..98a4ca49ea
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/interpolate.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+<title>png2pdf - Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<span class="navimenucurrent">Overview</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+</td>
+</tr>
+</table>
+</p>
+</div>
+<div class="text">
+<table width="100%">
+<tr>
+<td class="h2tdleft"><h2>Image interpolation</h2></td>
+<td class="h2tdright"><a class="smallotherlink" href="png2pdf.pdf">PDF manual "png2pdf.pdf" available</a></td>
+</tr>
+</table>
+<p>
+Image interpolation can be used to obtain smoother color transition
+when low-resolution bitmap images are rendered to large screen areas
+or print areas.<br>
+The examples are from screenshots of the SourceForge logo converted to PDF
+and shown expanded to fit the page width.<br>
+The first conversion was done without setting an Interpolate entry
+in the image dictionary, the second one uses the Interpolate entry.
+</p>
+<p align="center">
+<img src="sfl1.png"><br>
+Figure 1: Image without interpolation
+</p>
+<p align="center">
+<img src="sfl2.png"><br>
+Figure 2: Interpolated image
+</p>
+<p>
+As seen in the images above interpolated images may look better
+on screen than images without interpolation.<br>
+When using png2pdf's interpolation option keep in mind that
+the interpolation algorithm used to show the image depends on both the
+viewer software used and the output device.
+</p>
+</div>
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2005/02/01</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
+
diff --git a/obsolete/support/png2pdf/DOCU/logo/create-rectangle.png b/obsolete/support/png2pdf/DOCU/logo/create-rectangle.png
new file mode 100644
index 0000000000..5b63c58736
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/create-rectangle.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/logo/mgrid.png b/obsolete/support/png2pdf/DOCU/logo/mgrid.png
new file mode 100644
index 0000000000..6b9dbcc720
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/mgrid.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/logo/original.svg b/obsolete/support/png2pdf/DOCU/logo/original.svg
new file mode 100644
index 0000000000..b89c20219e
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/original.svg
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+>
+<svg width="6.63in" height="2in" viewBox="0 0 477 144"
+xmlns="http://www.w3.org/2000/svg"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+<title>png2pdf-logo.fig</title>
+<desc>Converted by fig2vect, see http://fig2vect.sourceforge.net</desc>
+<defs>
+<linearGradient id="GH1" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="477" y2="0">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.0190" stop-color="white" stop-opacity="1" />
+<stop offset="0.4381" stop-color="white" stop-opacity="1" />
+<stop offset="0.4571" stop-color="white" stop-opacity="0" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GV1" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="0" y2="144">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.0645" stop-color="white" stop-opacity="1" />
+<stop offset="0.5806" stop-color="white" stop-opacity="1" />
+<stop offset="0.6452" stop-color="white" stop-opacity="0" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GH2" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="477" y2="0">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.5429" stop-color="white" stop-opacity="0" />
+<stop offset="0.5619" stop-color="white" stop-opacity="1" />
+<stop offset="0.9810" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GV2" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="0" y2="144">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.3548" stop-color="white" stop-opacity="0" />
+<stop offset="0.4193" stop-color="white" stop-opacity="1" />
+<stop offset="0.9355" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<mask id="MH1" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GH1)" />
+</mask>
+<mask id="MV1" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GV1)" />
+</mask>
+<mask id="MH2" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GH2)" />
+</mask>
+<mask id="MV2" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GV2)" />
+</mask>
+<style type="text/css"><![CDATA[
+@font-face {
+font-family: 'Nimbus Roman No9 L';
+font-style: normal;
+font-weight: normal;
+src: url("file://g:\p\urw-svg/n021003l.svg#NimbusRomanNo9L-Regu") format(svg);
+}
+.cA {
+fill: none;
+stroke: #000000;
+stroke-width: 0;
+}
+.cB {
+fill: none;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cC {
+fill: #D10000;
+stroke: none;
+}
+.cD {
+fill: #FFD600;
+stroke: none;
+}
+.cE {
+fill: #000000;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cF {
+font-family: "Nimbus Roman No9 L", serif;
+font-style: normal;
+font-weight: normal;
+font-size: 92;
+text-anchor: middle;
+fill: #000000;
+}
+.cG {
+font-family: "Nimbus Roman No9 L", serif;
+font-style: normal;
+font-weight: normal;
+font-size: 92;
+text-anchor: middle;
+fill: #FFFFFF;
+}
+]]></style>
+</defs>
+<!-- <rect x="2.25" y="2.25" width="472.5" height="139.5" class="cA"/> -->
+<!-- 1 -->
+<g mask="url(#MH1)">
+<g mask="url(#MV1)">
+<rect x="0" y="0" width="218.25" height="92.25" class="cD"
+ />
+</g>
+</g>
+<!-- 2 -->
+<g mask="url(#MH2)">
+<g mask="url(#MV2)">
+<rect x="258.75" y="51.75" width="218.25" height="92.25" class="cC"
+ />
+</g>
+</g>
+<g>
+<path class="cB"
+d="M366.75,42.55
+C366.75,42.09 366.75,41.61 366.75,41.11
+C366.75,37.55 366.75,35 366.75,32.25
+C366.75,29.5 366.75,26.12 364.26,22.81
+C361.76,19.5 357,16.72 348.75,15
+C340.5,13.28 327.13,12.29 311.92,11.77
+C296.71,11.25 281.75,11.25 270.75,11.25
+C259.75,11.25 251.16,11.25 240.51,11.25
+C229.85,11.25 222.75,11.25 222.75,11.25
+"
+/>
+<polygon class="cE"
+points="371.07,28.15 366.75,42.55 362.43,28.15"
+/>
+</g>
+<g>
+<path class="cB"
+d="M110.25,96.75
+C110.25,96.75 110.25,99.34 110.25,102.89
+C110.25,106.45 110.25,109 110.25,111.75
+C110.25,114.5 110.25,117.88 112.74,121.19
+C115.24,124.5 120,127.28 128.25,129
+C136.5,130.72 149.87,131.71 165.08,132.23
+C180.29,132.75 195.25,132.75 206.25,132.75
+C217.25,132.75 225.84,132.75 236.49,132.75
+C241.93,132.75 246.44,132.75 249.55,132.75
+"
+/>
+<polygon class="cE"
+points="235.15,128.43 249.55,132.75 235.15,137.07"
+/>
+</g>
+<text x="366.75" y="128.25" class="cG"
+>PDF</text>
+<text x="110.25" y="78.75" class="cF"
+>PNG</text>
+</svg>
diff --git a/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.fig b/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.fig
new file mode 100644
index 0000000000..55af27ea20
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.fig
@@ -0,0 +1,27 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+A4
+100.0
+Single
+-2
+1200 2
+2 2 0 0 0 7 999 1 -1 0 0 0 0 0 0 5
+ 0 0 7875 0 7875 2325 0 2325 0 0
+2 2 0 0 20 20 105 1 20 0 0 0 0 0 0 5
+ 4275 825 7875 825 7875 2325 4275 2325 4275 825
+2 2 0 0 31 31 105 1 20 0 0 0 0 0 0 5
+ 0 0 3600 0 3600 1500 0 1500 0 0
+4 1 7 100 1 30 100.0 0.0 4 1968.0 3072.0 6075 2100 PDF\001
+4 1 0 100 1 30 100.0 0.0 4 1968.0 3344.0 1800 1275 PNG\001
+3 0 0 3 0 0 100 1 -1 0 0 1 0 5
+ 1 1 1.0 144.00 240.00
+ 1800 1575 1800 1800 1800 2175 3600 2175
+ 4200 2175
+ 0.0000 1.0000 1.0000 1.0000 0.0000
+3 0 0 3 0 0 100 1 -1 0 0 0 1 5
+ 1 1 1.0 144.00 240.00
+ 6075 750 6075 525 6075 150 4275 150
+ 3675 150
+ 0.0000 1.0000 1.0000 1.0000 0.0000
diff --git a/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.png b/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.png
new file mode 100644
index 0000000000..420dcb62b3
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.svg b/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.svg
new file mode 100644
index 0000000000..c39b63a526
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/png2pdf-logo.svg
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+>
+<svg width="210px" height="62px" viewBox="0 0 477 144"
+xmlns="http://www.w3.org/2000/svg"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+<title>png2pdf-logo.fig</title>
+<desc>Converted by fig2vect, see http://fig2vect.sourceforge.net</desc>
+<defs>
+<linearGradient id="GH1" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="477" y2="0">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.0190" stop-color="white" stop-opacity="1" />
+<stop offset="0.4381" stop-color="white" stop-opacity="1" />
+<stop offset="0.4571" stop-color="white" stop-opacity="0" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GV1" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="0" y2="144">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.0645" stop-color="white" stop-opacity="1" />
+<stop offset="0.5806" stop-color="white" stop-opacity="1" />
+<stop offset="0.6452" stop-color="white" stop-opacity="0" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GH2" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="477" y2="0">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.5429" stop-color="white" stop-opacity="0" />
+<stop offset="0.5619" stop-color="white" stop-opacity="1" />
+<stop offset="0.9810" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GV2" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="0" y2="144">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.3548" stop-color="white" stop-opacity="0" />
+<stop offset="0.4193" stop-color="white" stop-opacity="1" />
+<stop offset="0.9355" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<mask id="MH1" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GH1)" />
+</mask>
+<mask id="MV1" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GV1)" />
+</mask>
+<mask id="MH2" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GH2)" />
+</mask>
+<mask id="MV2" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GV2)" />
+</mask>
+<style type="text/css"><![CDATA[
+@font-face {
+font-family: 'URW Palladio L';
+font-style: normal;
+font-weight: bold;
+src: url("file://g:\p\urw-svg/p052004l.svg#URWPalladioL-Bold") format(svg);
+}
+.cA {
+fill: none;
+stroke: #000000;
+stroke-width: 0;
+}
+.cB {
+fill: none;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cC {
+fill: #FF0000;
+stroke: none;
+}
+.cD {
+fill: #FFFF00;
+stroke: none;
+}
+.cE {
+fill: #000000;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cF {
+font-family: "URW Palladio L", serif;
+font-style: normal;
+font-weight: bold;
+font-size: 92;
+text-anchor: middle;
+fill: #000000;
+}
+.cG {
+font-family: "URW Palladio L", serif;
+font-style: normal;
+font-weight: bold;
+font-size: 92;
+text-anchor: middle;
+fill: #FFFFFF;
+}
+]]></style>
+</defs>
+<!-- <rect x="2.25" y="2.25" width="472.5" height="139.5" class="cA"/> -->
+<!-- 1 -->
+<g mask="url(#MH1)">
+<g mask="url(#MV1)">
+<rect x="0" y="0" width="218.25" height="92.25" class="cD"
+ />
+</g>
+</g>
+<!-- 2 -->
+<g mask="url(#MH2)">
+<g mask="url(#MV2)">
+<rect x="258.75" y="51.75" width="218.25" height="92.25" class="cC"
+ />
+</g>
+</g>
+<g>
+<path class="cB"
+d="M366.75,42.55
+C366.75,42.09 366.75,41.61 366.75,41.11
+C366.75,37.55 366.75,35 366.75,32.25
+C366.75,29.5 366.75,26.12 364.26,22.81
+C361.76,19.5 357,16.72 348.75,15
+C340.5,13.28 327.13,12.29 311.92,11.77
+C296.71,11.25 281.75,11.25 270.75,11.25
+C259.75,11.25 251.16,11.25 240.51,11.25
+C229.85,11.25 222.75,11.25 222.75,11.25
+"
+/>
+<polygon class="cE"
+points="371.07,28.15 366.75,42.55 362.43,28.15"
+/>
+</g>
+<g>
+<path class="cB"
+d="M110.25,96.75
+C110.25,96.75 110.25,99.34 110.25,102.89
+C110.25,106.45 110.25,109 110.25,111.75
+C110.25,114.5 110.25,117.88 112.74,121.19
+C115.24,124.5 120,127.28 128.25,129
+C136.5,130.72 149.87,131.71 165.08,132.23
+C180.29,132.75 195.25,132.75 206.25,132.75
+C217.25,132.75 225.84,132.75 236.49,132.75
+C241.93,132.75 246.44,132.75 249.55,132.75
+"
+/>
+<polygon class="cE"
+points="235.15,128.43 249.55,132.75 235.15,137.07"
+/>
+</g>
+<text x="366.75" y="128.25" class="cG"
+>PDF</text>
+<text x="110.25" y="78.75" class="cF"
+>PNG</text>
+</svg>
diff --git a/obsolete/support/png2pdf/DOCU/logo/test.html b/obsolete/support/png2pdf/DOCU/logo/test.html
new file mode 100644
index 0000000000..fc7612a038
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/test.html
@@ -0,0 +1,7 @@
+<html>
+<head><title>Test</title></head>
+<body bgcolor="lightgreen">
+<h1>Test</h1>
+<img src="png2pdf-logo.png">
+</body>
+</html>
diff --git a/obsolete/support/png2pdf/DOCU/logo/x.out b/obsolete/support/png2pdf/DOCU/logo/x.out
new file mode 100644
index 0000000000..5f1336f75e
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/x.out
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+>
+<svg width="6.63in" height="2in" viewBox="0 0 477 144"
+xmlns="http://www.w3.org/2000/svg"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+<title>png2pdf-logo.fig</title>
+<desc>Converted by fig2vect, see http://fig2vect.sourceforge.net</desc>
+<defs>
+<style type="text/css"><![CDATA[
+@font-face {
+font-family: 'URW Palladio L';
+font-style: normal;
+font-weight: bold;
+src: url("file://g:\p\urw-svg/p052004l.svg#URWPalladioL-Bold") format(svg);
+}
+.cA {
+fill: none;
+stroke: #000000;
+stroke-width: 0;
+}
+.cB {
+fill: none;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cC {
+fill: #D10000;
+stroke: none;
+}
+.cD {
+fill: #FFD600;
+stroke: none;
+}
+.cE {
+fill: #000000;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cF {
+font-family: "URW Palladio L", serif;
+font-style: normal;
+font-weight: bold;
+font-size: 92;
+text-anchor: middle;
+fill: #000000;
+}
+.cG {
+font-family: "URW Palladio L", serif;
+font-style: normal;
+font-weight: bold;
+font-size: 92;
+text-anchor: middle;
+fill: #FFFFFF;
+}
+]]></style>
+</defs>
+<rect x="2.25" y="2.25" width="472.5" height="139.5" class="cA"
+/>
+<rect x="258.75" y="51.75" width="216" height="90" class="cC"
+/>
+<rect x="2.25" y="2.25" width="216" height="90" class="cD"
+/>
+<g>
+<path class="cB"
+d="M110.25,96.75
+C110.25,96.75 110.25,99.34 110.25,102.89
+C110.25,106.45 110.25,109 110.25,111.75
+C110.25,114.5 110.25,117.88 112.74,121.19
+C115.24,124.5 120,127.28 128.25,129
+C136.5,130.72 149.87,131.71 165.08,132.23
+C180.29,132.75 195.25,132.75 206.25,132.75
+C217.25,132.75 225.84,132.75 236.49,132.75
+C241.93,132.75 246.44,132.75 249.55,132.75
+"
+/>
+<polygon class="cE"
+points="235.15,128.43 249.55,132.75 235.15,137.07"
+/>
+</g>
+<g>
+<path class="cB"
+d="M366.75,42.55
+C366.75,42.09 366.75,41.61 366.75,41.11
+C366.75,37.55 366.75,35 366.75,32.25
+C366.75,29.5 366.75,26.12 364.26,22.81
+C361.76,19.5 357,16.72 348.75,15
+C340.5,13.28 327.13,12.29 311.92,11.77
+C296.71,11.25 281.75,11.25 270.75,11.25
+C259.75,11.25 251.16,11.25 240.51,11.25
+C229.85,11.25 222.75,11.25 222.75,11.25
+"
+/>
+<polygon class="cE"
+points="371.07,28.15 366.75,42.55 362.43,28.15"
+/>
+</g>
+<text x="366.75" y="128.25" class="cG"
+>PDF</text>
+<text x="110.25" y="78.75" class="cF"
+>PNG</text>
+</svg>
diff --git a/obsolete/support/png2pdf/DOCU/logo/zoom-in.png b/obsolete/support/png2pdf/DOCU/logo/zoom-in.png
new file mode 100644
index 0000000000..57503edbed
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/logo/zoom-in.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/makefile b/obsolete/support/png2pdf/DOCU/makefile
new file mode 100644
index 0000000000..84b41ba6b2
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/makefile
@@ -0,0 +1,61 @@
+
+all: png2pdf.pdf beamtest.pdf
+
+.SUFFIXES: .pdf .tex
+
+.tex.pdf:
+ pdflatex $* && pdflatex $* && pdflatex $*
+ ppower4 $*.pdf $*-x.pdf
+ mv $*-x.pdf $*.pdf
+ multivalent compress $*.pdf
+ pdfopt $*-o.pdf $*.pdf
+ rm $*-o.pdf
+
+IMAGE1= x1.pdf x1.eps x2.pdf x2.pdf x3.pdf x3.eps x4.pdf
+IMAGE2= png2pdf-logo1.pdf png2pdf-logo2.pdf
+IMAGES= $(IMAGE1) $(IMAGE2)
+
+# IMGSRC= stefan_255_rgba.png
+IMGSRC= fbt.png
+
+png2pdf.pdf: png2pdf.tex $(IMAGES) beamtest.tex
+ pdflatex png2pdf && pdflatex png2pdf && pdflatex png2pdf
+ ppower4 png2pdf.pdf png2pdf-x.pdf
+ mv png2pdf-x.pdf png2pdf.pdf
+ multivalent compress png2pdf.pdf
+ pdfopt png2pdf-o.pdf png2pdf.pdf
+ rm png2pdf-o.pdf
+
+beamtest.pdf: beamtest.tex x4.pdf
+ pdflatex beamtest && pdflatex beamtest && pdflatex beamtest
+ multivalent compress beamtest.pdf
+ pdfopt beamtest-o.pdf beamtest.pdf
+ rm beamtest-o.pdf
+
+x1.pdf: $(IMGSRC)
+ png2pdf -r -m 255,255,255 -s $(IMGSRC) x1.pdf
+
+x1.eps: $(IMGSRC)
+ bmeps -p2 -c -er8 $(IMGSRC) x1.eps
+
+x2.pdf: $(IMGSRC)
+ png2pdf -r -m 255,128,128 -s $(IMGSRC) x2.pdf
+
+x2.eps: $(IMGSRC)
+ bmeps -p3 -c -e8f -am255,128,128s $(IMGSRC) x2.eps
+
+x3.pdf: $(IMGSRC)
+ png2pdf -r -i -m 255,128,128 -s $(IMGSRC) x3.pdf
+
+x3.eps: $(IMGSRC)
+ bmeps -p3 -c -e8f -am255,128,128s $(IMGSRC) x3.eps
+
+x4.pdf: $(IMGSRC)
+ png2pdf -r -i -a $(IMGSRC) x4.pdf
+
+png2pdf-logo1.pdf: png2pdf-logo.png
+ png2pdf -r -a -n- png2pdf-logo.png png2pdf-logo1.pdf
+
+png2pdf-logo2.pdf: png2pdf-logo.png
+ png2pdf -r -a -n png2pdf-logo.png png2pdf-logo2.pdf
+
diff --git a/obsolete/support/png2pdf/DOCU/mgrid.png b/obsolete/support/png2pdf/DOCU/mgrid.png
new file mode 100644
index 0000000000..6b9dbcc720
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/mgrid.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/mkdocu.sh b/obsolete/support/png2pdf/DOCU/mkdocu.sh
new file mode 100644
index 0000000000..a1cbd23f1a
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/mkdocu.sh
@@ -0,0 +1,3 @@
+#! /bin/sh
+pdflatex png2pdf && pdflatex png2pdf && pdflatex png2pdf && ppower4 png2pdf.pdf t.pdf && mv t.pdf png2pdf.pdf
+
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-1507.pdf b/obsolete/support/png2pdf/DOCU/png2pdf-1507.pdf
new file mode 100644
index 0000000000..908c999940
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-1507.pdf
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-logo.fig b/obsolete/support/png2pdf/DOCU/png2pdf-logo.fig
new file mode 100644
index 0000000000..74143ebd08
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-logo.fig
@@ -0,0 +1,25 @@
+#FIG 3.2
+Portrait
+Center
+Metric
+A4
+100.0
+Single
+-2
+1200 2
+2 2 0 0 7 7 999 1 -1 0 0 0 0 0 0 5
+ 4640 2700 7171 2700 7171 3318 4640 3318 4640 2700
+6 7115 2756 6159 3262
+2 2 0 1 20 20 101 1 20 0 0 0 0 0 0 5
+ 6159 2756 7115 2756 7115 3262 6159 3262 6159 2756
+4 1 0 100 1 30 24.0 0.0 4 448.0 756.0 6637 3150 PDF\001
+-6
+6 5653 2756 4696 3262
+2 2 0 1 0 0 101 1 20 0 0 0 0 0 0 5
+ 4696 2756 5653 2756 5653 3262 4696 3262 4696 2756
+4 1 7 100 1 30 24.0 0.0 4 448.0 820.0 5174 3150 PNG\001
+-6
+2 1 0 2 0 0 100 1 -1 0 0 0 12 0 0 2
+ 5709 3009 6018 3009
+2 3 0 1 0 0 100 1 20 0 0 0 12 0 0 4
+ 6074 3009 5905 2925 5905 3093 6074 3009
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-logo.fig.bak b/obsolete/support/png2pdf/DOCU/png2pdf-logo.fig.bak
new file mode 100644
index 0000000000..58cfe2f3cb
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-logo.fig.bak
@@ -0,0 +1,21 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+2 3 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 4
+ 4275 3825 4125 3750 4083 3908 4275 3825
+2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 3825 3825 4125 3825
+2 3 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 2775 4050 2850 3600 3675 3600 3600 4050 2775 4050
+2 2 0 0 -1 -1 999 -1 -1 0.000 0 0 -1 0 0 5
+ 2700 4200 5400 4200 5400 3450 2700 3450 2700 4200
+2 3 0 1 18 18 51 -1 20 0.000 0 0 -1 0 0 5
+ 4350 4050 4425 3600 5250 3600 5175 4050 4350 4050
+4 0 7 49 -1 3 18 0.0000 4 195 570 2950 3900 PNG\001
+4 0 0 50 -1 3 18 0.0000 4 195 555 4550 3900 PDF\001
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-logo.pdf b/obsolete/support/png2pdf/DOCU/png2pdf-logo.pdf
new file mode 100644
index 0000000000..3e813d469f
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-logo.pdf
@@ -0,0 +1,143 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.9)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 210 62 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+ /XObject 7 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+210 0 0 62 0 0 cm
+/R8 Do
+Q
+endstream
+endobj
+6 0 obj
+33
+endobj
+7 0 obj
+<<
+/R8 8 0 R
+/R10 10 0 R
+>>
+endobj
+8 0 obj
+<<
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 210
+/Height 62
+/BitsPerComponent 8
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 9 0 R
+/Interpolate true
+/SMask 10 0 R
+>>
+stream
+GhVPS9h8bq'ZVke[6pEe5Hq7)&R#dg,.-BdQ.BOp%Z%KD'h<AM'ISf*ZOhd"eBCa_
+F>T7*63nbJ6uW`CLq"+<jX)Ji&O]#4L`6qg+@:F"BC=mC^6^[],`QaA5;$Ej4ng/h
+rB27sjTtqf!!!!!!!!!!!!!!!!!!!!!5'o]jcff6$a66bJ3\=V0a#t^.qY<G\f'9r
+`&_F2!7cXp+lFKb"`ZWm#u_=K-(m<+&qqD.geJQ+"V5eWWcO-acHa`7[W$;/6h\($
+\a&Hpo!u9?@/Ks&IYQs^Vl/6bCMR]6'T0rkf@SW]B/5l#s&^g13B7DrnSm1KnA)8X
+/]@,BI7f/@(#hA"gd:q#]'%!'J(pm?d7TXfPkb3+QHdh)&R!9!b%>:!fs7lfU&"?S
+p1hdka2cNPcYI<3c1]<&b2q_ro&&-Rl0Raf/YssCR[T[s_&sWIf%*[LWB:!J>ZbQ>
+W#>D#>+2;6pX8VpC#O^V_fVjeqkMY(Q2`5[3+_IV,aUc_f2c?oBS[D2\@BTq&d_bj
+3b^bl\?t?]T.^h6Qn>,L]tHRLf'Ef:Pa4:/Ed)a04/c&0ZqO+cWPtd[ZM^,\H>YK%
+Q,^"$7b[7]>T26k4tfkl)J)>H$k0'?`YQ_!b3.jHKT0<Af=[V_RQ1A6Q^@1/m]&6\
+KsGP_6N[C\)NWF`^Ep9N[.lbi/>&)(9d\nqo_q:"5"pfuj]#;_`tm)<>Jf@'nnE#\
+BB/.:VKmG2Oe@*%4t\E=EFl(l_m)eq;.Vaor`NFYV+"\IQg*W%Nlb0BNN\61\NaXm
+F&C!BFaJJ)/6)GOEla$Q(PakkDJ<fnkJkM2Smodd%eK;`BOJ.a02mci:9U9-(73P0
+K_27h(mIu\[eg#i@ipj%=P)HfYDPA5XDMfk>?b>(n_i?@m<1!%Y0]9P%m-ttY,ZeD
+`C#74fV,ph)lh(n%%E,89!!Ib4uY[V#Vdr[L+J%NH2Jgu.kL[3SeRCR88RSTj7`3?
+o(%q^bgFg8mQ-V/?XFoT^:q>,cHXVYS57BuSP%JqSBIkk(P[5Ck=I:fqjhRu4UcU;
+SqKel'n4&D48^@:^J+*'Q?=9HQm]+nLPID_b*<ilC2.M?<#W'R>?G"#O47Y.R3"`,
+j]Umr/sf4&Y+qc0Ob#-P]B[nRH]^bU2dnZBX[Q`"s5C^XNVkZ<Wi36Fn="d4_dT_E
+873\aD(:rIVGeM#LfsfceZ#;2_^p0blt0TBEK&66JuMO@X,?QX:9(7N7\^iK[+:nN
+X,C%"+!58seD=s-L2?qteS.J.j1G/tASV4`Y#$[p0<Xmq#;IthP/2oW#0e!Ga*FAY
+pR%PD*k&8RXCt6T,P0FCi#l20m8RpFGG!JRHstYL#VffO5?O/TY.hXLlKX7li:HcC
+JPG=fp\V@$'tCUU@DpgN(f/+[0sB30(/e*/Y6EukV7Hu$*/VBdEAEX@_o<M4""u:`
+4uV,$>Q:V?Vn,8?TfqqT2O.krlRZ%Xe7I9MmdYP=i@m92R7BJU3OQkh8;-&],@VQ5
+=Ot3YKo\9]X#)lg+&fS9c(9/;b[H/EoG-@MEBB_<Ck?k=6,Cu"hLPk1<s+BT_>mPj
+G@9k[!Q7#qE2K2#[sW[Z(a-L9^#I\?87ET)X@#hi*$=L>3lF(t3oK?iVnM7!!!!!!
+!!!!!!!!!!!!!!!!2)%D!t5@A,l~>
+endstream
+endobj
+9 0 obj
+1706
+endobj
+10 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Width 210
+/Height 62
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 11 0 R
+/BitsPerComponent 8
+/ColorSpace /DeviceGray
+>>
+stream
+GhVPQ]1N06&;@UG_D5[0M\KCV!OT(/0Z]Oq(-[7NV6I1[@%g!X!A#cR"Kf@fTVdhD
+!fBG]6kg6:78tIK@Y2'r"YXD0A_3@G=ck^ULu7CCj=ha3+d#;@&rB"#q/8jO;\uDR
+,+B908TZ*c4(S&IM$M0k2e'!U6KSuM\\<fJdHRn(OdXCVpdP\c1!%!P1\^e:N>V#q
+!,90/RACC8+V)*nR#PWeJM;3dFpg#$airQbId2%-B?AAW4T939@/!@N+e:WJDo?$*
+eM&l`O\T0d1?i:ID%H6M>J?.RfPU>oWh9tJ$?`;;V;nR+W-\HJWJ('`9e5m!BBbep
+W3/2UrMcA`%/,[:Y.B@K-\G/TXu_on4KQ5s&hSR#q0I?]-O+o.]W:7g\(o]:)[Q@m
+mnOjG3-EJVj>iU=^daB1V:'a73-E,Lk4Y)9RmtBiS)^ThB6W=hBT^M\*$b6,FT)"_
+4Y;Yk9T=5537`%MrNpYWQVU@XN7mWe\e:FAQO.Odr:"m3Pg?WN^E$(?5p)SR*SfjZ
+Q)bQIn#%Q<HO:nMaN+b8fQ`TZpY@Qra#WL+^`4UU[u)?SDZ@><_sWr(GqsH__1+FR
+Y^:91'/FWM"Q)b*]hE#ZV=BN^loM:1)dQ!i]p7QZMPD,1f\t0eOdZ"qr/4=*4\'+e
+/DqK3Yj[dDX5itE3pa=dk"Z]L8;Ea"2Q@GJ8;#`-@,eqeLt42@80eh)6mDH%Gm,U:
+.e<~>
+endstream
+endobj
+11 0 obj
+744
+endobj
+xref 0 12
+0000000000 65535 f
+0000000010 00000 n
+0000000061 00000 n
+0000000116 00000 n
+0000000182 00000 n
+0000000355 00000 n
+0000000447 00000 n
+0000000468 00000 n
+0000000517 00000 n
+0000002443 00000 n
+0000002466 00000 n
+0000003415 00000 n
+trailer
+<< /Size 12 /Info 1 0 R /Root 2 0 R >>
+startxref
+3438
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-logo.png b/obsolete/support/png2pdf/DOCU/png2pdf-logo.png
new file mode 100644
index 0000000000..420dcb62b3
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-logo.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-logo.svg b/obsolete/support/png2pdf/DOCU/png2pdf-logo.svg
new file mode 100644
index 0000000000..c39b63a526
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-logo.svg
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+>
+<svg width="210px" height="62px" viewBox="0 0 477 144"
+xmlns="http://www.w3.org/2000/svg"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+<title>png2pdf-logo.fig</title>
+<desc>Converted by fig2vect, see http://fig2vect.sourceforge.net</desc>
+<defs>
+<linearGradient id="GH1" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="477" y2="0">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.0190" stop-color="white" stop-opacity="1" />
+<stop offset="0.4381" stop-color="white" stop-opacity="1" />
+<stop offset="0.4571" stop-color="white" stop-opacity="0" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GV1" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="0" y2="144">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.0645" stop-color="white" stop-opacity="1" />
+<stop offset="0.5806" stop-color="white" stop-opacity="1" />
+<stop offset="0.6452" stop-color="white" stop-opacity="0" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GH2" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="477" y2="0">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.5429" stop-color="white" stop-opacity="0" />
+<stop offset="0.5619" stop-color="white" stop-opacity="1" />
+<stop offset="0.9810" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GV2" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="0" y2="144">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.3548" stop-color="white" stop-opacity="0" />
+<stop offset="0.4193" stop-color="white" stop-opacity="1" />
+<stop offset="0.9355" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<mask id="MH1" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GH1)" />
+</mask>
+<mask id="MV1" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GV1)" />
+</mask>
+<mask id="MH2" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GH2)" />
+</mask>
+<mask id="MV2" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GV2)" />
+</mask>
+<style type="text/css"><![CDATA[
+@font-face {
+font-family: 'URW Palladio L';
+font-style: normal;
+font-weight: bold;
+src: url("file://g:\p\urw-svg/p052004l.svg#URWPalladioL-Bold") format(svg);
+}
+.cA {
+fill: none;
+stroke: #000000;
+stroke-width: 0;
+}
+.cB {
+fill: none;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cC {
+fill: #FF0000;
+stroke: none;
+}
+.cD {
+fill: #FFFF00;
+stroke: none;
+}
+.cE {
+fill: #000000;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cF {
+font-family: "URW Palladio L", serif;
+font-style: normal;
+font-weight: bold;
+font-size: 92;
+text-anchor: middle;
+fill: #000000;
+}
+.cG {
+font-family: "URW Palladio L", serif;
+font-style: normal;
+font-weight: bold;
+font-size: 92;
+text-anchor: middle;
+fill: #FFFFFF;
+}
+]]></style>
+</defs>
+<!-- <rect x="2.25" y="2.25" width="472.5" height="139.5" class="cA"/> -->
+<!-- 1 -->
+<g mask="url(#MH1)">
+<g mask="url(#MV1)">
+<rect x="0" y="0" width="218.25" height="92.25" class="cD"
+ />
+</g>
+</g>
+<!-- 2 -->
+<g mask="url(#MH2)">
+<g mask="url(#MV2)">
+<rect x="258.75" y="51.75" width="218.25" height="92.25" class="cC"
+ />
+</g>
+</g>
+<g>
+<path class="cB"
+d="M366.75,42.55
+C366.75,42.09 366.75,41.61 366.75,41.11
+C366.75,37.55 366.75,35 366.75,32.25
+C366.75,29.5 366.75,26.12 364.26,22.81
+C361.76,19.5 357,16.72 348.75,15
+C340.5,13.28 327.13,12.29 311.92,11.77
+C296.71,11.25 281.75,11.25 270.75,11.25
+C259.75,11.25 251.16,11.25 240.51,11.25
+C229.85,11.25 222.75,11.25 222.75,11.25
+"
+/>
+<polygon class="cE"
+points="371.07,28.15 366.75,42.55 362.43,28.15"
+/>
+</g>
+<g>
+<path class="cB"
+d="M110.25,96.75
+C110.25,96.75 110.25,99.34 110.25,102.89
+C110.25,106.45 110.25,109 110.25,111.75
+C110.25,114.5 110.25,117.88 112.74,121.19
+C115.24,124.5 120,127.28 128.25,129
+C136.5,130.72 149.87,131.71 165.08,132.23
+C180.29,132.75 195.25,132.75 206.25,132.75
+C217.25,132.75 225.84,132.75 236.49,132.75
+C241.93,132.75 246.44,132.75 249.55,132.75
+"
+/>
+<polygon class="cE"
+points="235.15,128.43 249.55,132.75 235.15,137.07"
+/>
+</g>
+<text x="366.75" y="128.25" class="cG"
+>PDF</text>
+<text x="110.25" y="78.75" class="cF"
+>PNG</text>
+</svg>
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-logo1.pdf b/obsolete/support/png2pdf/DOCU/png2pdf-logo1.pdf
new file mode 100644
index 0000000000..c8978a350d
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-logo1.pdf
@@ -0,0 +1,172 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.10)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 210 62 ]
+/CropBox [ 0 0 210 62 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+ /XObject 7 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+0 0 m 210 0 l 210 62 l 0 62 l h W n
+210 0 0 62 0 0 cm
+/R8 Do
+Q
+endstream
+endobj
+6 0 obj
+70
+endobj
+7 0 obj
+<<
+/R8 8 0 R
+/R10 10 0 R
+>>
+endobj
+8 0 obj
+<<
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 210
+/Height 62
+/BitsPerComponent 8
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 9 0 R
+/SMask 10 0 R
+>>
+stream
+GhVPTGt=/q(rqE;liu^Y4,T-``$hAo,Nt0q.f>Dt#G#rJfaX2^+X'EG5t,/d8QjJQ
+QV^Z072M4++sM`/h'$?Q>0QFsm'?')48Zb`^:UhV5$o@AHZu'LM>9-W4>ZTO(l8q^
+EDEAb&lD0W&TpJ^M5VZaLcV8j'GB]6?=eD-/3fbTrT^hs13W8dG]'R:]6Dqp0>\_o
+nJP-pCEVoZKt7pFCcF=jbaLJ'h7L#nraQf`m+3nmnOc@ZFMr=Wd@$LE[XLB/155Di
+cW[bfOccBUpk_1)7BuCC=^n,hbh9>h_ZungPghjGcB^%l1M3ko?#A3B\MLjGgKi.%
+9C2:b[XZ%/EMG4!=^lI2!]tk$N>q&(l.M9ffYOl"7EstTW#VTjBk":;0emL`$<C"i
+e:fZp@dK&"n::K9/&'!d*',?W3D$>W$Z<ZD6!,tD@n4;_Me#7FDO5qVlb\@0D"qtA
+L=!gI)[*q^d&ru#-TVc[e'cn4d;m:qh';2O8KB">AP%u9q+]:h"kN?3A&i=]#=r*?
+0k4[[#n]Ec65\OlgY/^<=G0l(JjCk^qY/Zr:.`B#8I3S0X.q7NCb5)"b:HfU;fd^(
+m)]n[=bFm<'-jXF_LfAiEk)So<;L*;\Ob2CDX1=`a,pG"V'5;XYSneP_LagY0n_Gr
+Jb4%QKieRh0bt%;R+!<h+_Q"S,WAdacC7>RKe%:5L\eu%p2!0g4aL4@(?V/-3DsH1
+M1]+!OEs8r)%q(#6!\3(>R'`D+#_1k^naiK,u'^(-CrB,Q`C2?c8L?jIV%'[6sY%6
+LHNsg;,Q]/-SoS'BeQi,OV@"X;WN/0Zfu;#Sl5lI3d1-EJ7Z8;2NJo93,$gu]sao0
+1eFjGW/.CQLX]c*NbA\cqUrKi:L8#6X=cDuOd*G+h&^^+=s[<hck1D/7ie>%pJ.e[
+=ONP#fF*h]i91Npda<e0FchftrthC^XQR1E<"W,9BBXd?Ltr9Y6WJW<9UVVg!qW>\
+0JnkBS#EB;4"$&tH''up*2mO^r-2N4N9`k"HS7c-;5a>l]Ngt5)7=L]QFlZRbMBe]
+#Ho!_m-%;T-Vi1Dn`0%m]6:I'9VS[R;s2l.<Sg>/El?[[`XLN.fU-jeaB<8p"R"9S
+16pBIl<jV9.%oe8X_6XBi.10ZQtXm8Dr3s[S=;&"B[>d'Dr&/M:kU.1_M(#f6E3lg
+^1CkfmN4X6o-Da(r=^o]jQ?J4U98rD#P6_lo9O%Nk0Ihj,2#EV!gV%O6DCX>;cciT
+ZgFjIoU@dKKA'O#CeZeuM)qA+1=0JmDQn4A^1#NhO1a]nHKqA'kPG&HLO]?L?bYU!
+:@X#GH./W#lZ)1`Dc'_-"i#&0B4^V/,T[oJK@Nts&e`'>3g5fZghYY&\btC%m+o:b
+6s[!&I,@+Bkc\=G*llm9q5@.JorM<6%j'dX-0i?3J+C`S?<&;u2:7<uU7Oi6e6UnE
+SS)OAllBd!7*!eW="?m(fRrkHA%Y=-5Bl?WMgSPdX[=jqWp3iBNK7/"<*Yq4J>ak[
+J%fC%!>8f0Y%PZY76M8PQm>OFc5_<(UmUS/.OsH6](t_C:cGCS.oC.O6qoBmg:f_B
+2GHlFd%E[bW@KAnPe;:j2Ka_-DVmsFCj;eR3gjTP4Ad)A+<O0J'2tjm<sGYiKaV_G
+-J#Z0@_8MgWPaf8-'c:h@XaMoq9<e?hU\D)hmcP1/*["Z*Y[SHX56lZ-jk4&#P=sA
+n:8cR.8EF!Q]^bK?_K`2\ci(FARZHnokO"<X(SQBG--!k>,m;'Jd">4gR9UgpCf./
+]t67#cH22QWNBu'B.0*!Q-1:,4/bZT*^+afZ0YIo.V:BT?1lkGo-1p'cR(>VOcf(L
+IH6-eG3ssn5.f[ELIk"4RScuSpcuBVo&GM=3>QFDA;J-]@DbLB4[Kk&5;<2uf*B&)
+g"G@a/r8\p6)1SU(I_453-DH#S](FQC$3ba:q(>58:L]a@085X)Mi(Te=h8'?:eIp
+!-n<[gXLrBoKR$=)2hp3()6%AF6>#n&ES#s\;=$Yf3nWU;_:oAn6s\*_"urU9$`qp
+e2;@5YQ0loH#k[%fX"*A4a)d_CZs7o-2A7RW8MOI"quiH"PNP6;s.GgWZp`FT"=X_
+q:iAB"X["TnjF0*,Prt4d:qV0@=P7,;>4u]&j*!D2HDB<?kXpaS3'\Nnu5Q?OC1Zr
+&Rh4TlSK1obo].cS[:s/.@=1ISPb1+WB@u-F,0MX*GAKJl)mUK;P-/eFl>h2*[W7m
+W/=FErOY%f6J.0V%o+aYl)kn4Q,9hjW!c,\**=?V+I#NFp.VND(+jo/HfO)gEYMr=
+3ZW"b7eY*LEnJ=PP7DV8;F@5i3K']PM]F^\B9.ZbQIHJFPP,*@b9.aHejN2j\=H(<
+&TsC_m@'(\U1A+aPsj-Da).4-r9_fAF[TN>lH.9BnOcQZmB2Tj3d"B!qRBeEr"$A2
+C=(HV,`$isUFTDjZXuU2rMRqc!:&`QK-4*JQ(&Ii%j"]b,?>1X-&%_t!<X$'3G+6;
+T`deR77Ys[KFcnMM1%B8gMYi1?ZhksmGE&OYQttdEH1!ljLK?s2[&X^?_P9HF^!hX
+YFi<Ai'8S7I+9^)q9%/dmoV,`2(M>L6e'Y+lD@>nKBPAOYH/H3nY7eikGg$+[od>.
+]\DY\T]5No4">5uG.j.*%7sD/5BB<`4Cj6`,ar#PG`ep4Vegtac3]?+,O1(GU5hXk
+&TpJ^;+DhqLcV95c;XI%)E+J4~>
+endstream
+endobj
+9 0 obj
+2776
+endobj
+10 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Width 210
+/Height 62
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 11 0 R
+/BitsPerComponent 8
+/ColorSpace /DeviceGray
+>>
+stream
+GhUuC4_Pg*'Z\hJ"V,@cJI`E1J_)!b+r8!3UH",;$c0YRJn6Q$Ko.Bkj+%4acB\o7
+=B-t+i$*lF,$^hY!='Sl71'pn:5)A.:d0aJee!Fk,[;LSMg[ApSTMK4O#MEp[ki57
+^IHqj*SpV[]_TmC2^?@g$#TEf2^[Ch@OD]T*=1',nW0i$C;hfs*SE:UU-k.D[nBcg
+mcB9KVrV;f[Ri<!jo3#g'moNILT`[$_sM`R]"H[oq_tMicTCF'L"m6uIH6E6hK8Ek
+^%#JVBZ?:_K&EQgV8[atqF&.4&HHYI5jj5G=$tK&%<"!CofV\J[9E/<m]ZT,f'c>"
+Z4MR"'U5tPMD#;)Bma"C,a>al;?H*='QYet[H>>F"sQCa8;C516m$s+8$muopCU6_
+Q"2"Pfnm`F9U;W0*R>&P-iiWF$#uGI]4]"E/O2cLa/O`iZ]$-cEB_mHG92Wma'B6&
+0XhV2bXBbDAQ)!M]?gs4)+]ns@XtE8^'D^6U(O+2+VK1bLesbh\>5OL8m?eUCk7D@
+83954G2W(2P!/)2)%0IbK1%P:Sgm*ALPVtA@>nl3KDd]DP).'%.nK2_JB14V)-.Ps
++knE7<!LWn=WLrqHk[GBEdhV]9r^-kc@^ca'2beu2q_GZ,)@R>&=`u&*A@f)5]i).
+a\EOEW#u82.!U.aEdRsF/D81f&>9lhTjL379]Z[rHGCcuMo`.q`!`/C).56JDqiaE
+?Z[Je*V;aQ>>b<S&.S"iI*tdSl(-i>dLpOjdX4I%'lH)sJ&S/MeWI2)5-n^>;fAKZ
+ME='07AW`%cuE$4qsrQ5<p[Ho$gELWFkF5rYY6p*B_Mc)<BGo's1\<)#GR;02$SeG
+%='-!Ka?$ODFYmVYm-<D*p"b?m")8Tg*72-G>Q8P.jA9(L0u)k]Eo$o-AmnL3eOpb
+lmD!Y'Pk4qPP!-G(B>faL1enaPn555p6W3t,CYIia&-l^7[7*&#V9Q03!)^_Qkdf%
+;OSDMJ]+ZY_If9:6u&tr'dT6"8;LA9#=KhpKr7gH9h,mE&r#oI9R)(a<9qsL!9pqT
+Dhn[@cR,U"V7h_-6r`KV[,B.;&^`WjbRqrbLF21+g.AZcr-2[!V)%6T"s":a1=<i+
+WU"_jiCiV]gQbOITbA%(L8\3<Gl18d2R<??V]-hU=JO.(e_d>meF19Z.M5R[l&&#(
+0mb,pq'GW#8?o%A6nWQ*'-X?NN_!.SGj1$iNhaE&$+i7?>*fmHU<A/JKIh%0PY\$;
+F,$1rZ&TJucA8F+I:\@NR$@kB"S*>'0quPV;hH1oAK08=OgB/-s$T-6,,\#,e)?6?
+U4ctb0@&k&.,M2[9XW<]GKL&N[TJ/]@2T#p[UILmpZm$prVjd[BUU9e;MU\j71[!R
+"kBE')-.Eib$pPlf,cL<[;,B)kBWi);iQJVc$rnIormf>RuLIO/i8#ZrZ_^JMI0IA
+=T,s2pLgBeDbN.-H)<I's8HcoKdK]YAY/G;=)7g&7Up-Y=N=4lf(\6\8?oJQ7t:ND
+nTaImT),Bam^+`Rk4\T:*%ue$5M7ui@Th?=]kHS9!3T+W&#=5THa!?s;=^Tc~>
+endstream
+endobj
+11 0 obj
+1605
+endobj
+xref 0 12
+0000000000 65535 f
+0000000010 00000 n
+0000000062 00000 n
+0000000117 00000 n
+0000000183 00000 n
+0000000381 00000 n
+0000000510 00000 n
+0000000531 00000 n
+0000000580 00000 n
+0000003557 00000 n
+0000003580 00000 n
+0000005390 00000 n
+trailer
+<< /Size 12 /Info 1 0 R /Root 2 0 R >>
+startxref
+5414
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-logo2.pdf b/obsolete/support/png2pdf/DOCU/png2pdf-logo2.pdf
new file mode 100644
index 0000000000..c32fc3c946
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-logo2.pdf
@@ -0,0 +1,173 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.10)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 210 62 ]
+/CropBox [ 0 0 210 62 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+ /XObject 7 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+0 0 m 210 0 l 210 62 l 0 62 l h W n
+210 0 0 62 0 0 cm
+/R8 Do
+Q
+endstream
+endobj
+6 0 obj
+70
+endobj
+7 0 obj
+<<
+/R8 8 0 R
+/R10 10 0 R
+>>
+endobj
+8 0 obj
+<<
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 210
+/Height 62
+/BitsPerComponent 8
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 9 0 R
+/Interpolate true
+/SMask 10 0 R
+>>
+stream
+GhVPTGt=/q(rqE;liu^Y4,T-``$hAo,Nt0q.f>Dt#G#rJfaX2^+X'EG5t,/d8QjJQ
+QV^Z072M4++sM`/h'$?Q>0QFsm'?')48Zb`^:UhV5$o@AHZu'LM>9-W4>ZTO(l8q^
+EDEAb&lD0W&TpJ^M5VZaLcV8j'GB]6?=eD-/3fbTrT^hs13W8dG]'R:]6Dqp0>\_o
+nJP-pCEVoZKt7pFCcF=jbaLJ'h7L#nraQf`m+3nmnOc@ZFMr=Wd@$LE[XLB/155Di
+cW[bfOccBUpk_1)7BuCC=^n,hbh9>h_ZungPghjGcB^%l1M3ko?#A3B\MLjGgKi.%
+9C2:b[XZ%/EMG4!=^lI2!]tk$N>q&(l.M9ffYOl"7EstTW#VTjBk":;0emL`$<C"i
+e:fZp@dK&"n::K9/&'!d*',?W3D$>W$Z<ZD6!,tD@n4;_Me#7FDO5qVlb\@0D"qtA
+L=!gI)[*q^d&ru#-TVc[e'cn4d;m:qh';2O8KB">AP%u9q+]:h"kN?3A&i=]#=r*?
+0k4[[#n]Ec65\OlgY/^<=G0l(JjCk^qY/Zr:.`B#8I3S0X.q7NCb5)"b:HfU;fd^(
+m)]n[=bFm<'-jXF_LfAiEk)So<;L*;\Ob2CDX1=`a,pG"V'5;XYSneP_LagY0n_Gr
+Jb4%QKieRh0bt%;R+!<h+_Q"S,WAdacC7>RKe%:5L\eu%p2!0g4aL4@(?V/-3DsH1
+M1]+!OEs8r)%q(#6!\3(>R'`D+#_1k^naiK,u'^(-CrB,Q`C2?c8L?jIV%'[6sY%6
+LHNsg;,Q]/-SoS'BeQi,OV@"X;WN/0Zfu;#Sl5lI3d1-EJ7Z8;2NJo93,$gu]sao0
+1eFjGW/.CQLX]c*NbA\cqUrKi:L8#6X=cDuOd*G+h&^^+=s[<hck1D/7ie>%pJ.e[
+=ONP#fF*h]i91Npda<e0FchftrthC^XQR1E<"W,9BBXd?Ltr9Y6WJW<9UVVg!qW>\
+0JnkBS#EB;4"$&tH''up*2mO^r-2N4N9`k"HS7c-;5a>l]Ngt5)7=L]QFlZRbMBe]
+#Ho!_m-%;T-Vi1Dn`0%m]6:I'9VS[R;s2l.<Sg>/El?[[`XLN.fU-jeaB<8p"R"9S
+16pBIl<jV9.%oe8X_6XBi.10ZQtXm8Dr3s[S=;&"B[>d'Dr&/M:kU.1_M(#f6E3lg
+^1CkfmN4X6o-Da(r=^o]jQ?J4U98rD#P6_lo9O%Nk0Ihj,2#EV!gV%O6DCX>;cciT
+ZgFjIoU@dKKA'O#CeZeuM)qA+1=0JmDQn4A^1#NhO1a]nHKqA'kPG&HLO]?L?bYU!
+:@X#GH./W#lZ)1`Dc'_-"i#&0B4^V/,T[oJK@Nts&e`'>3g5fZghYY&\btC%m+o:b
+6s[!&I,@+Bkc\=G*llm9q5@.JorM<6%j'dX-0i?3J+C`S?<&;u2:7<uU7Oi6e6UnE
+SS)OAllBd!7*!eW="?m(fRrkHA%Y=-5Bl?WMgSPdX[=jqWp3iBNK7/"<*Yq4J>ak[
+J%fC%!>8f0Y%PZY76M8PQm>OFc5_<(UmUS/.OsH6](t_C:cGCS.oC.O6qoBmg:f_B
+2GHlFd%E[bW@KAnPe;:j2Ka_-DVmsFCj;eR3gjTP4Ad)A+<O0J'2tjm<sGYiKaV_G
+-J#Z0@_8MgWPaf8-'c:h@XaMoq9<e?hU\D)hmcP1/*["Z*Y[SHX56lZ-jk4&#P=sA
+n:8cR.8EF!Q]^bK?_K`2\ci(FARZHnokO"<X(SQBG--!k>,m;'Jd">4gR9UgpCf./
+]t67#cH22QWNBu'B.0*!Q-1:,4/bZT*^+afZ0YIo.V:BT?1lkGo-1p'cR(>VOcf(L
+IH6-eG3ssn5.f[ELIk"4RScuSpcuBVo&GM=3>QFDA;J-]@DbLB4[Kk&5;<2uf*B&)
+g"G@a/r8\p6)1SU(I_453-DH#S](FQC$3ba:q(>58:L]a@085X)Mi(Te=h8'?:eIp
+!-n<[gXLrBoKR$=)2hp3()6%AF6>#n&ES#s\;=$Yf3nWU;_:oAn6s\*_"urU9$`qp
+e2;@5YQ0loH#k[%fX"*A4a)d_CZs7o-2A7RW8MOI"quiH"PNP6;s.GgWZp`FT"=X_
+q:iAB"X["TnjF0*,Prt4d:qV0@=P7,;>4u]&j*!D2HDB<?kXpaS3'\Nnu5Q?OC1Zr
+&Rh4TlSK1obo].cS[:s/.@=1ISPb1+WB@u-F,0MX*GAKJl)mUK;P-/eFl>h2*[W7m
+W/=FErOY%f6J.0V%o+aYl)kn4Q,9hjW!c,\**=?V+I#NFp.VND(+jo/HfO)gEYMr=
+3ZW"b7eY*LEnJ=PP7DV8;F@5i3K']PM]F^\B9.ZbQIHJFPP,*@b9.aHejN2j\=H(<
+&TsC_m@'(\U1A+aPsj-Da).4-r9_fAF[TN>lH.9BnOcQZmB2Tj3d"B!qRBeEr"$A2
+C=(HV,`$isUFTDjZXuU2rMRqc!:&`QK-4*JQ(&Ii%j"]b,?>1X-&%_t!<X$'3G+6;
+T`deR77Ys[KFcnMM1%B8gMYi1?ZhksmGE&OYQttdEH1!ljLK?s2[&X^?_P9HF^!hX
+YFi<Ai'8S7I+9^)q9%/dmoV,`2(M>L6e'Y+lD@>nKBPAOYH/H3nY7eikGg$+[od>.
+]\DY\T]5No4">5uG.j.*%7sD/5BB<`4Cj6`,ar#PG`ep4Vegtac3]?+,O1(GU5hXk
+&TpJ^;+DhqLcV95c;XI%)E+J4~>
+endstream
+endobj
+9 0 obj
+2776
+endobj
+10 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Width 210
+/Height 62
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 11 0 R
+/BitsPerComponent 8
+/ColorSpace /DeviceGray
+>>
+stream
+GhUuC4_Pg*'Z\hJ"V,@cJI`E1J_)!b+r8!3UH",;$c0YRJn6Q$Ko.Bkj+%4acB\o7
+=B-t+i$*lF,$^hY!='Sl71'pn:5)A.:d0aJee!Fk,[;LSMg[ApSTMK4O#MEp[ki57
+^IHqj*SpV[]_TmC2^?@g$#TEf2^[Ch@OD]T*=1',nW0i$C;hfs*SE:UU-k.D[nBcg
+mcB9KVrV;f[Ri<!jo3#g'moNILT`[$_sM`R]"H[oq_tMicTCF'L"m6uIH6E6hK8Ek
+^%#JVBZ?:_K&EQgV8[atqF&.4&HHYI5jj5G=$tK&%<"!CofV\J[9E/<m]ZT,f'c>"
+Z4MR"'U5tPMD#;)Bma"C,a>al;?H*='QYet[H>>F"sQCa8;C516m$s+8$muopCU6_
+Q"2"Pfnm`F9U;W0*R>&P-iiWF$#uGI]4]"E/O2cLa/O`iZ]$-cEB_mHG92Wma'B6&
+0XhV2bXBbDAQ)!M]?gs4)+]ns@XtE8^'D^6U(O+2+VK1bLesbh\>5OL8m?eUCk7D@
+83954G2W(2P!/)2)%0IbK1%P:Sgm*ALPVtA@>nl3KDd]DP).'%.nK2_JB14V)-.Ps
++knE7<!LWn=WLrqHk[GBEdhV]9r^-kc@^ca'2beu2q_GZ,)@R>&=`u&*A@f)5]i).
+a\EOEW#u82.!U.aEdRsF/D81f&>9lhTjL379]Z[rHGCcuMo`.q`!`/C).56JDqiaE
+?Z[Je*V;aQ>>b<S&.S"iI*tdSl(-i>dLpOjdX4I%'lH)sJ&S/MeWI2)5-n^>;fAKZ
+ME='07AW`%cuE$4qsrQ5<p[Ho$gELWFkF5rYY6p*B_Mc)<BGo's1\<)#GR;02$SeG
+%='-!Ka?$ODFYmVYm-<D*p"b?m")8Tg*72-G>Q8P.jA9(L0u)k]Eo$o-AmnL3eOpb
+lmD!Y'Pk4qPP!-G(B>faL1enaPn555p6W3t,CYIia&-l^7[7*&#V9Q03!)^_Qkdf%
+;OSDMJ]+ZY_If9:6u&tr'dT6"8;LA9#=KhpKr7gH9h,mE&r#oI9R)(a<9qsL!9pqT
+Dhn[@cR,U"V7h_-6r`KV[,B.;&^`WjbRqrbLF21+g.AZcr-2[!V)%6T"s":a1=<i+
+WU"_jiCiV]gQbOITbA%(L8\3<Gl18d2R<??V]-hU=JO.(e_d>meF19Z.M5R[l&&#(
+0mb,pq'GW#8?o%A6nWQ*'-X?NN_!.SGj1$iNhaE&$+i7?>*fmHU<A/JKIh%0PY\$;
+F,$1rZ&TJucA8F+I:\@NR$@kB"S*>'0quPV;hH1oAK08=OgB/-s$T-6,,\#,e)?6?
+U4ctb0@&k&.,M2[9XW<]GKL&N[TJ/]@2T#p[UILmpZm$prVjd[BUU9e;MU\j71[!R
+"kBE')-.Eib$pPlf,cL<[;,B)kBWi);iQJVc$rnIormf>RuLIO/i8#ZrZ_^JMI0IA
+=T,s2pLgBeDbN.-H)<I's8HcoKdK]YAY/G;=)7g&7Up-Y=N=4lf(\6\8?oJQ7t:ND
+nTaImT),Bam^+`Rk4\T:*%ue$5M7ui@Th?=]kHS9!3T+W&#=5THa!?s;=^Tc~>
+endstream
+endobj
+11 0 obj
+1605
+endobj
+xref 0 12
+0000000000 65535 f
+0000000010 00000 n
+0000000062 00000 n
+0000000117 00000 n
+0000000183 00000 n
+0000000381 00000 n
+0000000510 00000 n
+0000000531 00000 n
+0000000580 00000 n
+0000003576 00000 n
+0000003599 00000 n
+0000005409 00000 n
+trailer
+<< /Size 12 /Info 1 0 R /Root 2 0 R >>
+startxref
+5433
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf-logo3.pdf b/obsolete/support/png2pdf/DOCU/png2pdf-logo3.pdf
new file mode 100644
index 0000000000..52f9cc16d8
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf-logo3.pdf
@@ -0,0 +1,52 @@
+%PDF-1.4
+1 0 obj
+<< /Producer (fig2vect, see http://fig2vect.sourceforge.net) >>
+endobj
+2 0 obj
+<< /Type /Catalog /Pages 3 0 R >>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [4 0 R] /Count 1 >>
+endobj
+4 0 obj
+<<
+/Type /Page
+/Parent 3 0 R
+/MediaBox [0 0 162 50]
+/Contents 5 0 R
+/Rotate 0
+/Resources <<
+/ProcSet [/PDF /Text]
+/Font <<
+/ObjG 6 0 R
+>>
+>>
+>>
+endobj
+5 0 obj
+<< /Length 301 /Filter [/ASCII85Decode /FlateDecode] >>
+stream
+GhR::a[u^k&A0so5L`+u%rmb(As2II*Ur!URs5O;b@=e&T`2Wi&SE(")OdgjWpZm"
+Pmoi=p@%t9_\+lQ@A?_gcra8KQ^dI-Zn!Q`<TX.1pkfUfV6*]p63?RTCfQsT\cI,/
+:lhB4Hr%Y-MoGC;D,k,dQ/fI:a`3?C8B4P'4%MbP;M8m]E;rHi'kc6@D:AJb)%_(+
+F-7UsqTiqK87*-!S=Bc__omB%[YD+<Mla4*FLgZR-F6(RVKlsF1bp<14PnoO6=sbT
+H/d49J$=h158D$\E7dkd-Rp4-@9s$~>
+endstream
+endobj
+6 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /Times-BoldItalic >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000092 00000 n
+0000000144 00000 n
+0000000204 00000 n
+0000000378 00000 n
+0000000772 00000 n
+trailer
+<< /Size 7 /Info 1 0 R /Root 2 0 R >>
+startxref
+852
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf.pdf b/obsolete/support/png2pdf/DOCU/png2pdf.pdf
new file mode 100644
index 0000000000..3154e78423
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf.pdf
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf.ps b/obsolete/support/png2pdf/DOCU/png2pdf.ps
new file mode 100644
index 0000000000..6ec20ea28f
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf.ps
@@ -0,0 +1,2945 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
+%%Title: png2pdf.dvi
+%%Pages: 10
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: Times-Roman Times-Bold Times-Italic Courier
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips png2pdf
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource: TeX output 2003.07.22:1545
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: 8r.enc
+% File 8r.enc as of 2002-03-12 for PSNFSS 9
+%
+% This is the encoding vector for Type1 and TrueType fonts to be used
+% with TeX. This file is part of the PSNFSS bundle, version 9
+%
+% Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt
+%
+% Idea is to have all the characters normally included in Type 1 fonts
+% available for typesetting. This is effectively the characters in Adobe
+% Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro.
+%
+% Character code assignments were made as follows:
+%
+% (1) the Windows ANSI characters are almost all in their Windows ANSI
+% positions, because some Windows users cannot easily reencode the
+% fonts, and it makes no difference on other systems. The only Windows
+% ANSI characters not available are those that make no sense for
+% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
+% (173). quotesingle and grave are moved just because it's such an
+% irritation not having them in TeX positions.
+%
+% (2) Remaining characters are assigned arbitrarily to the lower part
+% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
+%
+% (3) Y&Y Lucida Bright includes some extra text characters; in the
+% hopes that other PostScript fonts, perhaps created for public
+% consumption, will include them, they are included starting at 0x12.
+%
+% (4) Remaining positions left undefined are for use in (hopefully)
+% upward-compatible revisions, if someday more characters are generally
+% available.
+%
+% (5) hyphen appears twice for compatibility with both ASCII and Windows.
+%
+% (6) /Euro is assigned to 128, as in Windows ANSI
+%
+/TeXBase1Encoding [
+% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
+ /.notdef /dotaccent /fi /fl
+ /fraction /hungarumlaut /Lslash /lslash
+ /ogonek /ring /.notdef
+ /breve /minus /.notdef
+% These are the only two remaining unencoded characters, so may as
+% well include them.
+ /Zcaron /zcaron
+% 0x10
+ /caron /dotlessi
+% (unusual TeX characters available in, e.g., Lucida Bright)
+ /dotlessj /ff /ffi /ffl
+ /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef
+ % very contentious; it's so painful not having quoteleft and quoteright
+ % at 96 and 145 that we move the things normally found there down to here.
+ /grave /quotesingle
+% 0x20 (ASCII begins)
+ /space /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+% 0x40
+ /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
+% 0x50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
+% 0x70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /asciitilde
+ /.notdef % rubout; ASCII ends
+% 0x80
+ /Euro /.notdef /quotesinglbase /florin
+ /quotedblbase /ellipsis /dagger /daggerdbl
+ /circumflex /perthousand /Scaron /guilsinglleft
+ /OE /.notdef /.notdef /.notdef
+% 0x90
+ /.notdef /.notdef /.notdef /quotedblleft
+ /quotedblright /bullet /endash /emdash
+ /tilde /trademark /scaron /guilsinglright
+ /oe /.notdef /.notdef /Ydieresis
+% 0xA0
+ /.notdef % nobreakspace
+ /exclamdown /cent /sterling
+ /currency /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft
+ /logicalnot
+ /hyphen % Y&Y (also at 45); Windows' softhyphen
+ /registered
+ /macron
+% 0xD0
+ /degree /plusminus /twosuperior /threesuperior
+ /acute /mu /paragraph /periodcentered
+ /cedilla /onesuperior /ordmasculine /guillemotright
+ /onequarter /onehalf /threequarters /questiondown
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /germandbls
+% 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+% 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /divide
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /ydieresis
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
+/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end md begin
+/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
+atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
+itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
+transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
+curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
+pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
+if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
+-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
+get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
+yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
+neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
+noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
+90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
+1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
+2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
+-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
+TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
+Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
+}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true def normalscale
+currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
+/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
+psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
+psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
+TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
+@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
+closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
+/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
+currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
+N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
+neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
+rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
+scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
+lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
+ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
+/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
+pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
+/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
+setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
+moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
+matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
+savematrix setmatrix}N end
+
+%%EndProcSet
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+TeXDict begin @defspecial
+
+ /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div
+Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff
+pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def
+/H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF
+/pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2
+sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint
+HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A {
+H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt
+sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub
+/pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch
+pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict
+/pdfmark known not {userdict /pdfmark systemdict /cleartomark get put}
+if
+
+@fedspecial end TeXDict begin
+39158280 55380996 1000 600 600 (png2pdf.dvi) @start /Fa
+130[60 1[60 2[60 60 1[60 60 60 60 1[60 60 60 60 60 60
+1[60 60 60 60 60 60 60 60 60 1[60 1[60 60 60 6[60 5[60
+16[60 2[60 1[60 2[60 60 60 60 60 2[60 60 60 1[60 42[{
+ TeXBase1Encoding ReEncodeFont }41 99.6264 /Courier rf
+/Fb 177[58 6[58 71[{ TeXBase1Encoding ReEncodeFont }2
+79.701 /Times-Roman rf /Fc 139[28 39 39 1[50 50 50 4[28
+1[50 4[50 53[25 44[{ TeXBase1Encoding ReEncodeFont }10
+99.6264 /Times-Italic rf /Fd 135[60 86 60 66 40 47 53
+1[66 60 66 100 33 66 1[33 66 60 40 53 66 53 66 60 11[86
+4[73 93 1[113 7[80 1[86 1[86 11[60 1[60 60 60 2[30 46[{
+ TeXBase1Encoding ReEncodeFont }34 119.552 /Times-Bold
+rf /Fe 105[50 35 26[44 50 50 72 50 50 28 39 33 50 50
+50 50 78 28 50 28 28 50 50 33 44 50 44 50 44 1[50 6[72
+94 1[72 61 55 2[55 72 72 89 61 2[33 72 72 55 61 72 66
+66 72 3[56 2[28 50 50 50 50 50 50 50 50 50 50 28 25 33
+25 2[33 33 33 4[41 30[55 55 2[{ TeXBase1Encoding ReEncodeFont }70
+99.6264 /Times-Roman rf /Ff 135[50 72 50 55 33 39 44
+1[55 50 55 83 28 55 1[28 55 50 33 44 55 44 55 50 11[72
+4[61 78 6[78 2[66 1[72 66 9[50 50 1[50 50 50 50 50 2[25
+46[{ TeXBase1Encoding ReEncodeFont }37 99.6264 /Times-Bold
+rf /Fg 135[72 104 72 80 48 56 64 1[80 72 80 120 40 80
+1[40 1[72 48 64 80 64 80 72 11[104 5[112 9[96 1[104 96
+12[72 72 72 72 72 49[{ TeXBase1Encoding ReEncodeFont }31
+143.462 /Times-Bold rf /Fh 134[60 3[60 1[47 40 1[60 1[60
+1[33 2[33 1[60 1[53 3[53 21[86 47 40 4[86 16[60 60 1[60
+1[30 40 30 44[{ TeXBase1Encoding ReEncodeFont }21 119.552
+/Times-Roman rf /Fi 141[57 1[86 86 86 134 4[86 86 57
+76 86 2[76 12[105 33[86 50[{ TeXBase1Encoding ReEncodeFont }13
+172.188 /Times-Roman rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: A4
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a 0 0 a
+SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package)
+/Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark
+end
+ 0 0 a Black 0
+TeXcolorgray 257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray
+257 266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black 257
+473 a
+SDict begin [ /Count -0 /Dest (section.1) cvn /Title (Overview) /OUT
+pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ /Count -2 /Dest (section.2) cvn /Title (Usage) /OUT pdfmark
+end
+ 257 473 a 257 473 a
+SDict begin [ /Count -2 /Dest (subsection.2.1) cvn /Title (Common dkapp options)
+/OUT pdfmark end
+ 257 473
+a 257 473 a
+SDict begin [ /Count -0 /Dest (subsubsection.2.1.1) cvn /Title (Help and version information)
+/OUT pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ /Count -0 /Dest (subsubsection.2.1.2) cvn /Title (Permanent options handling)
+/OUT pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ /Count -0 /Dest (subsection.2.2) cvn /Title (Png2pdf options)
+/OUT pdfmark end
+ 257
+473 a 257 473 a
+SDict begin [ /Count -2 /Dest (section.3) cvn /Title (Examples) /OUT
+pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ /Count -0 /Dest (subsection.3.1) cvn /Title (Overview)
+/OUT pdfmark end
+ 257 473 a 257 473
+a
+SDict begin [ /Count -0 /Dest (subsection.3.2) cvn /Title (Explicit background color)
+/OUT pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ /Count -0 /Dest (section.4) cvn /Title (Colored background)
+/OUT pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ /Count -3 /Dest (section.5) cvn /Title (Background effects)
+/OUT pdfmark end
+ 257 473 a 257
+473 a
+SDict begin [ /Count -0 /Dest (subsection.5.1) cvn /Title (Mixing against background color)
+/OUT pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ /Count -0 /Dest (subsection.5.2) cvn /Title (Adding an image mask)
+/OUT pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ /Count -0 /Dest (subsection.5.3) cvn /Title (Using alpha channel)
+/OUT pdfmark end
+ 257 473
+a 257 473 a
+SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW
+pdfmark end
+ 257 473 a 257 473 a
+SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark
+end
+ 257 473 a 257 473 a
+SDict begin H.S end
+ 257
+473 a 257 473 a
+SDict begin 14.5 H.A end
+ 257 473 a 257 473 a
+SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark
+end
+ 257 473 a Black Black
+1121 2323 a Fi(The)44 b(png2pdf)f(program)1383 2772 y
+Fh(Dipl.-Ing.)30 b(D.)g(Krause)1552 3070 y(July)g(22,)f(2003)p
+Black Black eop end
+%%Page: 1 2
+TeXDict begin 1 1 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black 307 x
+Fg(Contents)257 678 y
+SDict begin H.S end
+ 257 678 a 257 678 a
+SDict begin 14.5 H.A end
+ 257 678 a 257
+678 a
+SDict begin [ /View [/XYZ H.V] /Dest (section*.1) cvn H.B /DEST pdfmark
+end
+ 257 678 a 0 0.5 0 TeXcolorrgb 257 796 a
+SDict begin H.S end
+ 257 796
+a Ff(1)100 b(Ov)o(er)o(view)815 796 y
+SDict begin 14.5 H.L end
+ 815 796 a 815 796
+a
+SDict begin [ /Subtype /Link /Dest (section.1) cvn /H /I /Border [0
+0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 815 796 a Black 2630 w Ff(2)p 0 0.5 0 TeXcolorrgb 257
+1016 a
+SDict begin H.S end
+ 257 1016 a Ff(2)g(Usage)662 1016 y
+SDict begin 14.5 H.L end
+ 662 1016 a
+662 1016 a
+SDict begin [ /Subtype /Link /Dest (section.2) cvn /H /I /Border [0
+0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 662 1016 a Black 2783 w Ff(2)p 0 0.5 0 TeXcolorrgb
+407 1137 a
+SDict begin H.S end
+ 407 1137 a Fe(2.1)k(Common)24 b(dkapp)g(options)1595
+1137 y
+SDict begin 14.5 H.L end
+ 1595 1137 a 1595 1137 a
+SDict begin [ /Subtype /Link /Dest (subsection.2.1) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1595 1137 a Black 32 w
+Fe(.)50 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black 149 w(2)p Black 0 0.5 0
+TeXcolorrgb 636 1257 a
+SDict begin H.S end
+ 636 1257 a Fe(2.1.1)119 b(Help)24
+b(and)h(v)o(ersion)f(information)2131 1257 y
+SDict begin 14.5 H.L end
+ 2131 1257
+a 2131 1257 a
+SDict begin [ /Subtype /Link /Dest (subsubsection.2.1.1) cvn /H /I
+/Border [0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 2131 1257 a Black 94 w Fe(.)50 b(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black 149 w(2)p Black
+0 0.5 0 TeXcolorrgb 636 1378 a
+SDict begin H.S end
+ 636 1378 a Fe(2.1.2)119
+b(Permanent)25 b(options)e(handling)2074 1378 y
+SDict begin 14.5 H.L end
+ 2074
+1378 a 2074 1378 a
+SDict begin [ /Subtype /Link /Dest (subsubsection.2.1.2) cvn /H /I
+/Border [0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 2074 1378 a Black 76 w Fe(.)50 b(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black 149 w(2)p
+Black 0 0.5 0 TeXcolorrgb 407 1498 a
+SDict begin H.S end
+ 407 1498 a Fe(2.2)104
+b(Png2pdf)24 b(options)1293 1498 y
+SDict begin 14.5 H.L end
+ 1293 1498 a 1293 1498
+a
+SDict begin [ /Subtype /Link /Dest (subsection.2.2) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1293 1498 a Black 35 w Fe(.)50 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 149 w(3)p Black 0 0.5 0 TeXcolorrgb 257 1718 a
+SDict begin H.S end
+
+257 1718 a Ff(3)100 b(Examples)822 1718 y
+SDict begin 14.5 H.L end
+ 822 1718 a
+822 1718 a
+SDict begin [ /Subtype /Link /Dest (section.3) cvn /H /I /Border [0
+0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 822 1718 a Black 2623 w Ff(5)p 0 0.5 0 TeXcolorrgb
+407 1838 a
+SDict begin H.S end
+ 407 1838 a Fe(3.1)k(Ov)o(ervie)n(w)1026 1838
+y
+SDict begin 14.5 H.L end
+ 1026 1838 a 1026 1838 a
+SDict begin [ /Subtype /Link /Dest (subsection.3.1) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1026 1838 a Black 78 w Fe(.)50
+b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black
+149 w(5)p Black 0 0.5 0 TeXcolorrgb 407 1959 a
+SDict begin H.S end
+ 407 1959
+a Fe(3.2)104 b(Explicit)23 b(background)i(color)1677
+1959 y
+SDict begin 14.5 H.L end
+ 1677 1959 a 1677 1959 a
+SDict begin [ /Subtype /Link /Dest (subsection.3.2) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1677 1959 a Black 25 w
+Fe(.)50 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)p Black 149 w(6)p Black 0 0.5 0
+TeXcolorrgb 257 2179 a
+SDict begin H.S end
+ 257 2179 a Ff(4)100 b(Color)n(ed)25
+b(backgr)n(ound)1284 2179 y
+SDict begin 14.5 H.L end
+ 1284 2179 a 1284 2179 a
+SDict begin [ /Subtype /Link /Dest (section.4) cvn /H /I /Border [0
+0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1284
+2179 a Black 2161 w Ff(7)p 0 0.5 0 TeXcolorrgb 257 2399
+a
+SDict begin H.S end
+ 257 2399 a Ff(5)100 b(Backgr)n(ound)27 b(effects)1226
+2399 y
+SDict begin 14.5 H.L end
+ 1226 2399 a 1226 2399 a
+SDict begin [ /Subtype /Link /Dest (section.5) cvn /H /I /Border [0
+0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1226 2399 a Black 2219
+w Ff(8)p 0 0.5 0 TeXcolorrgb 407 2519 a
+SDict begin H.S end
+ 407 2519 a Fe(5.1)104
+b(Mixing)23 b(against)h(background)g(color)1961 2519
+y
+SDict begin 14.5 H.L end
+ 1961 2519 a 1961 2519 a
+SDict begin [ /Subtype /Link /Dest (subsection.5.1) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1961 2519 a Black 40 w Fe(.)50
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 149 w(8)p Black 0 0.5 0 TeXcolorrgb 407 2639 a
+SDict begin H.S end
+
+407 2639 a Fe(5.2)104 b(Adding)24 b(an)h(image)f(mask)1558
+2639 y
+SDict begin 14.5 H.L end
+ 1558 2639 a 1558 2639 a
+SDict begin [ /Subtype /Link /Dest (subsection.5.2) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1558 2639 a Black 69 w
+Fe(.)50 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black 149 w(9)p Black 0 0.5 0
+TeXcolorrgb 407 2760 a
+SDict begin H.S end
+ 407 2760 a Fe(5.3)104 b(Using)24
+b(alpha)h(channel)1450 2760 y
+SDict begin 14.5 H.L end
+ 1450 2760 a 1450 2760 a
+SDict begin [ /Subtype /Link /Dest (subsection.5.3) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+
+1450 2760 a Black 28 w Fe(.)49 b(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 149 w(9)p Black Black 1851 5637 a(1)p Black eop
+end
+%%Page: 2 3
+TeXDict begin 2 2 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.2) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black 257 473
+a
+SDict begin H.S end
+ 257 473 a 257 473 a
+SDict begin 14.5 H.A end
+ 257 473 a 257 473 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1) cvn H.B /DEST pdfmark
+end
+ 257 473 a 100
+x Fg(1)144 b(Ov)o(er)o(view)257 796 y Fe(The)25 b(png2pdf)f(program)h
+(can)g(be)g(used)f(to)h(con)l(v)o(ert)f(PNG)h(image)f(\002les)h(to)g
+(PDF)g(\002les.)257 917 y(If)k(the)f(PNG)g(\002le)h(contains)e(an)h
+(alpha)g(channel)g(one)g(can)g(mix)f(the)h(image)g(against)f(a)h(back-)
+257 1037 y(ground)d(color)f(and/or)h(create)g(a)g(PDF)h(image)e(mask)h
+(or)g(PDF)g(transparenc)o(y)g(data.)257 1157 y(The)i(program)f(is)g
+(mainly)g(intended)f(for)i(pdfLaT)-7 b(eX)27 b(users)f(who)g(w)o(ant)h
+(to)f(create)h(\003yers)g(or)257 1278 y(posters)e(ha)n(ving)f(colored)g
+(background.)257 1456 y
+SDict begin H.S end
+ 257 1456 a 257 1456 a
+SDict begin 14.5 H.A end
+ 257 1456
+a 257 1456 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.2) cvn H.B /DEST pdfmark
+end
+ 257 1456 a 161 x Fg(2)144 b(Usage)257 1750
+y
+SDict begin H.S end
+ 257 1750 a 257 1750 a
+SDict begin 14.5 H.A end
+ 257 1750 a 257 1750 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.2.1) cvn H.B /DEST
+pdfmark end
+ 257 1750
+a 120 x Fd(2.1)119 b(Common)30 b(dkapp)h(options)257
+2058 y Fe(The)21 b(program)g(uses)g(the)f(dklibs)g(library)h(set)f(for)
+i(preferences)g(handling,)e(localization,)h(log-)257
+2178 y(ging)j(etc.)257 2298 y(At)33 b(program)f(startup)g(the)h
+(permanent)f(options)f(are)i(read)h(\002rst)e(before)i(processing)d
+(com-)257 2419 y(mand)h(line)f(options.)50 b(The)31 b(options)g(used)g
+(are)i(the)e(result)g(of)h(combining)e(the)i(permanent)257
+2539 y(options)24 b(and)g(the)h(command)f(line)g(options.)257
+2706 y
+SDict begin H.S end
+ 257 2706 a 257 2706 a
+SDict begin 14.5 H.A end
+ 257 2706 a 257 2706 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsubsection.2.1.1) cvn H.B
+/DEST pdfmark end
+ 257
+2706 a 99 x Ff(2.1.1)99 b(Help)25 b(and)g(v)o(ersion)g(inf)n(ormation)p
+Black 418 2993 a Fe(\225)p Black 48 w(-h)501 3113 y(--help)501
+3234 y(sho)n(ws)f(a)h(help)f(te)o(xt.)p Black 418 3437
+a(\225)p Black 48 w(-v)501 3557 y(--v)o(ersion)501 3678
+y(sho)n(ws)g(v)o(ersion)f(information.)257 3824 y
+SDict begin H.S end
+ 257
+3824 a 257 3824 a
+SDict begin 14.5 H.A end
+ 257 3824 a 257 3824 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsubsection.2.1.2) cvn H.B
+/DEST pdfmark end
+ 257 3824 a 120
+x Ff(2.1.2)99 b(P)n(ermanent)26 b(options)f(handling)p
+Black 418 4132 a Fe(\225)p Black 48 w(-c)h Fc(options)501
+4252 y Fe(--con\002gure)g Fc(options)501 4372 y Fe(con\002gures)f
+(permanent)g(options)e(\(preferences\).)p Black 418 4576
+a(\225)p Black 48 w(-u)501 4696 y(--uncon\002gure)501
+4816 y(remo)o(v)o(es)h(all)g(permanent)h(options.)p Black
+418 5020 a(\225)p Black 48 w(-C)501 5140 y(--sho)n(w-con\002guration)
+501 5261 y(sho)n(ws)f(the)g(permanent)h(options.)p Black
+1851 5637 a(2)p Black eop end
+%%Page: 3 4
+TeXDict begin 3 3 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.3) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black Black
+418 573 a Fe(\225)p Black 48 w(-r)25 b Fc(options)501
+693 y Fe(--reset)h Fc(options)501 814 y Fe(o)o(v)o(errides)33
+b(the)g(permanent)g(options)f(for)i(this)e(program)h(in)l(v)n(okation)f
+(and)h(uses)g(the)501 934 y(command)24 b(line)g(options)g(only)-6
+b(.)257 1101 y
+SDict begin H.S end
+ 257 1101 a 257 1101 a
+SDict begin 14.5 H.A end
+ 257 1101 a 257 1101
+a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.2.2) cvn H.B /DEST
+pdfmark end
+ 257 1101 a 128 x Fd(2.2)119 b(Png2pdf)31 b(options)p
+Black 418 1417 a Fe(\225)p Black 48 w(-p)25 b(1.2)501
+1537 y(-p)g(1.3)501 1658 y(-p)g(1.4)501 1778 y(--pdf-le)n(v)o(el=1.2)
+501 1898 y(--pdf-le)n(v)o(el=1.3)501 2019 y(--pdf-le)n(v)o(el=1.4)501
+2139 y(chooses)g(the)f(PDF)i(format)e(v)o(ersion.)p Black
+418 2342 a(\225)p Black 48 w(-m)h Fc(r)-11 b(,g)o(,b)501
+2463 y Fe(\226mix-background=)p Fc(r)g(,g)o(,b)501 2583
+y Fe(sets)26 b(a)h(def)o(ault)g(background)f(color)g(for)h(color)f
+(mixing.)35 b(This)25 b(background)h(color)h(is)501 2704
+y(used)c(if)g(the)g(PNG)h(\002le)f(does)g(not)g(contain)f(a)i
+(background)e(chunk)h(or)g(if)g(the)g(-s)h(option)501
+2824 y(is)h(used)f(\(see)h(belo)n(w\).)501 2944 y(-m-)501
+3065 y(\226mix-background=-)501 3185 y(turns)f(e)o(xplicit)g(mixing)f
+(of)n(f)i(and)f(lea)n(v)o(es)h(this)f(up)g(to)g(the)h(libpng)f(library)
+-6 b(.)p Black 418 3389 a(\225)p Black 48 w(-s)501 3509
+y(--mix-speci\002ed)501 3629 y(ignores)23 b(the)g(background)f(chunk)h
+(contained)g(in)g(the)g(PNG)g(\002le.)31 b(The)23 b(program)g(uses)501
+3750 y(the)g(background)f(speci\002ed)g(in)h(the)f(-m)g(option)f(\(see)
+i(abo)o(v)o(e\))f(re)o(gardless)g(whether)g(or)501 3870
+y(not)i(the)h(PNG)g(\002le)h(contains)d(a)j(background)e(chunk.)501
+3990 y(-s-)501 4111 y(--mix-speci\002ed=of)n(f)501 4231
+y(disables)g(this)g(beha)n(viour)-5 b(.)p Black 418 4435
+a(\225)p Black 48 w(-a)501 4555 y(--transparenc)o(y)501
+4675 y(passes)24 b(alpha)h(channel)f(data)h(from)f(the)h(PNG)g(\002le)g
+(to)f(the)g(PDF)i(\002le.)31 b(This)24 b(feature)h(is)501
+4796 y(a)n(v)n(ailable)f(for)h(PDF)h(format)f(1.4)f(only)-6
+b(.)501 4916 y(-a-)501 5037 y(--transparenc)o(y=of)n(f)501
+5157 y(denies)25 b(writing)e(of)i(alpha)g(channel)g(information)e(to)h
+(the)h(PDF)h(\002le.)p Black 1851 5637 a(3)p Black eop
+end
+%%Page: 4 5
+TeXDict begin 4 4 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.4) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black Black
+418 573 a Fe(\225)p Black 48 w(-i)501 693 y(--image-mask)501
+814 y(con)l(v)o(erts)25 b(the)g(alpha)g(channel)g(from)g(the)g(PNG)g
+(\002le)h(into)e(a)h(PDF)h(image)f(mask.)31 b(This)501
+934 y(requires)22 b(PDF)h(format)f(1.3)f(or)i(abo)o(v)o(e.)28
+b(By)23 b(def)o(ault)f(all)f(pix)o(els)g(ha)n(ving)g(opacity)h(0)g(are)
+501 1054 y(mask)o(ed)28 b(out.)39 b(The)28 b(-l)g(option)f(\(see)h
+(belo)n(w\))f(in)l(v)o(erts)g(the)h(le)n(v)o(el)f(so)g(only)h(pix)o
+(els)e(with)501 1175 y(full)f(opacity)f(are)h(dra)o(wn,)g(all)f(others)
+g(are)i(mask)o(ed)e(out.)501 1295 y(-i-)501 1416 y(--image-mask=of)n(f)
+501 1536 y(disables)g(image)h(mask)f(generation.)p Black
+418 1732 a(\225)p Black 48 w(-l)501 1853 y(--in)l(v)o(ert-le)n(v)o(els)
+501 1973 y(can)h(be)g(used)g(in)f(conjunction)g(with)g(-i)g(to)h(in)l
+(v)o(ert)f(the)g(image)h(mask)f(le)n(v)o(el.)501 2093
+y(-l-)501 2214 y(--in)l(v)o(ert-le)n(v)o(els=of)n(f)501
+2334 y(switches)g(back)h(to)g(normal)f(imak)o(e)g(mask)g(le)n(v)o(el.)p
+Black 418 2531 a(\225)p Black 48 w(-t)501 2651 y(--alpha-transparenc)o
+(y)501 2771 y(indicates)g(that)h(the)f(alpha)h(channel)g(contains)f
+(transparenc)o(y)g(data.)501 2892 y(By)h(def)o(ault)g(alpha)g(channel)f
+(data)h(is)g(interpreted)f(as)h(opacity)-6 b(.)p Black
+418 3209 a(\225)p Black 48 w(-t-)501 3329 y(--alpha-transparenc)o(y=of)
+n(f)501 3449 y(switches)24 b(back)h(to)g(def)o(ault)f(beha)n(viour)h
+(\(alpha)f(channel)h(is)g(opacity\).)p Black 418 3646
+a(\225)p Black 48 w(-b)501 3766 y(--\002ll-background)501
+3886 y(can)f(be)g(used)g(in)f(conjunction)g(with)g(-a)h(or)g(-i)g(to)f
+(\002ll)h(the)g(image)f(are)i(with)e(the)h(def)o(ault)501
+4007 y(background)g(color)h(before)g(applying)f(the)h(image.)501
+4127 y(-b-)501 4248 y(--\002ll-background=of)n(f)501
+4368 y(turns)f(background)h(\002lling)f(of)n(f.)p Black
+418 4564 a(\225)p Black 48 w(-f)501 4685 y(--\002le-time-check)501
+4805 y(inspects)19 b(the)h(modi\002cation)f(time)g(of)h(source)g(PNG)h
+(and)f(destination)e(PDF)j(\002le)f(when)501 4926 y(png2pdf)k(is)h(run)
+f(on)h(a)g(directory)-6 b(.)501 5046 y(-f-)501 5166 y
+(--\002le-time-check=of)n(f)501 5287 y(turns)23 b(modi\002cation)e
+(time)i(inspection)e(of)n(f)i(\(and)g(forces)h(a)f(con)l(v)o(ersion)f
+(for)h(all)g(\002les\).)p Black 1851 5637 a(4)p Black
+eop end
+%%Page: 5 6
+TeXDict begin 5 5 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.5) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black 257 473
+a
+SDict begin H.S end
+ 257 473 a 257 473 a
+SDict begin 14.5 H.A end
+ 257 473 a 257 473 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.3) cvn H.B /DEST pdfmark
+end
+ 257 473 a 100
+x Fg(3)144 b(Examples)257 705 y
+SDict begin H.S end
+ 257 705 a 257 705 a
+SDict begin 14.5 H.A end
+ 257
+705 a 257 705 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.1) cvn H.B /DEST
+pdfmark end
+ 257 705 a 120 x Fd(3.1)119 b(Ov)o(er)o(view)p
+Black 1286 2104 a @beginspecial 0 @llx 0 @lly 162 @urx
+150 @ury 1417 @rwi @setspecial
+%%BeginDocument: bmeps stefan_255_rgba.png
+%!PS-Adobe-2.0 EPSF-2.0
+%%BoundingBox: 0 0 162 150
+/pstr
+ 162 string
+def
+/inputf
+ currentfile
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+def
+%
+% created by bmeps 1.0.6 (SCCS=1.65)
+%
+gsave
+0 150 translate
+162 150 scale
+162 150 8 [162 0 0 -150 0 0]
+{ inputf pstr readstring pop }
+image
+K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&nc&c1A0r<0')iCH"q(eL&gh/5K)bND!6kET
+!=KP=*VpBU%graL!s8];4_2cgs8N$$b[_=o(]H)j-63mLqa(38#::H3&eYQV"o\T*
+$Y7J8rsEXS*??IR0I@ee62YEt5qr9b!$2"N!=oS;"pbA8"9SZ+"[1(errgP`*>0^u
+0EDtUrFl6tpb2q"0I@e\(CpoQ"o\W/!WrK*$RX)Xrs6q)0FJn80HFm,L]Ba>-3,b!
+5lbWuL]D/f5mB"`(D7)["o\W)"8r9&"!PmMrtB8j%gG=ULhUQh-63^>*@<I+BkdI#
+&nsWt0JFgo&dnmI"9\f.!s/N)rW3*Db`r,=cX]<L"pPSN*>](o&f2Q/-N6:3BkdL$
+")1%e0`EC&&dnmI"p=i-!<WB%!X/T+!Ws=aR/[e0&dAIH%L*+F%gECP%i6$&-8>Eb
+rb2IjLhUT&5mo@n-63m8%grOE!sA?#"9AQ*")48)$tLjl!s8`03(4bs(Dm&]";2^q
+0JNGkr+Z-r#;@hY-5$q%"oSPqA-"1frr/Sj!G!_[!so#2"p@W$KeOM`rXT/K*??I\
+0`"'8C&UC&-63^0"U,>5A,rt4oF:Kep@n=WqIKO%rVc`pV>g\E.g#hTrW3<,$O]Y?
+_M(GW*<d6"*@<*er';!1BgF'Y"pQSgp%7hFn*]T1m-F!:l4N@Km-X3/nac>FpA"L]
+r;HWoW;dUY"9S]-$5a*S!s9Q;_9C67BgFF"-N5"d-78^X'korf%gE5Ko^_P?mHWls
+j5]+Uhqd,fg]610h[e]+jlbprn+$&Dq"jperr/tu!7LiK!<aDA9FVsY$6;g\bg4Uk
+Bo")PrXp"f-:)?3*=FC(oC;88kiLj^gtLB1e'QJ;bnA@LdaQb"gu7;VlgF<9p\Ogd
+riQ22bQ\.N!usuS'H%l1(beD$rm)[?Ld<?u$O[IX*>/Q,AFo<XlK7'_g==[!c-")G
+_na(_]b8,u_oKpEdad(/j65n#p%eL`riZ83"p4o.##%\t*@;b"*"!jWrm(\#0GbB"
+"r/Y!o^V>6jl,%Ie'H1W_n`ss\[8ZJpTG79ZamW[^r+4;db!=8lL4B>qu-Murt],J
+!WiB09H4<Y-5]Dr#S2WjRAH<1&,l_M"=phNna,Gth:L*"a2>['\[/KCWiE"qUnmsa
+!MlOjV\H/2Xfo%;]"Pr#c-k>)kO/!;qu-N!rt$[^!<E6/9M?E5&KFJ<'FTWoR1?'I
+/KG3&/$n^2k2G%Cc2'R,2E!]]*?G!J)PEatU8+N^W2cu'ZF%0U_8XRFg>V8ap%eOb
+ZMt1g!s/N)!X`=Cqb.Y;##(GQXN]"E*=FCclK)Cs(`=4j*!$oprYYMHr?;/')ks(%
+Uo1/kWirV3[(3c]_8XRCe_T9QoCr.\rj2V*"9\W(!<Nu2?lU$e9Y8NpKcq$B3&jSk
+*#K@s%hBHs*>]>)&eYTO"oo&0"Tel6'`K6n4`4Z5Za@9S]thJ%`Q--Idb!=8m.'fG
+rVj/')?^*C!<E<C?sn^s@"r&s9F;ccKf9SU#S@Rfr$DXh*>/_`"9Sc&!WW9#!WW9"
+!ZM4G$P=(&*LFacb0A8Ze'lk!g>1fQmIU)LrVj2(!RClI!Z2#!@"t)NV5:8]R>*0s
+&J#U15s[1O&d&78!WW>r!rW-#!Wr/u)$0g?!tQ1gQeL6Phr3PSj5oIhmIBlFqu-N$
+rrHX5rW3fK@"sE4V6%;F]<%ht0SP>/c\3MH"7$!g"oSK&!W<*!"9&?*":o&.lg4W<
+$L[?OnauPMqY^?l[/V$I!s8T39ONUC]?8"5`59C'71r;?c\@0J.Kf8Dq?$g&"U##-
+"qV.Q%h9*\$O[@I!sU[Uo_%nUp'19dqYU3hrj2VD"9S],*+4Mt]?7t6bf@rD]6XT"
+XJLYZ?q_%4q>p["!rN-*"9\o>&eZ!gr]Lj(4[%oilL"$/nalDGZXaPVq>L-jqtpBj
+!r`,tZMtmH!Wj3HL7,-Vb0%rPb/Cp.K`hZhR@/ea?lK1MrW<$#"U"o3$PFKZ4VqYF
+a3Du]g>1fNkj7^*nalDHp@n@XqYU9iqu-KmZMt_O!WiH@@"tbpa3)HF_8=($XI0k,
+(l"IXL++&D!WrN-"9er:$T:.YUT1N.^Ve4?e(<C4j6#RlmI0T9o_%qPq"ad`rquco
+r;No"#\4#=(gr)p]u9om5/b:N_7QeFKcpX+3/**TKf9eY%grb'A<W7FS>)sc\\5o'
+cdUM"h;RDVkj%O%mdTc<o_%qPq"ad`r;?NlrViu"*@h6s9STC^a3)WKb/D-.]<&*%
+R>+Bp'FG3X2Ea5#OslN[S"?CTZb!rmb0SPgg>(NAiT&t\kNM3tmI'K6oCVbMq"ad`
+r;HTnric>?"9T?GL:bCHbf\/R_7d[dXJM>QL5'(c&N41uOo^Z+rfSgsQCFJAWjB:P
+`QHHOdaQauf@em3h;-uIiT'(`lKmp,nalDHp\F[`r;HWoYl>OA"AFQOa2H-Ca3)Q@
+]<%j*R>-H(9K3GkrK@,@rfR\SQCFJAWj91K_8F=6rQ5/cc2Q$*daHUrf@o'<iT'(a
+lg=02o_/(Vr;HWo`;]k^bjbW;!X`>']?81<rlP;d_7T]7#)6Mn9H4OQrK@)?rfR_S
+QC+8<Vld;9]"Pkn_#(qd_o'I6a3)ZQd*pV"gu%)Pkj.[,o_/+Xr;HW6rrGQ)nc'D9
+"AFQ<_7e"8b0%rPXK87dL5')09H4Q@P5UICP*#[+$BpdCS"QOTXfo%:rNuO6rjiu\
+^VRb(`Q--Id*pV#h;RJZm-jN=q"jpfrl>$?0Q^Lgrtd1"@"tc$b/D?Ebf[uB]<%j*
+L1"C_3"5eLrfHu>$Bp^@S"?@MVlHc!rN@?LZEpmE\[f;b^VRb(a2c?KdaQh%h;RJZ
+m-jQ>q>:-iaSu?M?^u$)rsI'T9STCWb/_ZIbl,Zl]>;+UL5')D3!K^?rfHu>$'UU>
+R%'\?U8OpgWrB1FZEpmJ]"5Si_8F74b0%uTdact'h;RDVkj7a-p%\C]rr1(?"O(4p
+FC=\>*%M_XV5;#Ha3)QKbf\)P_7QeFR>-H(9G%C3$BY+I16[rgR%'\?U84`fWirV3
+[(3cZ]tqP(a3)ZQd*gCnf@em6hr3VXkN_F%nalJLqY^?lb5VT0CjK&uo)Ast9UV`Y
+]tqD)rQGJgbf%-*V4%=;"^i#I"9f/1Ou/AeQC")4TVJEbXfo%;\[oJi_o9[=c-Xqi
+f@o$9hr3PSjlYaklg=*.nF?)Ap@nC[rVlf>rrd5'Cnju"rrr[8RAHan]DfqSbf\0/
+apl1g]<%EgL0utD!sAf:rfS^oPa7f/TVSNgZF%0R]tqV,b0A;^f@o'<iT'%_kj%O%
+mI'H4nac;Dp&=Xip\=R\qu$ElgA_4L.EqJb"^k\gHD<t"rt?B,XLl0Zb.Gg0bfn5P
+`6-$:_Rof8!esAVrW=DL$^-^<Q^aSAW3<S>^r+48c-Xqkg"bQHjlbpqmI0T8oCV\J
+rq6Hgp\=R_qYp?qr;?Nlrr1XO"+#&U.JNiHbYF[EX-6r]rt%l#]:$:R]u7V,b08#P
+b/_R%]*5%!L5'(ZrW=;H"U^HZS"?FUZb"&pc-t4sh;RDUkN_I&naZ8Ep@n=Wq>U3k
+qtp?iq#10jg&D2$URZEmq#:P%S:Q!oCs;GL"&-CrXT#mh`6-6@bf\)A`5fKk];:pM
+R>*[(!s8Z0"U^WgUT1]7a3`AliT97fmI'N8o_%qPq>0sbrqu]mo)@5?"d>IOUQ[/'
+rs!@_S7&D*?hXO!rZD1?cV1sIV7XF]]uRt-b/DN?b/Con]<%ETR>+BH!sJT*(Bk#;
+W3X+We(j!ImI0T;p%J.UqYU0fr;QZkrl4sBRZj83UMS0Orrt0IJTRrnDYX56rr2lp
+rr*-QKtX=a`5Kgs`!+<"b.Gg4rk&/t)Pr0r(]smC"9Sc2&$<C]dbNsNnauPMqYU0f
+rr)co^AeD$RXq!0UIP1]#@Lr0@&(-2DYjA7rr2lpr"K%L"&-YFXMi'"`5K^7b/_H:
+a2.be)l9C!XG1+V"9\f0"9Jc2$ba^7j6Z=0q>:*grVZZ*rs)npPBrb"PA^@!"taq=
+@(!D+qYqT8rr)`jq>'mbA-.J*RB4??b0%ZFb/_-7a2H$=]DS`ER>+B@"9Sc/!sJc2
+ABifhme$;OrVlf'rs'B_PF?<_S6u6p##9JOHF:.equ6furquWfrq8)AqIB\%]pY:i
+V8pEjb0%Q:]u7"a_5t8F]=Y/4L0t\u!sA]/"U"u>b1YhBo_JF`riuJ'/,k_AFJG%;
+s8QV;FAAm;UWi]:43V(a/O2Wh5X6nQ?jd!/XK7hX]tqY0b/_H:`6,]n`2pSI]=Xo-
+L0tl'"9\c/"U"u44k&BUo(W%[riuJgb[?X)H?=I.s8QV;?XTq8HN4#h*C*A,?sn(u
+?sl`)?qq(1339`HL:s\%a2Gp0`5KL(]>:S\]<&iMV4!&X$N:,;"9S`/"U<6)jmD^9
+r;HW"rtd2LS<Ic2FNj_l?VGdHUMe:n5[\na?r$Z.r,`Y`!>rYSL7+m>]>qk.]tM7o
+]>V=nXT#g9XK87d3#Det!tGG:!sJikd+mgQp%eObriuJ7:7Ri#?Z]KM?qs%hX'bd3
+[JkLOUB.Ejri6$ori6AJ!Xbd*L8C<+]>=KY"hhOa]>qbb]*6'`V)T;!rW<Z7"U5)6
+$cUTNkO8-@r;Q]$rt''iS=Eqo?d)nE5dbp^.po(L[Jd-6[B#gD?muHd",4Fbrg=2,
+];;UF]=Ybgb/)$.rkSiO_ST\#*#&\X!tGG<"9erl`REZ+n+QVUriuJQ5b+@.:1,/O
+5Xi(uY>/&\bdFjZH=1,S5V4&f#n[m^"9M9>]pXVCXJMclX96;?]>X]\*5T8*_PK43
+*#K"e!sJf1"U"u:]#E.SkOA3ArVj8*.qE%*?lM@QH='E4'e)n"k<Q(aJYT:g%LEFM
+$O-tK'GV>m$j?\HXNIW!LAmSAV5=*k#f4-b_SO+3]1i2D'c@hq"9Sc0"U"u:YI_^%
+hrjP'qYgE&s!rYOCi!KQ0-;]0:*1p,0/or4:3rA:0+/0p$kEjY$jd+J%LWIB"AH\Q
+R>1[.rhTe"XLl*\_Z%a[_G'kI!uM^X"TAK8"9es>YI_d'hs0b+qu-Nos3/+T(o*Uk
+UR\*SRU7-c:-`n[UJ;g]DNgj)?sin,)aZkE.2<3p$Od+=#Y`I_XI5KQV6$)Q]>;>(
+b5TTcR8!Gs(_d;_!s8Z.!sCN[YI_d)iTp)C?tB;]:_gYC!.+Tc!,VUU%Sfc@S>11$
+?YjV2PI7K6qJ6gE68'>f"9AW>L;M0Q]<%j*XK9;:bQ>Xh9_o_G(`3qo"9JZ-"9U0I
+Vm="YfAi2o:bNnu<4i2,[3VfJH?uWeX.u2TPBpSeHDAfoX.uG9H?=7FCij#`0+@si
+*+5WBbR22"_T\FEXK7hE9_TMC(_d;]!s/Q/!sY6fW3X4`g6_<Q?pK9B]DqT4&YhZ]
+?Pj`.S6gMVPI8`EbfmKkbS.CbH9qfM*&q>\_T^6@KcD(+9K;bdrYP\N$4-S4%Klp$
+S"cpi_p[Eo?rTBjra5_Dmf*JdHD>dn/^2lIppC[7F=@SIH:8;J2b[t4Coatiqm?g4
+H?r=:.2scZ"r%pR*!K#03#NDEoGe#O(_df$$N1&>"9^6AS7HM@DJiE*?rU*%>0P4Z
+rr>glH3.JXbh<!r?i5!aUTBuL?muI5X)p98";P6X??Dsg?n301%N?/^%L<mc%LW@@
+#S\-R*!-ro'_E@L)&O2)'FG!A!sJlZ4VT>6rEok,<#\(f@!#TNDY=#10M_UT"\qK]
+7:8mDs8FH!*C-C$XIPfUXEmXBX'[e"'i\p_?_b$<'aXsE'HIYn$k!OZ%LW@A#S\*q
+*#\_q!>l[I*<$c^*#K@s"p+l2$kO6S.0qFX.n)]l*u>mq:'XHf:1.I::2]t/!R,H\
+?j&nn:.7VN2Z[<(gA_L6/PJj5XIP`\[C,tZ*jqb..htBWC/g_)cVP)]$PXZm%M^EX
+:gd[-74B#[q],SP!Z;sqrYttV*$"hm%MT0Q"qD4a.2s?F)^u^Vr[A9q)_3jB5Ue-@
+5W;GG?iE=i?OpOd?qsH^.n)-G.PN#7:<_Jm#*WjiHE<=!rj<*7FA>8"HD>R@(E`W_
+"Djj@Kb44n#7D8AJXigN\,FV_[tRQp)&sV6(^^ro*#TXk*;p]m'FG$S(E4;0.2s]T
+)_3?f.iT9D.lSCt2^oL?.fiC(rD!r3:3oZ(2blU[2]E\M)]'t_DVP17PF?<XPFT+k
+F@@Vn/KY]A(H4T0%Rsc2;Ojes0+JI,)g)(L!3H.F*/-Wm(GIct)&sV5'GMB(*#KM1
+*#KP1-85c6$P*+S$n3,7.k)DR)]L:V&.ndZ+"Jcj'b20%.k<;(0JGFE.lSt/)auG"
+.N8m/$P+1"DVP1+R[S>gPH:9-(E3hd+$qV&'FmPc*@^tc+((PGKa\G1Cm/s_UUR_Y
+[k/[D%KZb;'GqZ,*#KA()#P?R)#bjBL^O\$%M0X")^u^T.j$2\(F^jT%Ls$])\+A;
+%LWaV&1]7['e(RN.k)qe.Od;1%N>ff4`1`?)fFF1%$Q6aJZP;V0+Jp*!t>/^%kp=D
+6:)\^;Gp2`[@Id;0`GkhHF<a]6S0#_%M]HT!sf5J(`4,)'GqZ,'Gq/_*C1<('GV)o
+&/u]-.k)Df(E4e3&0!&$$j6bE";)1L":btS)_2j8(EXG4.K(1g+WCV)AGuN1(CspR
+q>TIT%73C'PFOs)9GA3O+$s?6F9#_J?NDT)r_b=iUUMZ^6;1a&X0oFG/I;Lh*tAbg
+!s8`7'GMAu$4$tG$jHhA&jZmk*u,e4%fRCd.k)8n)\=M0%N?i""p>,7!t5A:":GbW
+)]'(prYl.[)\F#$(E4)*@/Ks,rlkB?rVcWrrVc`pk5PfY$Z)#6%NA.b6>UcCP@J]V
+?VX9i0,-lF;GO!r7LUq:6@,]?[872:'d!o#*>^C>!sAl:#R1JA%Ls$Y$jd;-(GIE_
+(Ddf&'cSYP)_*?B.h2aq.g,qV"q1\?"9S`1$PsTo$O[FT%M9Ec(Bt!S)pJ6[&,uS,
+rVZNfq"OOXq>:*groa:fRP.!k.2=@?PC`Xq!1NkV1Qu]**C`prFJFC?.5+GkX/g=M
+(_d\p"qkW(L_gU2%M0!X$OdLT&/Q&t"u$iZ5Ue-&%fRCo.N8d8)[6i^"re@A\]*%T
+kO%a,A1Ice(H3cO"pP2B"pc.\)pJ9XrXf&+qt^!ZoC;>>nauPNr;HWYrs<%`0U#1;
+HBXkhrgEhgrL>(5S=Gcr'JDpF:7RMA.5-"BUT>OI'bh`(#ni%@5nsb;%MepP!XfSM
+rYHsk&f20H0I\"V)]KA..g?S9$k*FHA=f^)]unm]j6#Lai=6/%.5r\=raZ3L0Q,,0
+qYU3g')VP$p@RkAlK@9jkNq^1q"t$hl2M87@%<aN7O]E2Cm1EYR[foIRLPdUP>WhH
+6:O;3SU)_MrhBL%%fI(M$NgoR*AA<<%Ls3b%/pG;%M0Qo$QBKe%mg1865:FY"q_CL
+.k(iCA<W@LU8kT9b0nnqg=Oc74Tl-'.Nr]Xg>V2[md]rCp\4IXp\+:Nn*B,ph:gK6
+gu7Jbo_JFal2Mk4:6Ulm9Pf#K0,,*B/O2X%<)QCV67ETY'Lj`tSSfNErgYnW%MT`s
+%LE4M5qkSV'FkKZ"p4u8!t,\W(EX2'%hC?1.52JJ)[QcS!sT,MP*2#pR%C+U[(jTY
+aqDP,\igE3&J$$Db0o#$j6,aqn,;bimd95uhq?H(b0%uTfAGf\pA4aelMhM<JR;B-
+%NSN4PB98I*=`o,.5*@R.6/(K!u*C^ROK8!S9c1`%N#Zm+!313KnZ(>?qrs%$k*j^
+$O-eO)]K>-$O."U(Foe(&I&:@!sC-9rfT1(Q^aYGXg>RL^Uh"_Z`g6:4W"nB)`PUU
+dad(-iT'%^k2kX^gt0us`PK=(_8jmRiU$13r;Q!]&lOo8+(/sm%PLe'XIXH?7T*,R
+rDF2+;D/Li6@((2H=.En(I2AMr13_R*NZ?5FAO%h$jI1\+V#G+"9oDP)[uo[!WiH2
+""TK4Op@28Q^aSAW2fj#"Ke]$VP='],@hT#)`MZN`QHHRe^`@+e^`*ma2>[']",De
+_ogHckjeEFrp'Lp?CDQB09\j0'LG-&R]NuhD#Qp';@HN&;FVZIFAcI@7::69SH,,X
+PPKbEPEVH:STHFk$l9ij&/u#\$k<[P!sAN(!sSj<OSt=IPE_E'StMgQrMBUiT`1Mk
+TVA:n%Q?=8\[oPn`Vmgk`P]I(]",2T\[oPpb15D5nb;qZrp0RoHE:Ho05R1."!'j#
+9R<0,X9*9cHMhLb?=$T^R[Te<?rU,(;Z9/a63&\<64Za`?Yk:W[tQCQ.h2h$"9SQ)
+#mgY8!WrK,"-AWBOp@28QC+/3St>qSr1X1drh^#7*u>JJYHkLA\[h^N!P,T:ZOX@Q
+]tqb3db<aInb;qZrp0S4PH9'`.7/TV%MUQi;F4`SR]Nue?><e"*=WGuSXc3rCht1"
+":Gqt6N0FW;GotN6N0Fd;H-Un7RBdbSTH:_";_.A!X&?%!sA]."oaV]OpmP=QC!u.
+S=ZILUo10jWrB+,W\t\(&4NOtWic3&&[JaL\[oVrc-k5"j65t(q>C6Ws$<0G?UcIt
+Cmoo('JEEb7SJ,lR]N&H%1X'o7Y,k>FFb,J@!#d.%LEUZ.5+"W;FX,R;H."@Ci4'*
+?W:!3FAr_Vq#Ud'"p=u32NX$uOpmP<Pa@c,St`-_YHkM3\KJ8bY@J+mDPX)*W2cl"
+YHtUI_8X[Jg>CrSm-jT@qYgEYs#-s07P>i46@,20'GNl??=-B*JWlP3Caj7QJWiP0
+*FOF+'LkuBSV9lS#n@X`*uuFT0/#XF0E"3;9`A!(Cih<3!WrK*!s/Q1#R1>52NX$u
+Oq!V>QC+28UoLW*]"l5&rPp)#_nEUdA.U\qUo(#hXfo(B^W"IHg>V2Zmd]rCq"jpf
+rp'MM[qm]N+"8jLJZM<]'LltH?W9^FPEW)!;Jq\e*=WB0SPTe:6:OXjSXkI2*tAi&
+%M]]g'b1ci%Moif$P!n#6=;8A!Xf)3!sf5>"p+lbOHBC'%?m*FS>)pb[(XB"cdUGD
+fcettd)s>C\R]*JW2cl$Zb!ohb0nu%k3VU/p@nCZr;HWol2O,[7MIL)0/#e4R[l)G
+*E6om?W9^:JWlXU?^bjL#mMhRSLFpg0/#Xc@!%*n:`gVj(DdQ#&.T0d)]K7h!WrK+
+%Oh__!rrW+$3LJ6!YYKorfRbTPaIu8Wj94Rb1#&$iT:(%#j(+(g=+<c^Ua9K'"Yp"
+ce%"7lgXQ@q>1$erVc`pkl1dp*s<'&r\$9<HE:un!Yn[PCgUOC?@%0nP@#=?%L+@2
+JXm8\.5+.[01K;bSXiS!'b2#i(D%Dn%LWaQ"9\f/!r`9&":"c2!sSf.#l]ntP*2#n
+Q^a_LZG"<*g#;)YmI:)E)=HkSiS)c'`PK-s^VRt:db<[Dmdp/Jqu$EkroX5>SIPc*
+.4Ho'6>Ub70+A4%9R:M^?VFF:HCBC*$O[7_.70SV'GMWB7T)]B7T=2pSNmo"$k<XT
+rWWH5$NgP2#6"o)$8r(i!<cqpOHPcjQCFPFZG"<-h<""no_/%Sq=s^Xo^V>3iS)c*
+b/_ZIdb!=8lL=H@qY^<kro3q\JM.-97f=tI?XIo+*u#(m6>UK;?P,V2DLn>m'GV<8
++)[WK'd",CrC.&G7T=2p?k!5@rWEK2$Ps9W!sAl8p^.iD"p4l.2NX#`P*D<'UT_8L
+e)0?Wo_81Yr;7B.qY0[Qm,m9\f@/0sg>1fSn+?DPrVlfSrrkke.3DGor\"XG<(p[d
+*uuFF/So8&?P,V(DKLFH%MUQF6@k[VOCT1Wr'giV<,@,:'`BN^AH%Yo(]sjE#RL55
+(^L6H!WiakOHPflR%C7__9h!#n+HMRrVcZn(B+40qY0XNlfR0`h;-uKkj@s7qY^?l
+hu>2[@!"_M7NX9:/PJJa0-)KJ;B72cCi!HR6;1^-?O[Ju.3EGYJRjk((`tF07Kl+V
+Ck7.FqN(kk#m(58#l+f-#6"]=!WutpP*;3$U8kcEe`6&iq>C3jrql^%rr2lnq=aFK
+m-+H2#O(OCo_84\rndZ%/RW[-7LKn`68'u@+!2M$C2-3Y*DC9c?XHK#?Z\aD0/"b@
+HC[P)O9/r,0E"?D6;23aFC=s,"_7]:"9o//$5WsN!s8Z,!]H.'PEq]5YJ&39kjeEF
+rVlQk')qk-qt]sXna>f2m-X?8p\OjfhZ"B@@!$]J$4.e-0-;2K'N/[\HCA^n0.B6e
+F9Q#<<,>#Qr\"@iHC\IBO9/r,0E"?C6>W0C@/>rg.g#hT":"f1(Bt!E!WiK,!Xk*Q
+PF%f8ZG=iEm.C/Qrq6:'rr2loqt]sXnaZ,=o(DbRrVk[R+>6KjUN?kO%PKIL'FmHE
+C6P*fRU8;d#q95'H=0'=CdS+S"[[NdCljbWOodN^0E+ED6=67!AGVGh$2jo*"9&E(
+!sAN(&d&:="D![ZQ^jtZ_:%<0p%nXdoD]'prr)ckq=aL\oE=m_qYgEMs!]TfHD@PU
+$Oe$t'b2[-C4VnVXLD#:OH9nc0Q_V_9MB7l0/"b]HC\H*qiV4J+&#R17UMZTqN:ki
+"8`0!!u(e<!s8Z-!]H4*Q^jkW_:%<0pA=gXrseu,rVZNfp\+=Tq>:-ihZ"9C7UW!d
+9FD.7'b1paC6P0hXLCW/rK%S$$5>gKP@%:*7P?D]Cij'HqiV8LP8G`8;FY#W0Dpt9
+PEQ:S"8i3:!s/N+!WrQ-!=t?WQCObS^sM!+p&"^en,EdprVcZjqYC!br;HWOrt@^s
+6@,DK$OI+I$V"lpS?02j/S+^>%V,k\6?IN[DF-!0Ci#Y*r/qGOPa%JE*A:;[Ci!Y]
+Op7,7Pa;[X"8r9&!s8W(!tbY=!X*%tQCFYQ^!5I#o_SOcmf*Cgrr)foquZirrndYa
+6=*PtHCYl]$P#X@R[X5b!ZdMgplGnp#nAOo?=#rO9Pf#^rK7SQPa7Z'S"!q/7Rh2n
+rf[VPQC+-l!s8T,rW3*&!rW34"9JW_PEq]4Xh)[/lLXiMrp9[arr2isrr1aR'-1%M
+?_aA1$O[tiPH;6pS?-(^P5LF=OqM:4'JDp_5V6>NFC^PtPE_B#S,Aig?p[>!.?p'_
+R%0hF$3C>4rW;s!&-N(;%[*'DTW5QCg#qo#r;Q!]r;PLO'?idL9R<H_$P#XiXLFa-
+FIJbbP5UL:Os;Ie+$qDO@!Z4DPE_B#S=lUPVP^/`A3s6hA=/jVU8G'!!sAH&rW<c9
+!sAc/"D!aaSuB$6e`6,lqu4A1$RoCOHD;ns+*t#i;#Xf(S@;mhrfHu>!L&`HPRn<H
++"oQ\?n[\,Pa@l4VQ-ctY7IY34[NKrS=ZIPYI(tM!X&B&!<WK'!tYS:"#c@0S><I+
+d,43_qYgE/rtK!A??Dqk(gjA8+(Qm/:3<REP)te&Or'=HQC!r*Rq*s55V#T;7?`q$
+R%C(QYI"5>%CrgK4[MW4USb0"^W2H7"9&Au":bMFPEq]4YJ&*6lLXiMrkJIH04&"\
+.5.c1)!]n<+&l"!FHV`Ir/rOnPa@c,St;UJ(ICA95[[uaPa7f1VQ[A?_8XC2_7dBi
+6E7&fZb=?(f9cI=rW30(!sA`*":bM:A<`RVWk$1%jm`$BrkJIH*F<*C+)F3Wo]k5V
+A1^JsSNW-trK8@gQC")4U8OriWamVH/O3]O4dVP*TW#'*_91*Nd*9_N^UjEN#eIjp
+dbWqo!sJQ(rWEi9"9\f/4d;;)VmF:iiU-=7rVjV4'4b!JP92BsqXj(.c+Or\?`[Xu
+OT(C_PE_E(U8P#s[(3`S(ICAG:1-5SS"-4QZbOQ,ec+84e^Md^_8!b$`R!/pk3NHS
+!s&H(qZIE3!tLN\S"m1#c.qUUq>L<-s"cuXH7T!nqXj+0c+U4u:7Xk;OHPcjPa@l6
+Vm!YE_o9[8O=NXJ:1.J&St;^WZbOZ2g>W%k(#R]nc-")Ib0o#&kj;m_"9S]+!sAf+
+":bJ@PE_Q0Wk$1%jm`$BrkJIE6>T?qrr)]cleTh!Y@K.k<;hsdPEq]0Vm!\Lb0p:>
+):B?\.o'J[Vkg)`WjBI_e_T?Pm-O$"iS)o_dK\7UiTT_"$2t#.!W`E%":tb>"([X_
+Su8p4e)B]fqYgE/ruNh0'`\12qXs44c+U<U2GRYCP*;)qR%C+U\\lbHhu;XAiS#e9
+:/3sXXo>=)Zb=E-hrjD+nI=sRkMb7Ng"P9BkjItOrWE-$!X&]3rWE]52NsGrUT_AU
+h!4M,rVjV4&40&@s8W&pp?gba^osQ(.U`7?+dSLcU8kQ8c.V.@mI'E/kUAbl:rgA^
+ZELI<]#E+RkjS0Cp&t$XmH<O/i?.+DmIBg!!sAZ,!sAf4"9\o2/!H9gU8kcEfB)Mr
+r;OM3!C@n-s$?Y]p?png_m?842D(8^S"$"DVm!\Pe`#f_o_/"NnROm[0@e=d]t(JU
+]#2kMkOA0>qYL$]o^V>6kN:smmIBhTrW<r<"9eo4"p5#2/!H3bSu8p4e)B]fqYgE0
+rrF]^rr3o9r:f[?e]#)!U7RmFStMgRVld;Ac._=Jp%\O_558YR:13,9e&oM<\[o]'
+g?.ktq>:*fqt]sXna>c1mI'N;pF?=K!sJf34W"V9%V1fgQ^abR^!5?toD/@a_>aLG
+rVnYPr:ogFfugn0Vk]u]Vl6W!YHtp]dbX3Yp\OgdrVU2$.Iulhhpole]tM8)fAl;m
+qY^?k-N*c:p@RnEnF?,Dq"ZEB!sB$rb.Y!SSsYb,QCFVK\]<=`nb;t\]`/rMrVH0O
+hp9-GYH"V+ZF%0R]t_D+e`#ldq>C3jrY,6<qtTjRlJ^:<_na14e`#ogqYgBl"TA8p
+q"F^Z*qo@(qS*.;A=)9(`OW"CS!TA(R%C4^_pdT3pA=gf^&JWBrVQ<Vj422`\[8`T
+^r+.ja"GN_g#;;iq>C6ks8W)trVZNcn`o#^b/M9=dbjB_q>L<ls8W)trVZNfp\4IY
+qu6L1qY'IBgs*X?Vk09APa@o8YJ8?<lLaoNrk/7?rquN\kM"8$^qdk.c-lUA$.IAT
+h;dnpq>C6irt>>1r;--UkM4P/a3)iflLXiLrqud%rr)fnqtg3fr;QX3r;$$Qj422]
+YG7VSQBn#7Wk-7(kOJ?Frk/7Lrr)Zbm,?RBb0&)]g>ClLiSWJIiTBP"q>C6hrt580
+r;-*Rj4_l&c-kG3nbE%]qu6]rrqlZnrYYV3q"*e.d_iGlTUV:7S"?Rc`RX#;pA=j%
+ru1n8qtBLAhq?Q3gu7G^mHs9(jl>Len+HMSrqcX+rr2ijo'52cd*L7ukjeHGrqZTj
+rYtn:rr)`fnE/EH]s"?*S!]\:VmF:hiU-=8rVjJ0)?0R/oBbSthr3_anFQ;EoC2/5
+lg=69qYgEhrt#,-qY'C@h:L3/iTg"/r;Q0b)#jL1o^1Vd`OW"CSsu7CW3a=ehsC"3
+rVjJ0)?0U2p@7M5kN_L,pA"IZq"F=Ln+$&EqYgEgrso&+q=Et5h:g]Fm.:&NrpTk(
+rr2iin`S]P^pC&9TVA6^[):>Lm.C/Qrk/7=rr)cio^VA<nauSPrqm-#qY0^Uo_/+X
+rVlTl%fZG(p@7G.iSiqep%nXdmf++&rVH6Uj4DGeZDsk'Xg5X\e`#ogqYgE*rttb5
+qY0[To_/+XrVc`prVZQgq"X[^r;Q]irseu*q=O.@k3)+$pA=gfmJdt$r:omKhp]WZ
+\[/ZR]uA@PjmVp>rVjG/$3'o$qY9g[qYU6grW2uqrqccprVlNj%0$5&p[dk@mIBiE
+r;Q'_(&n1/p@7>%e&oYI_o9dHg#MDhp\b$$rrW2ur;QQqr;HWorVlotrqu]prq-3u
+rquWeo^_VHp\Xpgli.[urVH3UkMOtAdaH\!hrX1opA4ae\c2^0rqu]prqZTlrq$-t
+rr)ckq"OOXqY^?llMhOsr;$!RlJpj\iT'(cmdg)Jr;HW)s82fVrsA]'r;6?equ$El
+l2MCqrVZKbna>f2mI'N9pA"L^rVi#\!WN)sr;loskPl+mrVZNdp@\(Np@nCZr;HWo
+OoP=Xjo5J_rr)clrqZ`or;HTnrdt1:s8N#qrVleJs5s@[rdt0%s+:9&s+:9&s+:9&
+s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s6'C
+~>
+grestore
+showpage
+
+%%EndDocument
+ @endspecial Black 1301 2307 a Fe(Figure)25 b(1:)p 0
+TeXcolorgray 1694 2307 a
+SDict begin H.S end
+ 1694 2307 a 0 TeXcolorgray 0
+TeXcolorgray 1694 2307 a
+SDict begin H.R end
+ 1694 2307 a 1694 2307 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.1) cvn H.B /DEST pdfmark
+end
+ 1694
+2307 a Black Fe(The)g(original)f(image)p Black Black
+257 2564 a(In)h(the)e(e)o(xamples)g(section)h(we)g(use)g(the)g(image)g
+(stef)o(an_255_r)n(gba.png)e(from)i(the)g("Miscal-)257
+2685 y(lenous)g(T)m(ransparent)j(P)t Fb(N)t(G)r Fe(s)g(Using)d(Image)g
+(T)-8 b(ags")25 b(page)g(on)f(the)h(libpng)e(home)i(page.)257
+2805 y(The)g(image)g(contains)f(a)i(bird)e(on)h(white)f(background,)h
+(a)g(gray)g(shado)n(w)f(of)h(the)g(bird)g(is)f(cre-)257
+2925 y(ated)29 b(by)g(composing)e(a)i(black)g(fore)o(ground)f(color)h
+(against)e(the)i(white)f(background)g(using)257 3046
+y(the)d(alpha)g(channel.)257 3166 y(See)h(\002gure)p
+0 0.5 0 TeXcolorrgb 683 3166 a
+SDict begin H.S end
+ 683 3166 a 0 0.5 0 TeXcolorrgb
+Fe(1)p 0 0.5 0 TeXcolorrgb 733 3099 a
+SDict begin H.R end
+ 733 3099 a 733
+3166 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(figure.1) cvn H.B /ANN pdfmark end
+ 733 3166 a Black Fe(.)31 b(The)25 b(image)f(w)o(as)h(included)f
+(using)p Black Black 377 3369 a Fa(\\begin{figure}[ht])377
+3490 y({\\centering)377 3610 y(\\includegraphics[width=5cm]{s)o(tefan)o
+(_255)o(_rgba)o(.png)o(})377 3731 y(\\caption{The)57
+b(original)h(image})377 3851 y(\\label{img:bird})377
+3971 y(})377 4092 y(\\end{figure})257 4295 y Fe(The)23
+b(LaT)-7 b(eX)22 b(source)h(must)e(be)i(processed)f(using)f(pdfLaT)-7
+b(eX)23 b(three)g(times)e(to)h(mak)o(e)g(sure)h(to)257
+4416 y(ha)n(v)o(e)i(all)f(labels)h(and)g(bookmarks)e(recognized.)257
+4536 y(The)i(ne)o(xt)f(step)h(in)f(processing)g(is)g(to)h(run)f(ppo)n
+(wer4)g(to)h(ha)n(v)o(e)f(the)h(background)f(ef)n(fects.)257
+4656 y(Among)f(others)g(the)h(packages)g(color)l(,)f(ifthen,)h(ifpdf,)f
+(background)g(and)h(pause)g(are)g(needed)257 4777 y(for)h(the)g(e)o
+(xamples.)p Black 1851 5637 a(5)p Black eop end
+%%Page: 6 7
+TeXDict begin 6 6 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black 257 473
+a
+SDict begin H.S end
+ 257 473 a 257 473 a
+SDict begin 14.5 H.A end
+ 257 473 a 257 473 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.2) cvn H.B /DEST
+pdfmark end
+ 257 473 a 100
+x Fd(3.2)119 b(Explicit)31 b(backgr)n(ound)g(color)p
+Black 1286 1874 a @beginspecial 0 @llx 0 @lly 162 @urx
+150 @ury 1417 @rwi @setspecial
+%%BeginDocument: x1.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 162 150
+/pstr
+ 162 string
+def
+/inputf
+ currentfile
+ /ASCII85Decode filter
+ /FlateDecode filter
+def
+%
+% created by bmeps 1.0.6 (SCCS=1.65)
+%
+gsave
+0 150 translate
+162 150 scale
+162 150 8 [162 0 0 -150 0 0]
+{ inputf pstr readstring pop }
+false
+3
+colorimage
+GhVPUIu%C^IGcu/UXB!ae$5af;MI))-3Bs2-qHXI;gDG!ZqgU7Z0V<*OLOr3)Q-;$
+.&-To0S-[:']D#Xs4@UZnVWH5:e_T<C-`__9o-"u'$JZ,M$,mkG.b-H.!!jA8_2S@
+3M1Z5n*&VrYp>Aeo#s08*r"L$n%LaTF1slapO(:I^\UsFoLlsk9>C*l^[t16oLlsk
+9>C*l^[t16/=5qh07NoW]6A))reB>.d/*(?f2@*.FMtb&?uXre+Y(O&k8LKcHM%%4
+6bCJKN'p5@+0WJ>)Lj4eLh2!/V_bcU1V.&W2(M^Io!WBopRtqoAAKG?O*pGcD)Z@@
+._hM4i3Toj?DBD2M`/@FOE!O01N=mWqR@>C'ak:Fe3GA3qu61oPZ>"q=Xro=U>]mA
+o#-ENj"$5ZPs[&+L9lCTh0mjU9QK)B,KX,Of`p,-@,&)*'oKYsTkO\8FX0WPE3<H]
+8,B;??hs,6^FLEJ2-f(\Ym5dMQOd7C)q$4V:snB9[Xh>'$bFj?6$Y#6*mPB]S;D/g
+5Lp'fRIi9XFH#/kYiHN;3#&lM]cc7A.@6pB6lbL'']br+oLL(r6Heg>h>N,ecj'c+
+]cKTq3^F_jhbn^RLeGH*ng.XL]<r?6B*U!Get<84kg'_Jp-HH[U<h$ck;i/3f68aC
+8??erKs-<eqRNCA;Vs_ZMRkXe@i=8sY/@s,.7*PQ)?]a#_n+KPfP]QUd9[4rRb5P!
+TBLZ2HY;AL-^[A*,?2%-[ktL0#J6\('k-q7NFR+_M4\c2Q(L+F@c][ol/TB@^'ITW
+&I2.P55r$\<h>deq%%s4EUtQu_\iqM/e)e&F@eTT_ZU@6HJQY=amS(G^\P(>Q*Y,L
+r`_#TT$+ZckC3F%T6'raF8:<roPr2eH/T]Q6Via(D@73%s)rYKg#lE=HMa7Kb#h\9
+\Y69$M&%^S[Hr8]FJ&iM1M>#2lt8Q[ktcg*k*p;g9.k.qn]'n*S>lt;Drfm]>g,_5
+@%`#HmC+8<MdQBKgjRaj`8Sl0M?<_"i2Wb-`FITj5qpFOOj;]/];Julo!]ubBZ)i]
+\8N>Wb@O7W3uoe]"05*=plh?JjOI==rBIjjpr>UJ.@2.<o#&%Xr)-h1L+?VVjV9u#
+`reAH%buK`ANBJDZ"sl5MFKDZ\Z,a./'$Y8niJL(Pc;5l]Y[Xga]aG3Gi^N'!3nrp
+^\-/^P!pF!HgN[-5mh-64F-MY%t=##j2[4qpu74hbN7q-Ka,Y+Nu^=%Q!Agu`!JU[
+FGM11gn/LN]$][elX_-Sb+f&=S3b*+DAcSG%tt,NmgaIO7U3-@Nis3QorfIk)UXT_
+BF%C-cQ'H>l+fH1qQr#9^ac?l%Ap@Vm^_MprU"NQlW`7mp=X'hkOQr?(]O8I/pr<_
+no:=D2t"eY_+bU&lXZ"67Y`X<d-B\Sgah>c&QX.m(XT(#r8Hb@XpW<RBB,B]/ZT'l
+jiMQZ/n,2n<%\4[=l`G]1'QI,6\h7^qWWV;%t5aiVrfR9J7a$eQ[mB;`6DBQ7Bkp$
+;<.Q_KR,Y27aT/UmcOT+c`%YEQCb0,,K4X,3JB#%2QY6m8[#UOWZ*"bE@NiPHr8(c
+d"'=2LOs&LAnENohu'A0r[sNbT6t\Zrr)_7q4C+Gbl51unUUcI.cL[DE]7r%o?9#,
+)S,"2q#Mm_ILh`jfn'FN8.I9i@?>L8n'kGeCbuJ=Kad(ls)k.Qd(I'^VGSouPXUQ+
+^fSe)UIK9Lm'giD\QqG5AII$u4h&,2Q,drk+r?(<ReG).X]trH[?%$fctI?HP,]H?
+^"b%-KY)p\9DSBf;@W(F.[8KH,"A;L_m%GF?Qh9Vk8j<PNd=2+@+iH-;gli7/,*jZ
+4r#pn_lS574medPLH%pEUO]1AF^m;u%@3pKN^;E]AY-5mgD)aR7d)T4?W\H>Htp\L
+;Ika$nuB1=af2B&bF",U4<3p4*4[&(1l.-N.(P!-b?t00m73pVP/T$U(IJ10r@nkM
+"rc<L"eg^*bIn<5O48bT[1=S4s8+/o)[?pZ41(FajGQH]06K$#G#1Y(\P*Ni!@A$_
+c2'Ca.,>kTC(**3f>0C`@Z.hjL=CKum*UT?BlpObbQST50Bu`ZqV01lQ?b#mJ?,0W
+e7)E$s8.:AQBq\R2!9.s_=Z?_>87/k"!c/4>;>=Qn45]==9>V>X(1f^1eEc\cSYV^
+PfG+?Z\hRD^`&[6QQoI=a12d9=ghTcH91(DOjMXOU]t1jo=6*:F#3'J1\@"7C,`]T
+R9DgEG<89SA2dE!*B=XM:I=A.&6T%TH[/Mdo`YGX?]5bER)lf%-:I@p?g@2o/p,Or
+dBI0s$I^EhIHar0"F4V@43(EpI==&W^\gi^""M6_N50J1Li!d;7E.j\#265rCTO\!
+,HK@Y?-Z=8Eeopj^,tP0iKrk"dP*U%j:sU/"u9X=,=XND_<kfFP\[fHcl=RT+uWb%
+25J>u..>kQ`2C+Id4S-O#f_1ZiB5nonbeiic;@#u:1S-UXA"rhcRSj-,h.HEnV29t
+A7^W;`g(p5Y7=;rq*cpNXNU/CBEo7LiR/_GnsL33UfN_d330X<c_-]M]rdX9\r*LI
+o60/)B<3/r)EqM97rq:`K@H$N?.+[.#4@[P9"cSHi]*om*Jk>F.AW,DctnqjMR)"A
+OX!.E."aJcndCk+IYDU:CI;DM?'fg+&R0sRWDN$FAi#aLFhH;@<#)L^&"(f4[Auqb
+BP(k2mZ/A1Ht+.+r?r5lqWb*j`8q9b]-;^er3AFpf2,LR#@]MD;N06XaGM[93N9Sj
+9C$KKRDgQ:/Y@_\#P>-3"/Y78/78%WYC5f3LE:d6d7<rtg%3,q:H\I6P9QlrgH_hS
+lQf+@74m`3Y+CRE17-lf?unH2:e[nO3:Y8aX-O7<ahc7dG1i]IqI/.]RZh6P#ZO"?
+.StThiJ52Iormi?]2q;<Ql\;1kj[QK&]"aq0o-ei,&h%Yk96u0Dr>N;?CmC(]qY6(
+8#9>+>3$6*&L5@_=^-i#4dGgeYU.j*Ef%72E_tW%DdQ)h:o#h*(bbkS/gjDa315\]
+"D(qBmK("0Z6MkQ3BLN4OkeVhO<KDopN6'9eNqke7bCAJb-G_bD8,I2q&A5d7Z8lX
+@]3*nM/349Z!<Of;!]@ol?<$I9/U#9kgAQH/J$Mu1;'?*Cl^$(EqGr4"KLfIV1H^m
+c9-nUb%bbZ16f&eqtKPDE8Z8A_a^>4E\S?c.&I=ga_V2<'mUfXM!L6pY)'0=GJ12,
+b1lAiF3!_-95qR2O;$`WR7iHCC$b(6cIn<=TKJ8LcUo'pIf/`V1!M[c]b/.EmL\LE
+U)^1k/KqWj6P=r34LaO(+kO6cn+Wd4c(>ujDthU!pYL-$Y#ipn:KJ<7mjn7U*/DN<
+1prQZeTDi$K<l;@lpi+B7&>l&4+LFF!gH8!(&E7+W>,..*MOPYI4in!l]C?)SN-)J
+kOq-m3I(S5LVE]*cX6#]"g1qQ[=4uOg>Z"E-dt1V`Nc6ZTV7<o^340I%H]tgLFeo-
+T\^1*0iHejmTQ6LHqPn@IC=/!WjL8PN\nNFUGubA6&Zrdna:2/I0kKViY9^$dYU.e
+)=K%Lo;m6Wn(PJmX=k>DZ91o05U6H!&(!#NV(8\jhXJJ#r>)ZDr-kI>gV<c(R,_Ja
+LMlq:2&@ddUY-iD/0W=/bgJ+6okitLkPfKn=jT!j#]Kfj0#"$X[E-L/,E4'+!D7&`
+i)pO*QX/iH`X]*HfXfc0VN$j0h^UJVqgpS*s5\Y=62BIaM=SW7*9kq[VLN-hX7EM'
+NEti:WkUZ;?;s=hD04JtLXJj$@efBEZNn2O06#\!4(Yj;_j+u4esCq"@j<;H1+"n\
+TR.:<nn7A/hRL+;JK5rZn`Tn#!^VS3a7&:um+:2;8'!`F1p[l(Rc@:ULKEWr,M/0n
+.MTb2eO,?ONNF$S?JY=_oVdmWdju`?[Xkj1S<#t71?]<iO#G.DAn+)@f!+>3:kfc%
+p86/YY2;;8Y3))uJ]EHes5!968G'k>AI<NWL;6KdVel.>*/a$<o*`ZN-e"UY[c+Dd
+g=t2>3?th6W9uF4=[otH?Wna\3_PI;7@BIXC/o/nYq`7<lVQ)22(#/!_G8\R>Y1iM
+b7s#eqYk53?U@9daoIDe`i@U@0+N<6r(Q4>l%#UUE&D36;;)\/&?8rn5QTR=8/8Eo
+GS&+.?UkhGfJ_=#GZ+U5B1VQ`M^aR%B+[_f!Lh1$>S<#VVAUXFhDp-06[AS-U[NO#
+`kRA"RV&qOe2]`rBrCH4I]`P8RPf#1K?Ij39qOqD>CF"c+]`N*1Mb4A@o$38&L5'[
+NC:C76T20WFmN?ihfnUk5<gnUBN`Y-Tf7IA>X=*%Pc=8$f0526K;'=X%t?G;e&oN+
+:8]q_nQ*Ad1nquBURdMqo".7Pb403N#eh'\(-XO&*tT[3VTY8kk.nRha+ZefB^c$7
+G-h$Ef\[]VWW\^trpbK!5P"b5qbY,<@CD8sZ.t>=qF<-[]ePFmOBB7o$pMs9DRnIb
+3mP"A9.\ZTWZX92#Vo^%c;g8E>m?U]cYu*41S@\0BR3M%*&e/[Ggkl)fh$fR\sgc!
+o-<Bh+tV][n5TGOmQUgTZ4+@f/f.8a3@7a;N4_sl9O?r$&9H>tg66ZrO0<%rBq,.?
+2r\`659n8:a\'`k5k+Vm?19;jp4?`/Ydq9pG[.T\r@[BDYB8nn$rF2!4JTN^H8Ii3
+]WXl;/hM+o5sA2WAA)O0kt76lIs\cYES`IV.f3V+j+SH7.s`.;L9bl&T^5@KjZ+W(
+l_]^%9YG@gjbAIKhg>)-7/2ge?OLX$1)Dc`2fI+/Lck@>J,e-ieYsNb4iq'_N2./3
+f*7'C7htnN"M%,-qG(Uj(&=NXkYaFI`YF/+fB4I8k+rc3^$r(0J,OL0l/b%F1bnjT
+O?OM-)plYW9M<M619XU<ReYfr5F,u'Ynp5([o5:_og$ZAImdnX2c60L4mh];*G5ni
+aJCFhHM^5\;Fe6LZQmMJNcQK@l#2@*mYeF2$tZ3#Oochg_Ka[^peRr6mB-R00m=(#
+pd/q$DAAl[DMd,*.epgS.Oa<lMocHkcF/J;8,8REdoH(:B'R[k9\#sPoZLT9oADeg
+==NV;XnE6EVR)5N9cpo#_fQcJ2Qil9461M(]f4C%U!0.U^^;iHiXt^<V_)99.TW$i
+=#Q)Bh_6mM;ad,rj02KoT^*30MJNc?HUb%Ffg[iIQWm%,Wm7ObX5UX7PW@CgVpO0_
+qU(?,mG,V@#s.&e<7NY*)I/9'=?2#lo-_.L3b-_@C=n2@DP`_=g6>Xpb9AiPQT;AE
+.`sQT>_a$F!u[Ql8p)5TTUVj=?$9[451jD:N8:U_c)#QS#P<$MB2D2<]rh-"!27X4
+m<>^a.4sMXVk2mD^\+G!iSQiP%DKGh>C>aB*M"fHMj@\UH>mW#oBY#1>2L?BEJ_'P
+:C^c%+=e'kcKd+5k#fQ&&Qb0op/JA`@i_8U6qM;3>h>XQmsO?GTb@"^e#/P_CuXM\
+h/g4"Y;]3'5^Hd..l;MZ+=*(ZCb*he1W][P4oDk*:D&a[^:sl@BmIqQWEqM=KU7s9
+PDsZLr1WEh?g?]Sb2I><+``q?2A+C%ap/<JSqV;=h9)q-/bgl89`U)?"pAdRHi3do
+'pNF&!W&XZ?K*&0<n#'>7>4pF4"'O'2Z1TqJ3tpS4ECpBcu]2p:N][YSB$$+`C@X'
+&(AHU;iV`ISq/lA<%%YUf/^DKedFW\/jUH:WY!KU<h&D"a+31_EJUrIHb@qajX:>H
+F[6tt#5"lnVZ>Q@>:mtIE=IO;`/\76n85pi<5(s]PX3NcGY@K3L&=#nX?pWBk&4&P
+5kE>5\(Y2Drl32SQBc?#KB@<i"su->V_gm#\M5\LEkm_-k$2$YX4rHJ3`"l%EmBU_
+03E^MbEi,(pBTpBa,eu3Id=,F;Z-6[gX0^Z^@gn)n=,a]ANRu\hhc68eIJch)*j1@
+!0k["N"Q,t@I<->Wt<R[=E',G2P<1(VuKP']q)#j4^Vb!9V3]OV=93F7m;+.,0Pl8
+<9?8?Z*jn.<eu)"n]([t5ZPb3++*W'YYs"Z1tPAkJ@YMLprOLD[1d((.69j?o`i)A
+p8$uOPI#]&jXp#%pn7"Behdok#/keSCV,3DGr["F/V>o?)V^L[Mg@tM8Z["'D(+f*
+%I:rY]Y9hqm>0i^_hX9o4aQ\[8LWVU+i<_;Aapio8]nlYlk>X!C'`i9[\r!2p$926
+BY1Q`Du3-3`&Bh;W&OmJMhMlNNG;,=Q.$Jpi=H#a/12(Il`.LI1X/+2l$<&iZ<SpI
+:8i';LM9(N4Rn*X"j]C0m'1'@0[NoD72X1[EbrGA`5Qo\hZhDJj!tnsg]u)%Q@4Z4
+7L$-"(tMo089!fhiC<nS)kH?a@tT:i5q#!b26[uS`M:>tdnVkf4X+5u!DU?:VYJ@f
+^bn@3[^lsq@o]%0AIM2*ZiRjQcQ5b6"Rikp7UE'U%FA(]2h/F"a[(KfXE6/0k9>pK
+QA4&>$M[YjH07RlL6k(@c3Y"5XjZg+%\S+?;c)WQXdLD^.!eZ/fMf5Q$94Y=d3I1f
+nuerlJo4Ds5g&err.pRb.WHLHX7\B8DqfFk5Cib^c2FVQ2YHV/rW%?58>\N1SJ0+6
+WLJJ366>:6T,]N%]H$N3]V5^\]3(;]E,AA#E<d(K=c\JN,r$U6J@6\m4KHMcdZ.-@
+rcW=^<tC<$+A)`@`be.\=.04dVZ-6ZLMJ5?TZa2*"F#EKm$4D]eh3_Cq!&B64!.ap
+1l7Kp#SCC:@*Al3_?GJ@iM>=V=!pIAN!+/`.rM-Y!EZQNVXh6ur9:msJbN(;B@0fS
+J3o.X8TCEsN\tWQaBZVmiV>_Po;Xd&RnrPdY!F\%@Q=M>QjK&DBhNh3WPg>U*:OM!
+alCnhRgYkP)\&H[9kg%Dbo#[jI57'fMO#G_L>`F+]_)[mloajV2W_CfHW&G;4-a<V
+6SgG$kO[Y>j4R=-K=l)+5DDStf1"*A%RRu>JH_8%"C[r\c(TFT.+I!6/fkpqX_&^F
+OhZ?Y.tSF<)V4E>ZR-]46faeA2BL`G.BY+dc&?UB8:"cCc$!SF"W>#UV(0IKG]SqC
+'!6TP8eK+[VVI?DesC6uT`]:)<P[.-MQN+g1>[o2:\$$Oc,iBdkK":`&G%@Ti:=5Q
+:CTp;J8FdlD;P3B=P/\l<DhWLB<+]Sij3`nHLa/NM*[5bpMqR$K;dRk#1&ic'S/%+
+CdW6V^]Rp!W+%4eGe!g.O4RRXl)'&HS=rYTbE#%10K'jt6dI9Yl=$/M1`-@]5B4J'
+ic[>bF2BGGOm#6-$t?4ZTWH-;dmlTH%DRf#&Pj.[7Q*6QWqsJ<F0FI^#[aX=+;JN_
++d[0Rg5d[2H>"JC]\7TMe8TP^n@D8o%FCpWa-)pAo9Tu&o_DgBEru*@RbHn][>o[P
+qQWZ(\)q2f9<dQ\]St#(ef2cZB"r'/Grf<*]W0q91:@Yj!LIMC;)h<'Q7SMTb:AC6
+CP@nCjB_rd>0^7G(Ee`N@Mk<,KK)V-b7<Y6Eo].Z`uVZLJmbN7h(pR;H!FTDotX#-
+-F65Ilf_4MHB7G-s5o*fJ+f2c]=rVDY<%=dC3aNI[r/32EtCgokO7q/rWafc4[5'q
+qW+i?>ukg>>MXj3RZl=&2"=G*eo]/%H?r%TUUYu>'2kuPI_N$[n3[g/8qrZC/TlQK
++@h2;c">3qL_X&F`An'ePC/Z,E[rB/p8J-KIQ6`8qhG?9?B:c&ribsl1(c;FedegJ
+0+sURB:GWcQ:bA$e'RSbWUq-^Ehj[CX6.3"$9-R$=4L+._6pe`kB69=<<;YH>R>B#
+"@t=fbS+m?_7<7@O[L7oH?K,`U]0]l7D['LG+&5?X>2gT82opeRjc[SOYUk*!4F'r
+V0[6nec::W:IB9LJW!T>??tj17^7]WX9h_2EpS=CI/T`7T>s^Wd-DF"3C]cabcR\b
+_,OI\\S"&j^X$h<2kl-YXtjCn8_hm^`$Y)e^,kbW5\qn_D`cD/1^)94c^d/lp=jMP
+oB@mbe4<QG/:cpqP,TR=o&+<Fip`_Mj1k3,.`=7;2QquoT63hb=4,dYVNK6(%$.?c
+H)-7l]B`p45pf*%,o:X\aC^g\i5gP1%@?JZf^ZGQ=uD`lJ:,<4o=_fuZe.ub@DpO!
+ZYV%ggs$cs.ctIJ[ClsQau&eC<i!\:q(Lejlb"1q_@`5E4aZn(gE)p2V-Im"Ee&>1
+.L$StQ$/]>N&`clAp0e>^@@L>'k^j<B_09WS!5-P/5ct"fCe5:8Y2!t630`)iL7kL
+_aNra?YCo2.p5gmGcY2sB9RD+.Am0tA5AOA_Fe_0!R:[bn(tb>5ZR/:n7jTD+D-W:
+hnH)X@Cb$cQ#Gi4c$1e+cRhf66%C1:A(r53e18(KnAZDcE;hW[A&:$AG)U+MPYCJ!
+TbQ5*C)g;IcjfCaErdJT5-h>L6MPg!b4lXBU:"ssGae;cSJ*?36q'YoMJ,4bftBAU
+O5@1%6+Kp.)s,EYZ8!c'maVSSrYMWH>05<[_T8ageKh<QfGM@_I/'qXME"JhIDh/Z
+GjKtd*WW6!RP-uffHK6MmQX$bBIj,uH<?`^)2.b.R5=%3Y&rh@RZh(jZ_q/Wm5='W
+/GMCUZr3\qKoAhQJB9+/*].S!(.'sNhN5Gm[5Jhc7]/,jHjZ\ZjeU*Z$q4nZ<KB2s
+E*\g1N23%KQ:0?-kDLMe.UUFWVS&BWkFENl"IYa3&"rVfq7-AJ,g5>4.'F]AZB+-L
+&\$?mgUD*.=p43M_3p]/(\EXF![EI1*<NU4?#2amAFZX:C)*/ECUCZ3>WK:Li]_u[
+F=TDVd[&\;.MaT:2h,kcRKZJeU?)In^[&ACPRaA%)3afnQr1\>P!AJm;Em#(iRE;4
+>5?f#?JH8q2i\bbY._7kNmd(BA2%o\X.<fHr,f3C[#Hn9Y]D!dc;_#GX"qi'M,[G)
+PTq1bSWH#jCJ(9ie+n!Y""PCXC+S\K31F;PY4h"4;\YQ,HKqK-VPg?>!3kUPqnr2D
+5gopJh4FPIg39/T:*Qo[CW5tR,sLOEE\?0!BJ)YpA$QnOS<:rND)jh"*\RT9,D$!$
+@!uAlHi!4dg!M[;""RIDb"(eFlVsc'eu"JfDDhS.`/"ru/8H)SdM%G?`\$B:R3H=J
+et-RaHVNQu#t:=>CNI3<5A%F^?3F8Y,Mf"TlgbbO_GG47m;ss/pA_CAY8,i[A&$im
+ASa%7])fJH,fSg;Sn2eDArC\P?emrbfn?^9UqH(F8ab*P@+$n'`-A=L7Y1H\koV3e
+]6dX5Wrt"cl"_/&@l2C0Dk!gd4Y4RR2&uM/SN>J-P:Oou/'`l,oYYgSde`,/]bU!9
+g<aOb)q=rU;GlAD/dc5N?Z%(-):%Oc)X%%8p.gGq(3R!oI3a:l[i13JCr/lm(eVpY
+k_!;qH%t5W%?uFbo0a"$s7VMPa]R_b:$%:jaJ\reS1@K<A(iD^78g!;7UKn\BIu-?
+a9df88'8%_-3cimE=H%93N)&Q@O8r?ntm[Hb^(CSI\H+W,4TFJGLlHE)U!a"fs@U3
+&h\?]Mc-taN.RUB)V^9JFNRT*)p:?EA6fqS^*#<CN4n<!m9'&cVek]<?J8PR/^MlW
+V:*V0L5=flO=Zt]#E_HJiC6U@3T/pP)9;5Yap_FD[&?>kU29%H^g3P0_5Jd[.i.#c
+Lg8[K-Sjf2hC]Q+m7oFl9.*9ppN%qY=0<'7Z5.4c9/ou]ZZ,j,/R.im!KBLfAW=)>
+gC"+`j;T%gl?t7oRr,?!S',kOS6_[N[n6`s%A>D^-r1niQ05e'BmWeX>c!WocWAd9
+44CWs::R5dP.sl"+l-Q1OQ*&mEk\KS75'eG&*ATp#Og6t88)D@f^NZ#mt&=V7-:3`
+W]M!mF!4&uFLatY=kr&&$a9ebVNZ^nG3_pL]g5m80)8t4bKYE?]$ifK(Y6V2(+aR'
+P7Ntu),(V&O_V)E(8,[PcmiR/Ve#/MBuMb>G<MRmVQ5nWK9\6i'8THMN7PtAdNp\r
+`5[lC\T4lJ+'o+Wl>Y:`TW)OYE^=Lb1gKA`2O4H@p7rDfGpnHrNeQEP>:pUJX0kC^
+JfE;8hRt.n5^fXOPURp<0YtTW^@nO)VolaIj]Kf*9NBCe;s"(Q%T2IbaU!oYk4+1&
+X73Y:K')$E?L82,D?Wshg-JYLq.t:bi\m7mE1t)ZUL&\2opcJ:RDWs(biFu;-?gfE
+'B1S&DU.X18@[%0TcAk'@JMhT[Ks@1il:<Aqqh)6(=<Oum;sUtpl0D[K<MaN5P&mj
+)Xh^Kc>o'F"Wt0lA3nHk@UkZGds!Q*@OG@()5&5ET$-JBo8s^q=k>Naa:7[EFluXj
+@`)$`Ani\rNS@0n[:t28H]:I`G#BZ9E'.;0Cc;k7VA)Gsl?\[<`iu<i=\ek+?/N>=
+en*:Qm7U[mhhC"Th#JbP3WDZVlik!K]:8i;)O0[S>ZOjHoSBceHkmOAG\2:-KZc)*
+Psu'=%,&6$b)3On2q2l>r(>H6"RWE<UqBBVbu$(SYo8AL3lpn'G:pTrqs/ec[%]/<
+OBc,n9sZRCm<F_QS<G:OpfP4PPQR7NZVXD;h4S$HU]PNe";aDf&o\=2PS(%MaBR4-
+ma/-i,9@F,22k\@Rp?BiAK#jdq)amW+=kB)X/@q\c-]&b9jM%VY0c@7(-mk!V7Lt,
+%)'M!p/eue3V085Q*jIB'0cnJ3`'MJMj(<ZktmLbZ8TNtZW/mVd#%l'9pBCFZ7@u%
+o4sjNVpL^0KZ+L27&SkJSH_or7]sQJ.qum[>\I;6$qX^G>qI$?jGB;C's^Mu,G:78
+mJ'P-i&6)c:";C*JV-O_%QnInq%Mq2M&fMIa081H%b<%Lj&`!+WYN4e=&]iF5OuX+
+<"sMNk(,TofO[!f*c7<W"W:T?0=W_cdeW7'<9G06EYoD>jTb-\jX0KIb6l2EYd#>$
+(!$Z$X:W(6B!_Ki.QbBgcBY04F!?T9e37i1=>`>oe5`Qj?-"_od1,9+-VV9"`Ncl^
+QCsLY60k]Fn]`"37L_)JnF:D0YM]8N-gO@Kp8u[D5rgJOr?hFgCa]Y!]a0H_g7uZ!
+8cYs/<t77<:1BQa=<,b[/?\ns(JlfV3;$2kbJ!&l7foO_?+r1_cZDn%/0lETf,i=;
+Vu4m<8(ZnN_eN!mMmMaOQ3.m3U#m]W5="874tp37S_-Yc=)h9&@t.SjquNY*efs-6
+3U,)e_.&t'H%`>*`QmFP$neWDCTtNVQcn)!^6"Knj3!VF@Wmh7(iX&^+K$>aNatVl
+g0dloVN"/.Qj&;U8T_j1?c$Pnn&baY_&51+Qj^9`Xsu/EDF#>GB1q@2Z3O@_-"YUa
+()`<n+ID*l(P8EE$53'd!QR->ENecKU<N4qnufXZJ/MK5cGJ,W#%AT)LQ>1,JI=G2
+rsS5]\45_l4)teo#.V3GRjC7Z7&.allTXlaTtMZf1/YtP@kV5T[ZiYlqtBDu\h!%a
+"Uc#`>SN*>g/"q2mDnmfd1;.%ft8l6*h/CjM^928ipE\jS]>Jie+F(;LL!bfe#"V@
+e"Ob]*BKnbgN0i^oBk`E,3F\Q$/-A;Y"-a^\ckYM]K'0AA"BR-jW,d:gb*E;Vd33O
+]>c6@4*D$rWk,nI(+&9;!TI/[>*fM3?$XR&#Fh'V,G!8JZ_M(5?BWlu3+fud?pXP<
+Yrp1_lt[KQG)Elb>DWj'D-gA$F.6>OVVa)g&;a[E6$"_1AUZnRfO$_lc>^&ano0Rj
+T,`hRP!/3@/=2U;U!n,jO0m0cDHD1_Ot0+l#Di#?R`4<pX6\]+@g\5ZRIV/M\)4_C
+&;T76i>_ML^Xjl:#s,ZVq!GCcG2OK;LYl?^@Y-LtE7Tp^kL!`Tp#.+E3F"*%Z!(iP
+j\3"bb>Q>4LW3A\h]n&6'/&^lg8W"<)<+mMmAtukhFVc(Ls76]B58W-Ge_O[9JiXP
+m7N0!em%/]m>Z5Tg,O&eI8o-Vp/@gENf0#i6-&uk)/a)o(q/WDCM5fbbcPLM^7\/<
+k[NrMr'K47YeS&u"rbkH8\1X.lI)j$`a!!cRh$'o?[2?.g\(i?D:[Knp4,OmUa9^)
+po`u6cTfKDOgSfT[:m9TQZD:s2f,Q4@Q(%8c2+tWPb<o=A<BZZG1i'?E8\O*6\h7[
+m^\N/:S'Uib06miOgmm\H;QSqE>ZRZ*L4(13@3F-XHI$]fGn^6Tee4\=cK:>4@7UO
+lfXdF,X(j,D=?Lc(0?>,1r_]>]c8H]Maj_c^'8>c>qJGU$]L%q&X"so/+3^X<.m>$
+J,.$>'<_.cS$[_+pkub_rm@Le/'b;d$Y@A>']_MqV?,9!JZ:Wi#Nm\[=rOE^ZZ7b0
+cM1/kpcZ+43kT6_L-r<fn.l0HYrIagUVdcsdk=2rH;:k3fLV(oJ>4%s[AU.T4tlVp
+Q]s3S@_+*KFNH*"a('l[9M<MW_'>"4;=UJ-P3E*^l+H=WRUJ6+:40C+mICWa*NF-f
+#fPi_]>Y@dlo:XYp54eL/rm2E`OXRP4kD3IK">Y[<+hr&YL9#CbC"#pWN3JSUlAd>
+=&[*qo.\GbJP3QsGDBJ_9r6\&RsnBG)b(V)]P1<P4H&h-?%Tu6&..jo!u6IW^!sQ^
+'J3u:A7X@B`A9;+-sM-oXeL.Pp2H>WZ;/opp4p8NdPU9?@@D]@_]LM4Btd2s"3R'E
+UK&c)DeBu1i;_oR:1<;p6RYVU@UN*sU>/M:ML<L+Y,c_,E.O.Y517`50X>"ib,4u3
+-Ji]XmL?9E/_44j;h:>->iQYahjYFbl&=.248WE"SrW+p:Xk#%UP7,sLP0C(5-MWi
+b3@BQ(H*^gd0i!3asc>HX*:J@%1!4[$7XHCi:4D(N"]ag#IW$MbFMPUY)2cfmXQ"h
+aS@eFD=/'3_R9%V!HcV=qr(Em[#L=C7OEl-\.8!Gh]D6?8d:5s>6D82/ABpul*NEf
+aB,n%`?e$iY&^@UnA0ZERPb%P8K!Y1ar?Zjl!^%8;B4@gVHuZ21'\uJZ0DhFfhPHk
+jFd^AZ-uT%*(TEk3W13+3KgB49T!/0e!3-b?'gfG[-&@6=HZ:gapj_5X.S(UPOe%C
+^Q+7D)%GgMG))AUb)Omh'BDh<O6fAC\R'7cdnFP6R1%R-N1"][1iqB5`MmBZ5":gC
+?KBi`K8T7g5rlUD')+p<\aYq=';[9l'QQV)g6>;o"qYloq9q3<?*0i]22WVonT\>!
+7No:?:/L)!>[.i\/uqln2DJ"^I<$bVPkc0:damR$@O>8h<RKQDG+Nid!$-79EG#uq
+VKjej]u3rD2tm$?lT->'$kpr&#n"hZTEC?X6/O\"p6Zc)7$.bH'oLKDa:LfA\X8OQ
+AtcKWlHW>4kYNF!i/>PT,,`^@HLn5.!ZX;RS!"q+2^o\/Y@BF$WFDR4UHc.[PdY)r
+W,(:Zs$06>$1k+cJ*9Pr"Fu:/^%I+T\Ar/G,7LVG'>#oe>4g'E9VU0=0;MB>*1A31
+4%UUl:h_0"lqkZsP1XTRbc.r1`%Lb4QfIan4i7^JX$nur4#rbQAka1HP"OKQXth1K
+A^KoHd9t$BcQA^4^s`5Pd-M8.4,$2\=AM,d(/$n@8L^E"\4h\#N`(,IWe/ks"Kg\)
+Cq4Y?XBiC<9cgnr90#GYlCj)tg+Ecej?VS55^Jgu[^;=._b;@f)DKDQ3C62C!=1+#
+e=k"5fTStPoQ86C*E`5Gf,3\mdn!(rD?1W>1!896P*sR*G-Vt23Gr<=YtUs0kMAVd
+N>gQQ$jak'@j#rlq:[k7R/]4e[[+SSDCe(#AVfioO:cRf'R9C8!GM$PN'9[S30^O"
+$C,Jp!"ui_Nkt6kBsFY>K4iK";=S*0BLqiQs#CmB_<sAb\4D%,Oe"Dr=Du6MG&sPb
+Xm:,c8Fi^iXZcq@P?*PHQ][]EdU)E'j&]#*h/$Ib!WC-(VpB-d\MkD1So)`IZNI7T
+gfQ\4b]J!N3>_buT`Ya2_=_P]5WeiomaDG<1mV4#/RloAS!]V\:NE95AG38u+4C"M
+H3plJZ(U8Wg.QH*cq$FP1omuthNdcXA_+tRp0O;:@[^PK?c<3o^&iSb/Lf(:23XN#
+2]Zj>5Leh#pG)E>Yt1<0^'22YOG@1<'@k>-/qVm"^o)HsR2W(&p8'.^RV!WO-5(<A
+I\1SQ:bJMOCl/i=7`oRGgWueQY8IH[?P-tH@tq^E5L$O-8stb!I#$WaWcpXe6Js4[
+Mq%gD'XI4V31!IqqN.%X\G9kQB-%PYO@j$sI'J,4I4Je>c3L^H',(]]2U5+/!BLd2
+:M5X?K^;CWs-t%M(lbVUOE^+XCJeebkL=9,GS$N-OQu4h^cU=FP?t9,c*Jm:"jI#l
+s#@MoLb)T:1;+YI:AJuu6";:tH'0RDJ2='Rk5KlhNdW(8B?eI&h-SBWi.&QPi90?#
+l@u:Ii>^fj@@GBph5.\MG<C@C!/M1c?lP<2om&N9mD7CqZ/9jNS^$ZrU,bNjC#G";
+J=Zu7*d))Z:\*8oDO@(k<[jq@?!8<KqpEmDF\u<O5/\^O>oi*T3`3sXj@)c[YrQe;
+RhOMkkb\!$5o)KhV%K:g\7#@@1^6#;rf'(=Q31^;3T:PYK'ettdA_t!`e@5!NN0`6
+U!!_D/4f&B1g2sNkR-u@rcY@WET"W`R)hC*=70-_Y(V#[7,9c8E,s)lKaWl0GNM4)
+(IO^`,3nZ]Mp89t(W7kj2Fob8^"qut(+XBubYd!U'C=61=<$ks'PE%/p."GObeF^r
+jhg0mKK/Q<c4AI);f=5:qH"-&Taq]m76I&t/*XUgMp&3\'eIo)<uZ7N?/r\k[7>;s
+:SuV\OQG/IgPGJ'qR>RrC>!f%Ws@_F>!SU"R?qKj+8<a[]AsCl[b_;?Z*9GdgX[PE
+qtBtu)6S#QJ0htrqA%a:V:6HE@9noXA+;,\G*Ff*@oOt)&Bb4HU8s<tdB6*T&^/QH
+g:Ub[2:hWc8udo+],2dNTfl$BZ4CLQ1oIkci;H0Q<4,6rC%P'5oLlsk9>C*l^[t16
+oLlsk9>C*l^[t16oLlsk9>C*l^[t16oLlsk9>C,B;C_\g>HVg@
+~>
+grestore
+showpage
+
+%%EndDocument
+ @endspecial Black 924 2078 a Fe(Figure)25 b(2:)p 0 TeXcolorgray
+1317 2078 a
+SDict begin H.S end
+ 1317 2078 a 0 TeXcolorgray 0 TeXcolorgray
+1317 2078 a
+SDict begin H.R end
+ 1317 2078 a 1317 2078 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.2) cvn H.B /DEST pdfmark
+end
+ 1317 2078 a Black
+Fe(No)n(w)f(mix)o(ed)g(against)f(white)i(background)p
+Black Black 257 2312 a(Using)f(the)h(commands)p Black
+Black 377 2515 a Fa(bmeps)59 b(-p2)g(-c)g(-er8)g(stefan_255_rgba.png)c
+(x1.eps)377 2635 y(png2pdf)j(-m)h(255,255,255)f(stefan_255_rgba.png)d
+(x1.pdf)257 2839 y Fe(we)25 b(create)h(an)f(EPS)h(and)e(a)i(PDF)f(v)o
+(ersion)f(of)h(the)f(image.)31 b(The)25 b(image)f(is)g(included)g
+(using)p Black Black 377 3042 a Fa(\\begin{figure}[ht])377
+3163 y({\\centering)377 3283 y(\\ifpdf)377 3403 y
+(\\includegraphics[width=5cm]{x)o(1.pdf)o(})377 3524
+y(\\else)377 3644 y(\\includegraphics[width=5cm]{x)o(1.eps)o(})377
+3764 y(\\fi)377 3885 y(\\caption{Now)57 b(mixed)i(against)f(a)h(white)g
+(background})377 4005 y(\\label{img:b2})377 4126 y(})377
+4246 y(\\end{figure})p Black 1851 5637 a Fe(6)p Black
+eop end
+%%Page: 7 8
+TeXDict begin 7 7 bop gsave 1.0 0.501961 0.501961 TeXcolorrgb
+clippath fill grestore 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black 257 473
+a
+SDict begin H.S end
+ 257 473 a 257 473 a
+SDict begin 14.5 H.A end
+ 257 473 a 257 473 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.4) cvn H.B /DEST pdfmark
+end
+ 257 473 a 100
+x Fg(4)144 b(Color)m(ed)34 b(backgr)m(ound)p Black 1286
+1915 a @beginspecial 0 @llx 0 @lly 162 @urx 150 @ury
+1417 @rwi @setspecial
+%%BeginDocument: x2.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 162 150
+/DeviceRGB setcolorspace
+%
+% created by bmeps 1.0.6 (SCCS=1.65)
+%
+gsave
+0 150 translate
+162 150 scale
+<<
+ /ImageType 3
+ /DataDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /MultipleDataSources false
+ /DataSource
+ currentfile
+ /ASCII85Decode filter
+ /FlateDecode filter
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ >>
+ /MaskDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /BitsPerComponent 8
+ /Decode [ 0 1 ]
+ >>
+ /InterleaveType 1
+>>
+image
+GhVPUH`UdkH(XiTR2P.W1XkAdPe`N:AjA[3@>H(:mMAA1&-NUg#Ri$s44o(7&/`H=
+"CkU]Wg_MEX)V&^<2ikT<EmRG</%]Z.begjNeLE^C(as6%DqlI[dj;'F?e[^T!a(F
+4):HKj10DH]`*/`n*B>Hf<a?2pO5@*l,=J=FHAcm).\gp"rUs55mA3;O?j'gA<9(]
+).\gp#!&AgoY/rD*1cd2cQDP'_2Ch`i-EWh]jTU@'`#;9`D01bY\Ea9ce;9Ma1T^p
+q:qh8GjFi\%^L!/`k6DP+Y^kem%rci>(Jtb4DA54ZohM//WDZK:)[t%YJ'9_-P(#'
+ZAL`2OL`.+G>B-jp*HVYUAj1um_A.3n*H=RcQo\6)gr$NgFANqcOW]5ZYceF^^ZG8
+akZ\6qnahF4$V?Nl;fRTT)scuA,`otd$#D=>=KQ$>H=np:C]LYpj*JMj@/JNoN`P_
+Xfe-@/][-Q=bJR7#*m0-(UmH(]c:P?nH@n@D/\`Bi>f`?I.>kds7DBOGpdQtH;;3&
+#.L4ef@E^?@V_<o_r]&#euBOq<\@bVguWSDr8c%.*mWdP@"2V$=;F)`*Vi:=R^QE!
+HuH;LO2KO=C`,p9h!2a._;\q.pu@8b.PbU6):%\jT`8?ur4c=#0OBG6o-in&bcU@o
+q.k-149f$h;MV^YEP!gpi:\(i,^WH*2fsB9D-Jn5(*ES)QUXc0jiPYUE&jH_@t[#*
+?-Y=jQh174D:@-&k41\;Ikj"0rjEfD*pmGkD/nk\/m#IsX)+>hKiK\p*n]TC4nQ]H
+NZS1P58ZQ[LOV:0Cb._C%P0^Om%O#WYe8cQ5nH#nhtkF;(.OpBj21!rG:^u-Q9"-8
+_:m>ga.!kqpXrqsT`"W!Q6So;G<T-fJ)!'`m+oGNH_Yp@]PquMn,NCN_)7T"GW`S8
+Tj(F0E$#S[^Fh`nj63ar)b5DWa"*od^1-t5m$bMio`b4pCq7d1kl]'Lo'C"+>/es^
+f=Y_fNK8L(Y$?2=\YK1GhKbmrqsf`.rnf(e;<44=qUF_5TDis.r:b[7G=UQjguh.N
+m+F2k_$(X6mKk3^))I[C%efb?qL.k"gnfF'XuR!q%NiE2j631T4KG^]`qQ(;WZKT/
+fOpOT]dS5HVr,U?Js3qfEs,;=l^W#cs5Tjr*F4*E=el#j>JE&lY93a_OoKIaRA7Op
+d"dL+4bUkgLA5(=b:u!-[D2[pjk0(u\*'Aj\GXY@r(b;n&''"e8&=6GK5NfG$tbI?
+/[js:N=4ik@ZMnN'O2B$\:7rZkdS![meZ@p8,rQm0CI(L-^R$KVuQNcd<B*o&@bBq
+j:/9kqu\#X?2=KoO8e2:hH/dq^%]48J,>i3'_s]VIWpp(r>WN!$'0KTiVe/lMX`D\
+(<;Zas*==kjmSp&s5oN;*8NSd&j:O;k<E<u6pK[$5$E*h^uF<_E:5mF?N$s^%E@hM
+GOn.0:#W?Nb2H.!T5o`)@rMfo`Y(mJ6fF?o8ptudo<>:ma1=k1csQh;N&(eoE!&IH
+oriiCf11>ac?G<JjfeX:kjl3tI<=0;)F?'%lW_u*9C)KKN^(GEq#&b#or`=/fn<#j
+-\!3bZ/sVVH+\4"+7UKr**>>i23:D%^bieVKA=1gEHB6;E5/WeAYJ<?@[*M_c*KG8
+O[$SHPaOXVp*+&&@b_E>`8RqEbubdUPQ'Qo+"Xuu*=$Z-)a+)@l)0UAnXJDuqP.Er
+e^6TBmBk9[DgG?E0>6<R#8H%8B+U*>YrLn&asDOu^C-61"+2J@`,=U.@^"1=pC&So
+<XuOHM`$R3@s+HU&#PN7SMgHEh9._&E/:-"rD(pIdFZ;0EIMKfMTQtu'O:rfkV&?f
+2d#q9lX)mQ_WtMe\mVU(5QC"M(]!Eu?F;EE^$&`cO!L4m*LYtMn6Ot7mt]0M4/3a5
+Xt6:`Z-gKC:C\?c;GM1XQW)X8Eb[[+;`hW:3(+;>oB8-C,A)\NLV>[WIES\#c,@$@
+2mg2e9C+8h(E8b.EW4o^m_8Ur2g3F8=]tUNWM^O-jR1j!:]/A=N6Zdh.uKkOLsPZ6
+`Qs"qQ*9PaKP18o9R^QsAFbP*j?)p<Z.6cLpl420lt;69`a=,'`\)m=HtjY<`a[3W
+Rb*hBe9sEF(M<S6Cc/X:%Y++H2Kf.[4SP";QTDkl%V63B!e8p0cLL"]4o/RKa\,Z8
+MYPi6kNl,BR4IH"q:Nkt?KBmL&q9^[<'S5D2ZHS0Er$3&fP1<iD"J0H)biFhcLJ_:
+-U))G3Nq0U>ptKcGhkbC:.^"(mC*Lu(QDSe'/TVQO(`mtGfoW89h2tXGGahcp`-If
+r4P;Q3%;u;>5TOXVe%Q)U)`/3i&>DGnK[O9Z-VXP].UUdkX=u%eP@1[3X?5%2_XhI
+k>r/V$(RC+-ARud_#sOtj%se_GTXE73P;f,g@dG^X`'W4G2$BVp39_E`a<ETKLpJE
+i*YBGjUV=[/(I.C^Cn:\#$YFHI?%Z-Y48C8I&>s@Il,g?6fN&>F<P,-7c*S2oZ#bb
+E-9UK$!6\Q?O2/&NbZaG/G"U5:M][HfW/R*p$17MJ'Ueq&'`\(rGZSVMpkupaaKbo
+He4Lk)D@T/\NFmnn:s`(6/uVN+n<^jiM#A7gKM_-=u2I)D=&Qt2Y$[SY79W:c=ukC
+r9%mfWKijoL9p!hVQL/C0m^*.eu%>;TbANGhG3LmkPO,FV=l\r<?81?Kh"*IJ!`66
+F,?=N`ij&s3('cfkk4!'_+!'f(djHNCbN2[a0(jnk'?NQY\)1"-?h8SLZB_emmWf`
+S*(Pg0fZ5cVQsX-NtqWH^*[dIpMT3k+-rAUY#Hai)8MWI5O3b(IP#S7Xg8Qh;eMft
+LJ>Lj`[MFGi<r!onIU(8itQ"a)-o46N]]2l@r@pODP>iUi"?OIFaQpgAXMZ-QV6XP
+D4W";b9?QqC<)6^=R4=N%iRcQReP(+dj)\A3#9!ACbTHS`*_&D#^[c^MoaU.%+5OR
+UKZh"ioR)XiD`$Xk^5_iTF>!g7]bS=*#r:,ad-re5-'][I7P2WT$b0NRD`]5DC=>`
+4t_+bWICH3(h4EBNf9%HCYj!q`i7G\=5I>ER"`lV4h2jT6iHH-@pO:W'mr9VUS`7Y
+=Ps]oI.pHQ5%G.e%H?!j-[bKR8^.b0335/<)iafMOW?=*6Ok&4-h87jM9F;UZaE<T
+/_(nkHQ.#XF3@_KQnPN9P`-jFO'"aGH?I,3p3`Rgi9o?b2)um/Gh_CG?g8rU+EpjP
+pX/.h4V&Qh/[dn6nS'Z/^t1mIL:L>53J>5C$a6`Rem#XWRqrPq(OgPE&''cA3CMeE
+>@i8olFH:j<tT;GH"qRKk@]g9r!IQ]E[o#9Qe%Oi=P!6K#-[B%0`/GaX*n8-83Q%'
+<VP>)kdij-]=TS;p;YrRAriJT6TtC(K.]92%^jF#+EeJ_LsAp8WWV4Af<iZR@:Kpk
+GJr5ua78)PqrDhV[Iqr*Nph#.0E'>_K.hZ;kek#UNR%C^?S8m%o$&p\I]neuoq8Rl
+*"m>6i]MSCV\?JOkX0INS[Io_r?m5s!s]#@Xd6H0g-C$FIDWj.eUQ<3jKQSF2-t0A
+39I3b:W(kGjb9++g]tj3oa)UeB[#F*?M:[&O&Hk_WAWRkX"?65S/c-Z@HLarXSsAJ
+IQc]K4ta7nl:@=25Md/<U(^s4Io$W1[8_nsUL]r#^=7cjW*bq':^5=$aeA\V1%NW4
++1eUdmenea8WeB1?'lV'f>D$rYslBPDj+s+kTbaTojmW]3n%>ACVQ'+f*fCTpStp@
+X0*+L=WGuu4>dTbC[Ol%#Zp6+)1-c0oR<8g7!H*;W=N8j1692&iK+s_p)VePV/AuK
+5$%ngj],>m2"dd?r%EDCZIP.+:\M.soe=Y+kjjGsPBfLd1?f`iSgO>LgAFY/"^>;8
+(P=;pg1C3"ZYP%!4ULbtltPb#`%-Z:i'+Ede[h=,[^A2>W3Hh;?4fk?_pO[d3:M`Q
+]K,P;pGI66B)mj$%FVjAfm6b0PgkD@_eOC"^Tb&fqkj&"5!>8QY"'#*`?@;4SE_=3
+X(5S'r<XqHZ7>@DaR*'[k[Cu;:>D'/+7pd4\*I%qUS&FlYIU-85i/B>aZTTd/YfeF
+n_D"pUWiLeqkeh9ED#@$H(9$q(6MW>C6Rg83%ma`6Yu@^Ps]\g]io:1C>2rEUO*n;
+kHUC814@CLZ+.R"oW0S#&aNC_-_?]On<E*qhK.YQdDc-4$b]2gANemDN-rme.Y"\1
+c,E2cC0Fu1_dj>hbA<6!$\e8+AMEf9g!RRgp/#DZ@-Yk@h^s>[*_[Nd\#6F,oc)jD
+f1`S5OaM?E*hI%+Z1ru+Lb:gaT<5oi@F9ca=R(,-(M<4qD>g:'&_F>7`6%.oi:0V]
+4KmK$"8/d.n#H>eI6M'Y@iJeL`@Vs+lR/\CqeYjK-Z6-4kV_i*48=K*Nr-E6S:&ES
+E2i\f0N8mjot/d>9_#ZV6`g+$Q:"f.nX3S&`e=NcG@nbM\RCEnHM4[`F[j^-S<!ST
+lF8amQtr%P3TF[\B(LuVL7-AuU"X'uMg(fGqQTT&J,6ou.3/>FrIr.3Is0,m[%aIW
+Oib@?5O%1h`\+ao\]Z($[5sAND732UDaNbGT$cV5W1TSYF#Cr`oD8+6Fe4"97c,-[
+2OA8E>LonSm>l^cm'UQnJBiE_T6Q<u@ii>VXKA7)4D!KNjB=U:n2IOQ.Cp'#?[C;?
+HJ.Ur;ml5pLhX2M>\\L`&'?)W>J$DFN4iT2^Wkf3CT4)]01-h@p#C>fLiG.qmt/Vb
+YJjbYmer##EmrT6Y)SlVbF%rckM0U_NP.76^T@80TJH;XYoPJ6IdlYurQVV)^3e<p
+q1LFq>_4U+&)Z#;o\pe'@E75g<M$/^VC.i/-_-F8euNESL=VUD*h+%<Gl>R9/3[ON
+cdl(D2H+C70%dVP7^r'&[Vh8oLG+]Gm28"XolJ6E]aWUjCEdUK=8$VSW5f*.migA&
+F'nRo4Eg)RZ9(2R:R/tCII8\"4L]]-?21&lqH8Nm*kaV0s7dVE-F"*V.`u6u#DGNI
+bMKBsU6`[p)1?bS1mTjs.J&gV6Z96S/%)iu>LQXUMrq%A+eo.E]C9GTQb%&UF8B\*
+YFmM[.JaeGT1QJS-[TRoVkKHnSsi\$#dN"?310_GF;R-V,/W@Bkf)Np_JIVR(TnHX
+#`!?2G\O<%jStQ2IN*a2r9^"M<VcemS]2Q4`M*I<?g)C>pc3T[\XD;Af*UeJboqSs
+kI4/'e37fO4Q80N:P0`;KBPPpbI'lD?Yc(9?OM4KrE=7(*5c;;3I7V2^Y-MEh=<WW
+O&bFkY,Bn6=H$$F([U&9YpbZSo\*!Q>$VDpE/=/)aYO>h;Yf?3kP,!B>k@eGjD=%r
+K"!@5^2@AEn!DAB?hS)IQeOQ.p0uKDQ5o%hIFZ7\`$*(2HRja45Q!TbT!_l$n<:E;
+Wd_R\ktA_)iU#NXX^jt:rKi/!j'ZbE@1X2_$F\l,NHh5:-6N'=<#>,^^\HRNUHe_C
+<V`(`%.`.o0!IG$Kj1#FFnEq!c.R47QT6&2oK1S"Ku`MKhQNuW0t2<iF,;n)4njtU
+N]"'L\r\n)fH\uO>I1iMp0M0/k:tTZQCP@1rHO?5N-CA(bi`8fG@@c;?M87$=QFJ`
+C<""u%`eB&[Xgs80f"3-DbT^i0Sg3,8"_N>=#X+9r2/2S6qnO'd"h,?q1h[\de;F;
+IG*4BY5A'LR3';2[*:\,fAG?EC7FVjkBdf)&HAI4nc-sgkWjO.gM1YbI=DdQ@IAuD
+g$1_J4X5<SG+>qM0Vr)4%g\5+Ir?[RjYnGS-8'jVitLL]s);CH:?IDu&'?#@&*>j$
+fWsl0,Y#0@3ocH0S)!jo?*8/H1kqE$41]@1&%hU^heXp-SG#Q\"1>h!=hM^;UCZ>1
+Go^j[0')l>X0.0"RD<U^o,i8YkHMICf0ZAKOn15o`[o%R`ji+j5R13!K1Gl,hFen;
+Irk&L*-N;BMGSL?5D3ttnMT0Io&=0h](<!Z#Mmp/)I;!t"h8I8,H=+p_nI+NF%>"e
+5b#E$X_6I"N#79DR!JtA0X8]ClC<Mc:]0:XQc)h&&&Xb($MG>Qd<G*R=H.=^&7*AZ
+*:eRO!6=s3(JZsMZb@5IH]ISVidEg4V]nLjr!J5V,&Y,4RS3:eIUT8f48Z[?@AZPa
+j#SQ(\]H/[=t/Lp[*>^J,i6]?mB@r*cu^HO>,RQ'fHR5$rT*Vnh-:ds(SW_AY7CQi
+lCuG+N6,DLUk4UiH$R7MENIBOCGC"`(S'IRRb?>hbM-8:\XTXs3?214I2'm]_cYZ`
+/8D(]-^$P:AgUm;2qMo6QZ.1aI-,@oEV@b@ZfZRh6f*H$<>Y3Ir'#"TS)quo\0A8.
+Y4(lg?F6Q]7J)db6L;8II)Y=8lF<n&B:me:KY'Ef9dtQZ%X5q(puPo0]e<Wo9`>7n
+9^P4`nT2h*$nNI6Sd"`7Lc1N&I6E!?RH&R7.IT!HA*fp8CZ`:?j_q(RGO:jcq_Z\d
+)nI"uY&ikf]INP`lG;\<ctD]]o_p;/Y&D<EFI"*?b)TT9]Ii]1Xe3*=Mmp^=bCRW"
+lf"!om'ASb>m6"r:@CE[_(BeZhXdbn:$ao`NTBQ&n-;`NCS?Y\3$*8<Us5*P5\=si
+1W.n`A]B5%eR^<XH`^B2AAT^Y5t)!iff*9-c8j,I"XZ%8BD2FL?Es;oC<S8ff2NO-
+8)73YUCX\A%W:\kHo_4h\H]9IS:[>b1S046oG3MXkP5"$^;ML2J!+%r3g#pjSA>r1
++nSbHLQjedj'*@JhK(%A+flP11PP+1/G)kDT8.==2iUm:2pUM>oVD?03=d*jk?P'N
+ZX%.i](>We*"Es/m3R\_E:I./?ZG3S3UL8+i;,He*<_C[>e!\kO;GT=F(#BEC[B5S
+3.t.8BE!IjQIkXUa[)XOGob`K>F!*rCZY/,a^`7lW`ruHBOU*#=e43NBYC3On>`H0
+alg!;QH(S0W=u\cgVZ4aI1YI"A^Qr&/CMj5S],u:o*4SF*VT&qc_3@7CWkE&!)qsa
+j\NQl@[Ag%]SG[kdpQtKr26$BD<?-;Ck?B]CW62pSC7.f/lYV-B5P3)"l)sXFG<lZ
+'DlBZG-T3hfm+)8naS^Gdneb%B/2JkBm[`BC[^N,:)<*/0t0[q+gqQjhV]pD8"XtM
+Zh](UmWpiL=.&fIbh4E,qM\olc$VFNnJO;S\&+jsBAVP1g)e)6PY67U_sMTDl:SJ1
+AZ!^2R_JfMX7]l$qbd[]qW3!S5#`otXSaYn4>(_uBR2Dsc%\Z6EO,SflrKK@Zn#CF
+XI0plF$GEthf:s#gkpBEbdF5f[5O$4/2ht7,^*eVAKE4[-/\8!e*md4S@bCrR`mkK
+)0<#j0);fE-\(QD,+$T@3tQmi[Wrdt/BmHflE0B=m0f[JRliY.Y]*.gJe!GuC^@c`
+*"F\r5DR?fRr<!ENmM(U=+qN,e&4*[<?4Yj)$Wn8lD@<(_BPV;S\3i-EdL[N&]\4q
+"cVM9m*pIO,:Z?hREp,&4oD_aE(B-/[*e)Of*p$$BV-i(g3]m(LnCCOKL9X&X;p5'
+ZJOB?3EtN:^;FsMPKn-ul9h2]^7qh#kO@T#;8iK,rhdWP@oi(8MuP_J&/JP%O=[i'
+bZR:Y0#AEYDsitic<1+^`p"FTfh(%VGMT<1^$O"MaiWO_Qf$XZdi4$Y5-rP,_ZqIE
+5e`jp"R_FA"?XkT%cco@)$X:g='#@XERFO2qL\E$^gC_u0:_,8IZ.?a2)mO+%f]WY
+_BQH1#7gS-m`H@A)Y,`?2fGXf@sOWX%Y)Y>_!X/0ZIm4F;rQ*9NQ7-uPti]EkZDrq
+4`]8(=+6Jk:F5X=ad8$uK0OEcAUWt@26Q1S<]S8#_:"D"ekCA5GMs=L<M)A83@qc)
+P_n%b+G4]J>f("D<n?qOd9L(942*b\bunO"Icbcn2+nlHQC8,PiGZl33C`H.)Rhik
+r@;qkD"i1;V5L$qrESY5l5ubpq2VO(?s`$!>uT]#K*uSU^jJBCSG0mpYoZ5,5PmRE
+>O`OWkO_YrFo5cGmUQmfS1)&50`(l@A0qcZ_n8V,61Qqhf1tLXS_@9(cYq+t%qkZZ
+l9q$#3#mSFUE@j8nc`gk]+I6Qot^*BYI]Gbr3j8X3Akt?&5t@<a(jN/>9@j?IG"uA
+rOoQ&E;bN%/:EB9PNR<7-Hpo.^[.uHn^uIS;>l@@=Kt@Aqj%*Xq2IA+#W@TFeg7%,
+H/C>mT=`qupd*NJN'4H1/*\@VhUaF35''IY2fP_J=3E>N^B@i*Fr2:ZO5mc/J\Qp<
+6sB;0NoTX.G0de%M59"pgDb&P]<*]=5?UA'KB;VPZ^e!2ofrAE%-ILoot&s"T@mLk
+Zne&DY1+MloAl"jh7nO15PQ7,P1TPHs.$gmVephh]]]`D.gKWlc1le^GI'3OIInEW
+Vq3c?,C\HAc^Jmaqm2d([0@V3SBQrkgT`H]>EScgh7).m,(GelS\N?d4L=d+pih.4
+chDaX>P=4hT:_[^f>h%5Sl;K9Dn?qEnp.AsUch3<C-=@[9Dbl0e%WtDZAu*J4l#50
+i&9bFF3AXg76(3bce@o7CDMpSO+fkf(>r$$$o@8M_>h@?7GJ0$k+0&d+6W*D^\<?9
+RgOY&F26:^pfMouj2/Poi5RXR$b;ONHR#$oRrNPn>T\m+%a7*.fOmh6PjcZm>?H2[
+E-06e7q;A3g^C$+Ed)r5s,fG7SGZL0j>m7+I!O!*g9oYkb8RkDFaeO[ephhg8G<>J
+2'1r7ES$qnCUeCZ_bnjCK`TeTEXRNb7s,XJ"$R@33r^SR/,TTjM;N0pNq7crPXGCE
+3;he8T.;I4>X"Xb'l8mbN<4a/p:!03[GH+GP9!YY-'+J38Oe,EDNK9BfO'\&:q/C6
+dMC#eIc0X";\lp9^7j`Ia"-hl=pb)?;YTtHIJ/kI]Pj8\QWpU!rLDFD9gR*jpMZFh
+-ZValDdgaN&?%CrDO_aVH@kRFFo&6oFK^VCO5:o[*BUEh6>tOe#X=n"\5=&SXp;S@
+DloZC>Fh.mNn663a5V#>(Gt$:$kcpb^OJKHb06X%@[mC]e")a3qc_2@_oa'IWUO$g
+%J<q@S(1+,,!;bEo6Vd=fgD7\1&&qJo='^o[IH=omns($?T2$F<a3OeG2K=NhE&,r
+hHXN,eeQV_6#YI/F^E2a@U;XOGX%(l8;c9`S8'.Fc1u_?@fnC8SD3^9f&JM%JY%O%
+NicXKGraqGor?VpF[P15@UrSl6[iZb1ABW%(n^6WjltPQREIQk+$^de@s`XbcXU\h
+3Tl44W.&RZK\/^7o/G`lq`CkG?)]hSnl'uJDNU2:5JEiWo?P,8^+DG3ri!j%WN0T8
+/n$<o4ljfqeo9#4%qdT:g.9fFYYNXB3o%KDY/PQRfT0(ZeNT`,Tfg,V4YZS3CU]Kl
+L!O@YTmoYK"$/+&1UlX;Nb?*9[k_\nZE.%D?Q8.7[DeY'FP-C2qa06GT+6V:9,gqr
+>P$c:mq^#]kE=kE%!XV$@P63s;:.<q?,\Prqg:W"j*:?3c@O%X7H]aTfMM.tl:glP
+G2BnTjfRU)7[(Nhp`8G!h,!=m3X\I67uoWXBQ+/sb]oj0LjmH]@X_e3H&(!5l[I)K
+TqAf`)i(U$6_0e'[qTI2M"-Ea`Kn8dNmF[<\Q(;orl)VsLUi]sHYAD\NJGkhr;Q1U
+C]QW_O&Cmm^2Ds6j+3coZ$HZ6>j$S,*3[;PQ,?KMfeI7QeUd#!e?:tF>A*^&im8M(
+hKi8S\XM<O=3Q,%^?;Z?laV/-_Y<-g\LoIHRH-K7n(1\[bUZNa_&&WX*7k8*P$Ag)
+4`jF5F"2Fj)$,-aY.EN+&Y@l_IW+D&a9^!(+)cQ+99$=4CgmfUm,QR8]GDU01!jXu
+g6^AMLA,X,39PGM2[XhGHaQf!D:gT0'`&BqN%X/c`jrCUIaU-DLGfp0?$.(pEa1Tb
+pJA6;l9/VcHol2PHJ<koqYD;t`IZ"A0oH_(rn_k3^!&p"3W6q&fCFit\JF&>qdC7h
+h5eEG:-$'!ql7>`4`hc]XjOn2NmDbdXpMj1c=pg4Pk-B_(S4oNEs-Vp\IR"cg0/SC
+\uN]Qq_iT1g%$8TY)0WBDd9BY#@l>AobBIs[M]R5m=*HKR5KSPEH.sDO3]JR^*n9%
+WjgbZT'qh"5l&lA`5grQ3`02(hhER^1Z-2,c+foqA@gh02Ga:sV0XYEoCc6oDBa.j
+@$+UYAZr(F?_=Nlp80&+e&%h!m]=,G/>=53Y<9C',W[LNoYJhM^_<of(@UF-0ZWk%
+>d\_j4A>;ehXB/Oo][Aj?hk<''?bM/Hc.;]iOBC'4R^uO"J8DSG`DH:%SD2Pg=MKd
+gc^X`[AEZZg1Xq5FJf&4GtVsp3UYo!f\W&Y['!17&qT5o[sR)VbShC:V&XXD@]Bs9
+Ng$a=2sY9h3A's6Y2RefF8cgFDL69tp7+0"p/gM5k6E?)g[6*aoQG_3r*K"F4S""!
+^[N7P&ROR=hX"$TrY8l9d<.nPNqq`,>S#%SG-<(`k`nS#K8mm+r+96(mCKJG[+;,<
+YqkpTSnlV#\r(P/#I";kkLZ/pk8k^#F+egGiH*e?[49]k1H$k2SQuV/J!/$m5k_&D
+pKC-qT_2O\3tcW+5Ih!A4J$i-m.je`I15C3Su3C6X;tSQkk<n>Xu_kN\<"P8AfA.*
+=hlE2_&n7\5GueX7plt%d-k[c%Na0&kVDn>5gX_2O*Q`Z^`!*5Gn&hW;>*R%+4$;]
+S`j5rI*WlU=kd1rDk'2^0$NN(EaEuc>DoWWI$9%/Ibsi[j,fQq3L!J@/f:k=@]a_n
+GP[fn2ln;Cb9rM+DsatoOiQ`TF3_eW`ZA^kmgZW#dVG?2Ui4S;4r2u7![d$3jmVOI
+hp:W.?.SbK?*t+&hIm8BaWBu8m,]9i*^d)=<t;M&Y5'7g-O4pm35c'_I),rE^`dN6
+rm4eQs5m[Mi]G_6H0QIS*Er;HCHltmesj)Gl7dM,IaM3"-Ke\K\_\eXgGaeXiEB9l
+Zp+U5NI/kE*DLYF9$qjjhf6OZpBQJTf30*;hO=IKC]C$@4]gj8:!V#jhHFW=`A]K[
+agFM)DnD'6hk"P&[jT,g]"`fC\=bpgp"4?`:A#cMZQ)/TKK-?1$pXT4S57G&2)t7S
+k8,bPWMJD04EEaa@.bhND[?(tB$N$6VT3W!GqX?Fp>F"oT>"#HgXfk>?0qIX9>/'d
+O'Z<HQ,BHFGKXuUCWK,LiFDiMJbGgQpKqW[PWAJ,bIrG]QUTjflNE4%?kL)>TBY*+
+D;JT"mN\N5a"K9QA=Sf;o9$K)k#(dF3'Z[rkJS9[kURjV)d>DFH&"I!L,%QR)CkL?
+j0>e'Qan\+[*F!]Nj3r[%%!q@dgn\S(>W6I&'DG&(rH<qha7)6G?XDMX6rWqd%'Z9
+Xb4F.JN-=BrS_?q55,(M<ndKp'm(;]iP#!gYXiX:Ih@^eX89/`96FXchrSdKNPBOq
+5&uYH6>$ATH\CDnfRX9;i=`=nSHq#j`AuFt[*KKGH!&SIb%"SdI*#o+(>"`GHLX'U
+:NRi*Q2#`HRbNB@rC$!#Z%aulIG1u2H@'BJa`q)qh:cX][O`W*'BHiI\.fo8Kmqeh
+og3f]H8nUQS9k:Y?b7,t>(.N9'IMe$]J_e_Ik`t]GdGGUHYqsK-@b/&^Y\=JRsUlX
+^Y':f#j&?RB"GWJjcKADAe0oAL:k<g/94Ka2eq[S/6oa"*_*QdYfGXO2cqk;UqYl6
+)7R\_F_6!+b["FCYm,"!CCS8UqW<Lur@Z^VKbL#L3`-*jeb/iC\!G;3E0q'6"6C&r
+8t:5(A3Wrc@PR"6Ya7Jm]K=sT9/$a7c@gb\G(79fcWD%]b;&,)qMG+>[<pZcf'F]3
+,kK[^*GBY.d!?Z?),HXG2RfX@9,;S#4eFGfaYA#Ls2GroIuAR)Qj?1>/G30)]@q(B
+L@XPs.s$0jKC/JPH`;;'eEFJ\[J("T]D+A^&@,YUB;Z8!'HsBget1hBC`%9_HM7Jm
+X33"4\\C*!BuN1WYG8ufYB^t0KJ@`,e&3DV_?OXZ&HD3V>*#q;-[X,eG@-=O7,Nt4
+*m)!"l,.hpQ7bt!*3'[3WSqNr^3sM#-;#'@q19PMA#s/^O8>pC=W%/jc@<i%q&T,-
+]Pe4[Ng.T6HeuVKWQ-R9p7*$/3L_2&oWe#MFuBcSE]DI-I2o\@Rq+5I!_V;0*^KE=
+.+Ui6?#[p_jY:i)`lBAYIG0q#X9i(:gL'gqg^!E$g0`lH0()$u:sAf#_S'=4q6qHk
+>"Ip(r?ue4/93r%7G?df`K&?7j+4V@?F![[(;^kfGGbBfIi8!$X)BAHekte1[`2r5
+QF.E5F'h(W>a-8f"7BD][*-ZViA\Y4p2T<1B^P^0k;'$+gkY"FY`8(Ea/sJnF;OCu
+eWr_t,>@76c1%&SnCL#4VXN[hORr0+GiIrZ_KJ(Ejh*-?ohUHm_.&7nC]B=U>#phU
+`0a"u%5W$:09&.En)8Cu=SiQ^I[sM(-BHeslQ8cpl+SQW:04!/7r:RuCsHWUm-SWe
+_r]&"dMs?+?&1Wj&(if[bk[gLV<B9#3J3AsX4T?u?]@3Qn-Hf&/D./AZ/O"g6jDnX
+\N1S?\aHkFGE"g.W\[$*mH&@&ecp6p=P1YLBC<*q]A-cY`%DfCTC:4K&FjN/jn,gV
+DNnXP@-NkecB?5<=7R$$^:\gA.MgQqZ=lp<FQrAeN24`c32Z;Z;AZKk6Y@X4cU#;m
+LZoVH?0C,'Y@0NiAnulPp.3a^F.Y78pNcc3g;>D$nD!Z`^c1VjYAWdA7aDNiou9$W
+fbh6d\UL"@f-hWK-FVto^0:,a&MLqelVDoRoh_g5Zen&$jO&8,qMf(bhq67BGJRb?
+)c:aP4=*)_3qVZ+Nm6HW(5X2u]2mkESDh<J7!5307a*CZ?!Ef"?Uua,Cc_;t\ZX5%
+^ErS\8Y<*OX6+QW\\7E`A5D1`as6`pk,sYLLO&\\kLCV@Z]bc,EX3bi'2VaVHh*m`
+/@CaH\'+WQ[>WUK[,,E`%P6\G1M=hq/N`RjF;J$1gj<IX*@tAQl..Vl6PhAoS=;)f
+DUp_T*,:]-$h<3&Kl-k*%r.a$_p/0F\]3^8]"Uo\q$]/#qjK[Ng$8fkmd]X-J:/CY
+,BK'lq3T!WlC:r-KqqJ.4oN!'cre5X6@8^j""%8OQ$1m\Lc.H+n$1s"HWW<?O06B,
+O']b:01EToHXis0GJ2GSqt*8)2Tqf.+h;/sdUA?EQ*:9&f[k:inWQ+Z1"R@/(2KMs
+VssQmNuZn6485sLruT?'\j"%MKrtk>#*FtL07%o;Zes&pZ_lp`=Q3EF@di#.?/K:U
+=0e4i[YrIIcA1$7jb_ANp1:T^\mCiO@l+"&bXu5:D^jhlW<9L+]GNNgXnBC,S`J-W
+);fCOh2;X=KO4uqGLaBV%a[;AMFZP':gF/LO4a2r@LW=m>oW[q'8mNRb@0gQE3+"l
+:S@#@N.oHDg_u*\<iP;nb$`KqZ.FPsT)DIkINZ\;VX+^dmBh0omBc+g;CBcMLn7JX
+T04%RG[us6CN7F>h,\0*cLs+HFA+;EofdfBQ!/fHXE!hoIFrQG'0"NL.Ws0#r3I7^
+*tKF]X8<1[hQ4aRkMq$<`oOW'qhIs/LR]meP\WZHVrmd@IBh\FIN$g7-%kh%-A+*o
+_8^2;g@_Ap@9OF&B1[Kb(5MSrPaS2B9]HmkFNrB?T2d6kc1F!>lGpm-G?>7qEN/)>
+ki#>;:_*"+dk7[3iUF#6l!#M?X7js-o,V*YMXL@Bh:L3M<4CA"GkW7hG1lJQ3`4Y5
+D:MAt]@S`M5AZ`*f#(m&SEa@`_V)Xt?&gXVZuHSr7d$o(7pmtNa4FA8U;q!8F++o'
+-&]s?)],P]>\\R+[Pdq>gQT_9==[-t6h2e\8TY_1h#GlM97(M5^8&.5Y0(7d<h>bN
+2.L-k@td9k0CFb=\OXEq4@0pmIl1kgE:,`YSDU_6CjG*OAZsLd?F5JX(:Dg3eMr#k
+]mY]!l8(I3rf!]j.sk6T=dGNu6u.&%Wr8L6L7RJM\(4k>Cic)TU$m[T2RR(9bN+o0
+[@j;!O77)o52%JjX_teTjrRq@-5"iihcKR94bi[Bl?X64e(6MD,F73^(JaXr3mdQB
+gqq0:*3SCmBs4jtm%./$qa5;mhR.[#cYiUE&bf^t7=<G2T5?4shds(I4(Ue3kNOPM
+S<^c%H0mA&B6g2OVf6I4S,#G:amSmj>m(%YI=/Qu;a!Pbk1XQt8*iFp.1\O(o4upb
+kH-emI73&@rYK]c12,PrI\+54o/Ku*7S#feS\.(U-\ehf>frcSa%WVcdq<$o4a>cF
+3G`9XK6Wo7dB3Li9c\!NQ5[@t)kTe@[816Xib!%K>>K6n]6S5`b/=eNUX</j?[>9+
+Z7jPQcM#DK?H3>(h=p*&_]c\#*0spqg2DTT%qj_D=c%1)?3\_hHo/cE9'.7eWJ_U/
+SC+Z$ZgI]jm*!;]KLL6:Z7l7<9g>:3EB.KlN)=V4^pZ#5Atep3:O<`+P=$V!U5sO9
+f,s\J*R0B6brIn@p<Y5>Y]](!K0t#ScCOq5n58%HF+WiGUMWa9fA\I^](GBo]t8G^
+B::n(eJZ_HoW2%W2gUt\]?<&uXpp[cY-hMiU`Q==$JW[H?OkYQB&_t_?#5\0'!X7k
+B!%,-XFcL(9gp.dgraIkQi5"!g#b/;m$">]md%IT2fP^VBUtp"Tt53kRm?ER^LO63
+N1%W83=>m1mQ_c;>H<nPfB=5sm[^\iiK3Mi^7Cm5opP,!m%rmMrUb&8p4%ql)ggl5
+Gea3OI)!cSq1YuL5o-r[I<jY@G9qQ^Q5\MZ^.oc4j4!HcXi&lLh1s<7YK>kS3-Y.j
+iY=JleeWU[a^djB\q41>*0Ps4S3#Q`=Wup/k,mnH:p[%N55FPZkIB_AG]A1h[[H/'
+_sZ\u?^:3mi9@NsV)N=oLN3k"WkRS^P@1SYp#k]u3UR>^4^(Dmc0t-b^##9i[&<bV
+Qd;Y3*5T&!a5-a(`lu_PJ-2r_r0Wd;FGM`;pe7s;i?QXsK=Oap*p$XRbPfqI3Cf_5
+CMkJGmF/5TTJJM@*bR_9bY4!W)^/j/\9;@;[pc_JkIuF[P?SNRRh+$;E"m-[EQ_hC
+can&#:CYo(I^C)XK10.g+a2+USbC.3*;9'H]2m"\gpp1>><]5cSFI33SEJZ0I7$$=
+=[^P_;4KAjp+LW*aIE0SoT_IWV;X,gjHdp,g@sP*I>lh@j,ucG/N2TR*4hFO<oAX;
+l?W)*>FbT0\lL6BZT+-P?0c>)jR<g?-Za02/(nt,S3bFV3lh4Im^N/<HY`Y%c7R1]
+*;$?m-VE(GYaGE`rJB0AIDc6@AnoSCD-e6`^`du73TTqnG9YAKq*_D3L[[R3U?hu2
+iQA159]$gJoE+49d^iK#hI/iRgq1Bc7'OkeET\8h`Z"%ZR*+*_jG[AcAA>)/4.H>m
+GK;uEjH/[YfC1@]r?U")UlE[tc$F3t%>/M(V%:t-fOX=N[3'-LeAo+;3Nnr_r."9G
+r3!8(p,[Tk_G!YXk*jbcF,sGKJ+g$dmTl=%F67Gam-Skc>rZomY-SQm?\;'3eo3O%
+l]9++F)/Ohl]'t3am\8[95AtoZRgkA9FdW,aCj)hboU]mg)L`tr4(<-q+\s)PP=6&
+_?f<3]7N6,r*sZlF^4sb2<G%$-Sd=BgV4c"E)#hRfZT+gP='FLT/"nN(R&jB3Yi36
+m$bKi`;.);p5@(g1O?7+CPR2**0rWYoJeCVIjg5X^#D'H$?+Or%(:H[CBUk/eg[R#
+EK,"@Em:=cckl0O$ZNm=%VP^bkWN\r=_l2`Pf0KfQd'f2D/;E/<n?bf]Cm_j:3)//
+aPZF:mZ.6<fBkU\M"@+VG,D8)FR;5*qj2A`YeB\_Ac%kR.XSjl60Di@Vh2Jk^LR!/
+%(>u)E]7:\o82255olQ)&9,I26!n"qiIH!qmg<^jep?bpc0VI;S`Yj<SX]f6C:Kk$
+*YeL:i3;R=Z$TF6D:b*5)fRBr(Z`*gY_cAaGq]V!E9J2t@P2at?U$^MR.'&4I+[3r
+ZX.mK//k;1O+bg=Hg!,(h/OI0"5CKc4PT4m_8/%5cG*j*W/&is6-gH1MK;2r&Iu$p
+SG*D+h(33>A53\:3Ci5sN+q&"\)47Pem(.ZGO8Hu&&J_+!P/S,i0Vc*Vd[t57<s:4
+`PJ7]n@9Srqrp,TqD!?]m:59Ar"%)47GjZLHWTC.[.XOgc3tK?A".gkA"V0=MKML#
+k)<<e1"p6BC&PCH@^at&fi@2!S>Y>7+jMl)f6,of7h7ND03l-4G<gYn@d6DJGU6t)
+CXpN_>oP[4^?p8nYc",m`p,e^m;6>TWUGIB^'FMfgck`sf:Y;`m!U9uF0;R!Bg/:t
+\G#Fb,b@g`Aul%A[o=Hsh]<jJS`ou#fn4p#B!_/hbF<d<k^hgA)10Z9aRqg:9>'H-
+as+Ql$omQ!kF07reh#P858sLmm=%]IL]0sGYR+PFGLUD[mu4F2J&pqR?fg(37l[i\
+f\0rt[D&6NHOd_:nV#>IqM<cYY#Bdr\3Z1LcX?%d3Y)\1/8AqFY;.boZNdM%ol6Aj
+"mf<:Uoouq]<[6!9Et9=QdpL$]EZU9i:CAuZfa1BTA$\kGLb@Q[oLQ'=74P5Ice0;
+_cPMqo*EtP=<gkq5%e0WSj]a?,M\K-_YAqTcUL.g>H*O^Q18(qUjKr=^)jHAL'_Lk
+3GX0*37m*>L6LBt=C*&IH4^A.*Q0Qai&(Ones?ociKLMgBD0fd+5K([ErOUA[D/-m
+i7$QcT9]Gups#0pq[@u-?^*``]:O-6&_FJ9kb;9J#Jen*0it2i[Ni?nfcU**_5E6$
+Mm0JDWc:FIP3^5$&QW9@I>$EMq[@\oXL)=8]*t_lLJKbIJ$PuE?6?T2Roj!*Pjch?
+kC;RmR2<3NU:oUSbaVjETBiBZ+*##3^+j(#oc+r2gXb&(S9smuqc`P.pD.l>UNQjJ
+ZONArZlP(hYJM$pp6n7m>,TjLb]mB@gQS+2e\CH%%jcRj+7IV%r"%qs11o3<m5)Ic
+k#:+)9RW9Jo)%8uE&]e+UM\R/B)_Pi3]kb-.aGGEcbZ-@B"\=eDbFEOF7$ZIB"lIe
+[JrS*B`+AX]$-<"$kJBUF)G(P00e.2O*g6'3N[4$h/"\EIB7iDIa5L?jR[F.@UG.0
+i,F/E7QlE2iHKJ]?fp(V=m#rJ6d<<i1N.Y.eW8jIH1'6E#L33-k/<*tFWu>8lC(ee
+1A9"H:H7HSXOGbnoe*G2-f[."r=rfXluV<sg3lVuh:Q91pD$R&\S8:kF+)"!c.%S/
+f%QU=2KTFTmIlq9pct,A@V-PA$s&L\M7\drIX?2]a5K*>J'HWe)->tAF8q:go_iE3
+Vu*NcpeL$brDi0Eju1J`g?W@C#Q?K-lquJ(m'sOLqWE(P3X!4rc'9a@<SUMo`VT7g
+`f)D=FF=)]aGJ]a^0,isIU_ST\DqtRUikXclTCN(X*(r'B0KX;nFoDr6Hn3H'?Zir
+.ddPWCX,U4?FqrO[3N1_a`5S!5#G[YXl\f0-:c\M7:>-3aGE%3XQs3QGG!:/pX`Tp
+/QG$In$"UFF8q<=]I2<iI=AEo-1O-%59]Wrk#6?I''HX=n1Ac(ir.i.4N$cG]s2+n
+hm5e!:W$,C7_;sXD-l:saGCnT]'c!Pih8D;Lhd(K^/O>?Lc.K\>TQB5Z7;JgJ&H?2
+LjgRlbIO#6n[(FnhlbR(qcsGr4T@?I/'%AIlM:"Oeoa46j@(+S\96U`ho/cT1OJSl
+p)`2lh+)W!R[IsNiUEJicfPK%&^ZZmChLQFSgF6_mHgUa-Ehjs+-2g)O#B,F=egD\
+SB+!tX6jK'ce^n51PbmIn&L^e=VcK(]bC1=kW?;-48/lf/Zoh$@iqP\8re6.;m5<,
+MM'i$?7t<Ckidf>k,5mWP5?B0I`itp[lA0HreNY:+"_j5(-N;:Ym3GeeE9go%<DSs
+kI<Y2aO/^oVJf51F8fV=r[QKtS[\9*^L&`MGjrKJ0m?p1ooGki?@2Y/a.e(NdAB\6
+6kd`Qr1-r9qIuP]ZL7SIEA20?O;%BB(k.f;"rUs55mA3;O?j'gA<9(]).\gp"rUs5
+5mA3;O?j'gA<9(]).\gp"rZK0jo5G)m9`'
+~>
+grestore
+showpage
+
+%%EndDocument
+ @endspecial Black 867 2118 a Fe(Figure)25 b(3:)p 0 TeXcolorgray
+1260 2118 a
+SDict begin H.S end
+ 1260 2118 a 0 TeXcolorgray 0 TeXcolorgray
+1260 2118 a
+SDict begin H.R end
+ 1260 2118 a 1260 2118 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.3) cvn H.B /DEST pdfmark
+end
+ 1260 2118 a Black
+Fe(No)n(w)f(mix)o(ed)g(against)g(light)f(red)i(background)p
+Black Black 257 2347 a(No)n(w)f(we)i(create)f(a)g(light)f(red)h
+(background)f(using)p Black Black 377 2551 a Fa(\\pagecolor{bgred})257
+2754 y Fe(The)h(images)f(\002les)h(are)h(created)f(by)g(running)p
+Black Black 377 2958 a Fa(bmeps)59 b(-p3)g(-c)g(-e8f)g(-am255,128,128s)
+d(stefan_255_rgba.png)g(x2.eps)377 3078 y(png2pdf)i(-m)h(255,128,128)f
+(-s)h(stefan_255_rgba.png)d(x2.pdf)257 3281 y Fe(This)24
+b(image)h(w)o(as)g(included)f(using)p Black Black 377
+3485 a Fa(\\begin{figure}[ht])377 3605 y({\\centering)377
+3726 y(\\ifpdf)377 3846 y(\\includegraphics[width=5cm]{x)o(2.pdf)o(})
+377 3966 y(\\else)377 4087 y(\\includegraphics[width=5cm]{x)o(2.eps)o
+(})377 4207 y(\\fi)377 4328 y(\\caption{Now)57 b(mixed)i(against)f
+(light)h(red)g(background})377 4448 y(\\label{img:b3})377
+4568 y(})377 4689 y(\\end{figure})p Black 1851 5637 a
+Fe(7)p Black eop end
+%%Page: 8 9
+TeXDict begin 8 8 bop gsave 1.0 0.501961 0.501961 TeXcolorrgb
+clippath fill grestore 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black 257 473
+a
+SDict begin H.S end
+ 257 473 a 257 473 a
+SDict begin 14.5 H.A end
+ 257 473 a 257 473 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.5) cvn H.B /DEST pdfmark
+end
+ 257 473 a 100
+x Fg(5)144 b(Backgr)m(ound)33 b(effects)257 705 y
+SDict begin H.S end
+ 257
+705 a 257 705 a
+SDict begin 14.5 H.A end
+ 257 705 a 257 705 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.5.1) cvn H.B /DEST
+pdfmark end
+ 257 705 a 120 x Fd(5.1)119
+b(Mixing)31 b(against)e(backgr)n(ound)i(color)p Black
+1286 2127 a @beginspecial 0 @llx 0 @lly 162 @urx 150
+@ury 1417 @rwi @setspecial
+%%BeginDocument: x2.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 162 150
+/DeviceRGB setcolorspace
+%
+% created by bmeps 1.0.6 (SCCS=1.65)
+%
+gsave
+0 150 translate
+162 150 scale
+<<
+ /ImageType 3
+ /DataDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /MultipleDataSources false
+ /DataSource
+ currentfile
+ /ASCII85Decode filter
+ /FlateDecode filter
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ >>
+ /MaskDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /BitsPerComponent 8
+ /Decode [ 0 1 ]
+ >>
+ /InterleaveType 1
+>>
+image
+GhVPUH`UdkH(XiTR2P.W1XkAdPe`N:AjA[3@>H(:mMAA1&-NUg#Ri$s44o(7&/`H=
+"CkU]Wg_MEX)V&^<2ikT<EmRG</%]Z.begjNeLE^C(as6%DqlI[dj;'F?e[^T!a(F
+4):HKj10DH]`*/`n*B>Hf<a?2pO5@*l,=J=FHAcm).\gp"rUs55mA3;O?j'gA<9(]
+).\gp#!&AgoY/rD*1cd2cQDP'_2Ch`i-EWh]jTU@'`#;9`D01bY\Ea9ce;9Ma1T^p
+q:qh8GjFi\%^L!/`k6DP+Y^kem%rci>(Jtb4DA54ZohM//WDZK:)[t%YJ'9_-P(#'
+ZAL`2OL`.+G>B-jp*HVYUAj1um_A.3n*H=RcQo\6)gr$NgFANqcOW]5ZYceF^^ZG8
+akZ\6qnahF4$V?Nl;fRTT)scuA,`otd$#D=>=KQ$>H=np:C]LYpj*JMj@/JNoN`P_
+Xfe-@/][-Q=bJR7#*m0-(UmH(]c:P?nH@n@D/\`Bi>f`?I.>kds7DBOGpdQtH;;3&
+#.L4ef@E^?@V_<o_r]&#euBOq<\@bVguWSDr8c%.*mWdP@"2V$=;F)`*Vi:=R^QE!
+HuH;LO2KO=C`,p9h!2a._;\q.pu@8b.PbU6):%\jT`8?ur4c=#0OBG6o-in&bcU@o
+q.k-149f$h;MV^YEP!gpi:\(i,^WH*2fsB9D-Jn5(*ES)QUXc0jiPYUE&jH_@t[#*
+?-Y=jQh174D:@-&k41\;Ikj"0rjEfD*pmGkD/nk\/m#IsX)+>hKiK\p*n]TC4nQ]H
+NZS1P58ZQ[LOV:0Cb._C%P0^Om%O#WYe8cQ5nH#nhtkF;(.OpBj21!rG:^u-Q9"-8
+_:m>ga.!kqpXrqsT`"W!Q6So;G<T-fJ)!'`m+oGNH_Yp@]PquMn,NCN_)7T"GW`S8
+Tj(F0E$#S[^Fh`nj63ar)b5DWa"*od^1-t5m$bMio`b4pCq7d1kl]'Lo'C"+>/es^
+f=Y_fNK8L(Y$?2=\YK1GhKbmrqsf`.rnf(e;<44=qUF_5TDis.r:b[7G=UQjguh.N
+m+F2k_$(X6mKk3^))I[C%efb?qL.k"gnfF'XuR!q%NiE2j631T4KG^]`qQ(;WZKT/
+fOpOT]dS5HVr,U?Js3qfEs,;=l^W#cs5Tjr*F4*E=el#j>JE&lY93a_OoKIaRA7Op
+d"dL+4bUkgLA5(=b:u!-[D2[pjk0(u\*'Aj\GXY@r(b;n&''"e8&=6GK5NfG$tbI?
+/[js:N=4ik@ZMnN'O2B$\:7rZkdS![meZ@p8,rQm0CI(L-^R$KVuQNcd<B*o&@bBq
+j:/9kqu\#X?2=KoO8e2:hH/dq^%]48J,>i3'_s]VIWpp(r>WN!$'0KTiVe/lMX`D\
+(<;Zas*==kjmSp&s5oN;*8NSd&j:O;k<E<u6pK[$5$E*h^uF<_E:5mF?N$s^%E@hM
+GOn.0:#W?Nb2H.!T5o`)@rMfo`Y(mJ6fF?o8ptudo<>:ma1=k1csQh;N&(eoE!&IH
+oriiCf11>ac?G<JjfeX:kjl3tI<=0;)F?'%lW_u*9C)KKN^(GEq#&b#or`=/fn<#j
+-\!3bZ/sVVH+\4"+7UKr**>>i23:D%^bieVKA=1gEHB6;E5/WeAYJ<?@[*M_c*KG8
+O[$SHPaOXVp*+&&@b_E>`8RqEbubdUPQ'Qo+"Xuu*=$Z-)a+)@l)0UAnXJDuqP.Er
+e^6TBmBk9[DgG?E0>6<R#8H%8B+U*>YrLn&asDOu^C-61"+2J@`,=U.@^"1=pC&So
+<XuOHM`$R3@s+HU&#PN7SMgHEh9._&E/:-"rD(pIdFZ;0EIMKfMTQtu'O:rfkV&?f
+2d#q9lX)mQ_WtMe\mVU(5QC"M(]!Eu?F;EE^$&`cO!L4m*LYtMn6Ot7mt]0M4/3a5
+Xt6:`Z-gKC:C\?c;GM1XQW)X8Eb[[+;`hW:3(+;>oB8-C,A)\NLV>[WIES\#c,@$@
+2mg2e9C+8h(E8b.EW4o^m_8Ur2g3F8=]tUNWM^O-jR1j!:]/A=N6Zdh.uKkOLsPZ6
+`Qs"qQ*9PaKP18o9R^QsAFbP*j?)p<Z.6cLpl420lt;69`a=,'`\)m=HtjY<`a[3W
+Rb*hBe9sEF(M<S6Cc/X:%Y++H2Kf.[4SP";QTDkl%V63B!e8p0cLL"]4o/RKa\,Z8
+MYPi6kNl,BR4IH"q:Nkt?KBmL&q9^[<'S5D2ZHS0Er$3&fP1<iD"J0H)biFhcLJ_:
+-U))G3Nq0U>ptKcGhkbC:.^"(mC*Lu(QDSe'/TVQO(`mtGfoW89h2tXGGahcp`-If
+r4P;Q3%;u;>5TOXVe%Q)U)`/3i&>DGnK[O9Z-VXP].UUdkX=u%eP@1[3X?5%2_XhI
+k>r/V$(RC+-ARud_#sOtj%se_GTXE73P;f,g@dG^X`'W4G2$BVp39_E`a<ETKLpJE
+i*YBGjUV=[/(I.C^Cn:\#$YFHI?%Z-Y48C8I&>s@Il,g?6fN&>F<P,-7c*S2oZ#bb
+E-9UK$!6\Q?O2/&NbZaG/G"U5:M][HfW/R*p$17MJ'Ueq&'`\(rGZSVMpkupaaKbo
+He4Lk)D@T/\NFmnn:s`(6/uVN+n<^jiM#A7gKM_-=u2I)D=&Qt2Y$[SY79W:c=ukC
+r9%mfWKijoL9p!hVQL/C0m^*.eu%>;TbANGhG3LmkPO,FV=l\r<?81?Kh"*IJ!`66
+F,?=N`ij&s3('cfkk4!'_+!'f(djHNCbN2[a0(jnk'?NQY\)1"-?h8SLZB_emmWf`
+S*(Pg0fZ5cVQsX-NtqWH^*[dIpMT3k+-rAUY#Hai)8MWI5O3b(IP#S7Xg8Qh;eMft
+LJ>Lj`[MFGi<r!onIU(8itQ"a)-o46N]]2l@r@pODP>iUi"?OIFaQpgAXMZ-QV6XP
+D4W";b9?QqC<)6^=R4=N%iRcQReP(+dj)\A3#9!ACbTHS`*_&D#^[c^MoaU.%+5OR
+UKZh"ioR)XiD`$Xk^5_iTF>!g7]bS=*#r:,ad-re5-'][I7P2WT$b0NRD`]5DC=>`
+4t_+bWICH3(h4EBNf9%HCYj!q`i7G\=5I>ER"`lV4h2jT6iHH-@pO:W'mr9VUS`7Y
+=Ps]oI.pHQ5%G.e%H?!j-[bKR8^.b0335/<)iafMOW?=*6Ok&4-h87jM9F;UZaE<T
+/_(nkHQ.#XF3@_KQnPN9P`-jFO'"aGH?I,3p3`Rgi9o?b2)um/Gh_CG?g8rU+EpjP
+pX/.h4V&Qh/[dn6nS'Z/^t1mIL:L>53J>5C$a6`Rem#XWRqrPq(OgPE&''cA3CMeE
+>@i8olFH:j<tT;GH"qRKk@]g9r!IQ]E[o#9Qe%Oi=P!6K#-[B%0`/GaX*n8-83Q%'
+<VP>)kdij-]=TS;p;YrRAriJT6TtC(K.]92%^jF#+EeJ_LsAp8WWV4Af<iZR@:Kpk
+GJr5ua78)PqrDhV[Iqr*Nph#.0E'>_K.hZ;kek#UNR%C^?S8m%o$&p\I]neuoq8Rl
+*"m>6i]MSCV\?JOkX0INS[Io_r?m5s!s]#@Xd6H0g-C$FIDWj.eUQ<3jKQSF2-t0A
+39I3b:W(kGjb9++g]tj3oa)UeB[#F*?M:[&O&Hk_WAWRkX"?65S/c-Z@HLarXSsAJ
+IQc]K4ta7nl:@=25Md/<U(^s4Io$W1[8_nsUL]r#^=7cjW*bq':^5=$aeA\V1%NW4
++1eUdmenea8WeB1?'lV'f>D$rYslBPDj+s+kTbaTojmW]3n%>ACVQ'+f*fCTpStp@
+X0*+L=WGuu4>dTbC[Ol%#Zp6+)1-c0oR<8g7!H*;W=N8j1692&iK+s_p)VePV/AuK
+5$%ngj],>m2"dd?r%EDCZIP.+:\M.soe=Y+kjjGsPBfLd1?f`iSgO>LgAFY/"^>;8
+(P=;pg1C3"ZYP%!4ULbtltPb#`%-Z:i'+Ede[h=,[^A2>W3Hh;?4fk?_pO[d3:M`Q
+]K,P;pGI66B)mj$%FVjAfm6b0PgkD@_eOC"^Tb&fqkj&"5!>8QY"'#*`?@;4SE_=3
+X(5S'r<XqHZ7>@DaR*'[k[Cu;:>D'/+7pd4\*I%qUS&FlYIU-85i/B>aZTTd/YfeF
+n_D"pUWiLeqkeh9ED#@$H(9$q(6MW>C6Rg83%ma`6Yu@^Ps]\g]io:1C>2rEUO*n;
+kHUC814@CLZ+.R"oW0S#&aNC_-_?]On<E*qhK.YQdDc-4$b]2gANemDN-rme.Y"\1
+c,E2cC0Fu1_dj>hbA<6!$\e8+AMEf9g!RRgp/#DZ@-Yk@h^s>[*_[Nd\#6F,oc)jD
+f1`S5OaM?E*hI%+Z1ru+Lb:gaT<5oi@F9ca=R(,-(M<4qD>g:'&_F>7`6%.oi:0V]
+4KmK$"8/d.n#H>eI6M'Y@iJeL`@Vs+lR/\CqeYjK-Z6-4kV_i*48=K*Nr-E6S:&ES
+E2i\f0N8mjot/d>9_#ZV6`g+$Q:"f.nX3S&`e=NcG@nbM\RCEnHM4[`F[j^-S<!ST
+lF8amQtr%P3TF[\B(LuVL7-AuU"X'uMg(fGqQTT&J,6ou.3/>FrIr.3Is0,m[%aIW
+Oib@?5O%1h`\+ao\]Z($[5sAND732UDaNbGT$cV5W1TSYF#Cr`oD8+6Fe4"97c,-[
+2OA8E>LonSm>l^cm'UQnJBiE_T6Q<u@ii>VXKA7)4D!KNjB=U:n2IOQ.Cp'#?[C;?
+HJ.Ur;ml5pLhX2M>\\L`&'?)W>J$DFN4iT2^Wkf3CT4)]01-h@p#C>fLiG.qmt/Vb
+YJjbYmer##EmrT6Y)SlVbF%rckM0U_NP.76^T@80TJH;XYoPJ6IdlYurQVV)^3e<p
+q1LFq>_4U+&)Z#;o\pe'@E75g<M$/^VC.i/-_-F8euNESL=VUD*h+%<Gl>R9/3[ON
+cdl(D2H+C70%dVP7^r'&[Vh8oLG+]Gm28"XolJ6E]aWUjCEdUK=8$VSW5f*.migA&
+F'nRo4Eg)RZ9(2R:R/tCII8\"4L]]-?21&lqH8Nm*kaV0s7dVE-F"*V.`u6u#DGNI
+bMKBsU6`[p)1?bS1mTjs.J&gV6Z96S/%)iu>LQXUMrq%A+eo.E]C9GTQb%&UF8B\*
+YFmM[.JaeGT1QJS-[TRoVkKHnSsi\$#dN"?310_GF;R-V,/W@Bkf)Np_JIVR(TnHX
+#`!?2G\O<%jStQ2IN*a2r9^"M<VcemS]2Q4`M*I<?g)C>pc3T[\XD;Af*UeJboqSs
+kI4/'e37fO4Q80N:P0`;KBPPpbI'lD?Yc(9?OM4KrE=7(*5c;;3I7V2^Y-MEh=<WW
+O&bFkY,Bn6=H$$F([U&9YpbZSo\*!Q>$VDpE/=/)aYO>h;Yf?3kP,!B>k@eGjD=%r
+K"!@5^2@AEn!DAB?hS)IQeOQ.p0uKDQ5o%hIFZ7\`$*(2HRja45Q!TbT!_l$n<:E;
+Wd_R\ktA_)iU#NXX^jt:rKi/!j'ZbE@1X2_$F\l,NHh5:-6N'=<#>,^^\HRNUHe_C
+<V`(`%.`.o0!IG$Kj1#FFnEq!c.R47QT6&2oK1S"Ku`MKhQNuW0t2<iF,;n)4njtU
+N]"'L\r\n)fH\uO>I1iMp0M0/k:tTZQCP@1rHO?5N-CA(bi`8fG@@c;?M87$=QFJ`
+C<""u%`eB&[Xgs80f"3-DbT^i0Sg3,8"_N>=#X+9r2/2S6qnO'd"h,?q1h[\de;F;
+IG*4BY5A'LR3';2[*:\,fAG?EC7FVjkBdf)&HAI4nc-sgkWjO.gM1YbI=DdQ@IAuD
+g$1_J4X5<SG+>qM0Vr)4%g\5+Ir?[RjYnGS-8'jVitLL]s);CH:?IDu&'?#@&*>j$
+fWsl0,Y#0@3ocH0S)!jo?*8/H1kqE$41]@1&%hU^heXp-SG#Q\"1>h!=hM^;UCZ>1
+Go^j[0')l>X0.0"RD<U^o,i8YkHMICf0ZAKOn15o`[o%R`ji+j5R13!K1Gl,hFen;
+Irk&L*-N;BMGSL?5D3ttnMT0Io&=0h](<!Z#Mmp/)I;!t"h8I8,H=+p_nI+NF%>"e
+5b#E$X_6I"N#79DR!JtA0X8]ClC<Mc:]0:XQc)h&&&Xb($MG>Qd<G*R=H.=^&7*AZ
+*:eRO!6=s3(JZsMZb@5IH]ISVidEg4V]nLjr!J5V,&Y,4RS3:eIUT8f48Z[?@AZPa
+j#SQ(\]H/[=t/Lp[*>^J,i6]?mB@r*cu^HO>,RQ'fHR5$rT*Vnh-:ds(SW_AY7CQi
+lCuG+N6,DLUk4UiH$R7MENIBOCGC"`(S'IRRb?>hbM-8:\XTXs3?214I2'm]_cYZ`
+/8D(]-^$P:AgUm;2qMo6QZ.1aI-,@oEV@b@ZfZRh6f*H$<>Y3Ir'#"TS)quo\0A8.
+Y4(lg?F6Q]7J)db6L;8II)Y=8lF<n&B:me:KY'Ef9dtQZ%X5q(puPo0]e<Wo9`>7n
+9^P4`nT2h*$nNI6Sd"`7Lc1N&I6E!?RH&R7.IT!HA*fp8CZ`:?j_q(RGO:jcq_Z\d
+)nI"uY&ikf]INP`lG;\<ctD]]o_p;/Y&D<EFI"*?b)TT9]Ii]1Xe3*=Mmp^=bCRW"
+lf"!om'ASb>m6"r:@CE[_(BeZhXdbn:$ao`NTBQ&n-;`NCS?Y\3$*8<Us5*P5\=si
+1W.n`A]B5%eR^<XH`^B2AAT^Y5t)!iff*9-c8j,I"XZ%8BD2FL?Es;oC<S8ff2NO-
+8)73YUCX\A%W:\kHo_4h\H]9IS:[>b1S046oG3MXkP5"$^;ML2J!+%r3g#pjSA>r1
++nSbHLQjedj'*@JhK(%A+flP11PP+1/G)kDT8.==2iUm:2pUM>oVD?03=d*jk?P'N
+ZX%.i](>We*"Es/m3R\_E:I./?ZG3S3UL8+i;,He*<_C[>e!\kO;GT=F(#BEC[B5S
+3.t.8BE!IjQIkXUa[)XOGob`K>F!*rCZY/,a^`7lW`ruHBOU*#=e43NBYC3On>`H0
+alg!;QH(S0W=u\cgVZ4aI1YI"A^Qr&/CMj5S],u:o*4SF*VT&qc_3@7CWkE&!)qsa
+j\NQl@[Ag%]SG[kdpQtKr26$BD<?-;Ck?B]CW62pSC7.f/lYV-B5P3)"l)sXFG<lZ
+'DlBZG-T3hfm+)8naS^Gdneb%B/2JkBm[`BC[^N,:)<*/0t0[q+gqQjhV]pD8"XtM
+Zh](UmWpiL=.&fIbh4E,qM\olc$VFNnJO;S\&+jsBAVP1g)e)6PY67U_sMTDl:SJ1
+AZ!^2R_JfMX7]l$qbd[]qW3!S5#`otXSaYn4>(_uBR2Dsc%\Z6EO,SflrKK@Zn#CF
+XI0plF$GEthf:s#gkpBEbdF5f[5O$4/2ht7,^*eVAKE4[-/\8!e*md4S@bCrR`mkK
+)0<#j0);fE-\(QD,+$T@3tQmi[Wrdt/BmHflE0B=m0f[JRliY.Y]*.gJe!GuC^@c`
+*"F\r5DR?fRr<!ENmM(U=+qN,e&4*[<?4Yj)$Wn8lD@<(_BPV;S\3i-EdL[N&]\4q
+"cVM9m*pIO,:Z?hREp,&4oD_aE(B-/[*e)Of*p$$BV-i(g3]m(LnCCOKL9X&X;p5'
+ZJOB?3EtN:^;FsMPKn-ul9h2]^7qh#kO@T#;8iK,rhdWP@oi(8MuP_J&/JP%O=[i'
+bZR:Y0#AEYDsitic<1+^`p"FTfh(%VGMT<1^$O"MaiWO_Qf$XZdi4$Y5-rP,_ZqIE
+5e`jp"R_FA"?XkT%cco@)$X:g='#@XERFO2qL\E$^gC_u0:_,8IZ.?a2)mO+%f]WY
+_BQH1#7gS-m`H@A)Y,`?2fGXf@sOWX%Y)Y>_!X/0ZIm4F;rQ*9NQ7-uPti]EkZDrq
+4`]8(=+6Jk:F5X=ad8$uK0OEcAUWt@26Q1S<]S8#_:"D"ekCA5GMs=L<M)A83@qc)
+P_n%b+G4]J>f("D<n?qOd9L(942*b\bunO"Icbcn2+nlHQC8,PiGZl33C`H.)Rhik
+r@;qkD"i1;V5L$qrESY5l5ubpq2VO(?s`$!>uT]#K*uSU^jJBCSG0mpYoZ5,5PmRE
+>O`OWkO_YrFo5cGmUQmfS1)&50`(l@A0qcZ_n8V,61Qqhf1tLXS_@9(cYq+t%qkZZ
+l9q$#3#mSFUE@j8nc`gk]+I6Qot^*BYI]Gbr3j8X3Akt?&5t@<a(jN/>9@j?IG"uA
+rOoQ&E;bN%/:EB9PNR<7-Hpo.^[.uHn^uIS;>l@@=Kt@Aqj%*Xq2IA+#W@TFeg7%,
+H/C>mT=`qupd*NJN'4H1/*\@VhUaF35''IY2fP_J=3E>N^B@i*Fr2:ZO5mc/J\Qp<
+6sB;0NoTX.G0de%M59"pgDb&P]<*]=5?UA'KB;VPZ^e!2ofrAE%-ILoot&s"T@mLk
+Zne&DY1+MloAl"jh7nO15PQ7,P1TPHs.$gmVephh]]]`D.gKWlc1le^GI'3OIInEW
+Vq3c?,C\HAc^Jmaqm2d([0@V3SBQrkgT`H]>EScgh7).m,(GelS\N?d4L=d+pih.4
+chDaX>P=4hT:_[^f>h%5Sl;K9Dn?qEnp.AsUch3<C-=@[9Dbl0e%WtDZAu*J4l#50
+i&9bFF3AXg76(3bce@o7CDMpSO+fkf(>r$$$o@8M_>h@?7GJ0$k+0&d+6W*D^\<?9
+RgOY&F26:^pfMouj2/Poi5RXR$b;ONHR#$oRrNPn>T\m+%a7*.fOmh6PjcZm>?H2[
+E-06e7q;A3g^C$+Ed)r5s,fG7SGZL0j>m7+I!O!*g9oYkb8RkDFaeO[ephhg8G<>J
+2'1r7ES$qnCUeCZ_bnjCK`TeTEXRNb7s,XJ"$R@33r^SR/,TTjM;N0pNq7crPXGCE
+3;he8T.;I4>X"Xb'l8mbN<4a/p:!03[GH+GP9!YY-'+J38Oe,EDNK9BfO'\&:q/C6
+dMC#eIc0X";\lp9^7j`Ia"-hl=pb)?;YTtHIJ/kI]Pj8\QWpU!rLDFD9gR*jpMZFh
+-ZValDdgaN&?%CrDO_aVH@kRFFo&6oFK^VCO5:o[*BUEh6>tOe#X=n"\5=&SXp;S@
+DloZC>Fh.mNn663a5V#>(Gt$:$kcpb^OJKHb06X%@[mC]e")a3qc_2@_oa'IWUO$g
+%J<q@S(1+,,!;bEo6Vd=fgD7\1&&qJo='^o[IH=omns($?T2$F<a3OeG2K=NhE&,r
+hHXN,eeQV_6#YI/F^E2a@U;XOGX%(l8;c9`S8'.Fc1u_?@fnC8SD3^9f&JM%JY%O%
+NicXKGraqGor?VpF[P15@UrSl6[iZb1ABW%(n^6WjltPQREIQk+$^de@s`XbcXU\h
+3Tl44W.&RZK\/^7o/G`lq`CkG?)]hSnl'uJDNU2:5JEiWo?P,8^+DG3ri!j%WN0T8
+/n$<o4ljfqeo9#4%qdT:g.9fFYYNXB3o%KDY/PQRfT0(ZeNT`,Tfg,V4YZS3CU]Kl
+L!O@YTmoYK"$/+&1UlX;Nb?*9[k_\nZE.%D?Q8.7[DeY'FP-C2qa06GT+6V:9,gqr
+>P$c:mq^#]kE=kE%!XV$@P63s;:.<q?,\Prqg:W"j*:?3c@O%X7H]aTfMM.tl:glP
+G2BnTjfRU)7[(Nhp`8G!h,!=m3X\I67uoWXBQ+/sb]oj0LjmH]@X_e3H&(!5l[I)K
+TqAf`)i(U$6_0e'[qTI2M"-Ea`Kn8dNmF[<\Q(;orl)VsLUi]sHYAD\NJGkhr;Q1U
+C]QW_O&Cmm^2Ds6j+3coZ$HZ6>j$S,*3[;PQ,?KMfeI7QeUd#!e?:tF>A*^&im8M(
+hKi8S\XM<O=3Q,%^?;Z?laV/-_Y<-g\LoIHRH-K7n(1\[bUZNa_&&WX*7k8*P$Ag)
+4`jF5F"2Fj)$,-aY.EN+&Y@l_IW+D&a9^!(+)cQ+99$=4CgmfUm,QR8]GDU01!jXu
+g6^AMLA,X,39PGM2[XhGHaQf!D:gT0'`&BqN%X/c`jrCUIaU-DLGfp0?$.(pEa1Tb
+pJA6;l9/VcHol2PHJ<koqYD;t`IZ"A0oH_(rn_k3^!&p"3W6q&fCFit\JF&>qdC7h
+h5eEG:-$'!ql7>`4`hc]XjOn2NmDbdXpMj1c=pg4Pk-B_(S4oNEs-Vp\IR"cg0/SC
+\uN]Qq_iT1g%$8TY)0WBDd9BY#@l>AobBIs[M]R5m=*HKR5KSPEH.sDO3]JR^*n9%
+WjgbZT'qh"5l&lA`5grQ3`02(hhER^1Z-2,c+foqA@gh02Ga:sV0XYEoCc6oDBa.j
+@$+UYAZr(F?_=Nlp80&+e&%h!m]=,G/>=53Y<9C',W[LNoYJhM^_<of(@UF-0ZWk%
+>d\_j4A>;ehXB/Oo][Aj?hk<''?bM/Hc.;]iOBC'4R^uO"J8DSG`DH:%SD2Pg=MKd
+gc^X`[AEZZg1Xq5FJf&4GtVsp3UYo!f\W&Y['!17&qT5o[sR)VbShC:V&XXD@]Bs9
+Ng$a=2sY9h3A's6Y2RefF8cgFDL69tp7+0"p/gM5k6E?)g[6*aoQG_3r*K"F4S""!
+^[N7P&ROR=hX"$TrY8l9d<.nPNqq`,>S#%SG-<(`k`nS#K8mm+r+96(mCKJG[+;,<
+YqkpTSnlV#\r(P/#I";kkLZ/pk8k^#F+egGiH*e?[49]k1H$k2SQuV/J!/$m5k_&D
+pKC-qT_2O\3tcW+5Ih!A4J$i-m.je`I15C3Su3C6X;tSQkk<n>Xu_kN\<"P8AfA.*
+=hlE2_&n7\5GueX7plt%d-k[c%Na0&kVDn>5gX_2O*Q`Z^`!*5Gn&hW;>*R%+4$;]
+S`j5rI*WlU=kd1rDk'2^0$NN(EaEuc>DoWWI$9%/Ibsi[j,fQq3L!J@/f:k=@]a_n
+GP[fn2ln;Cb9rM+DsatoOiQ`TF3_eW`ZA^kmgZW#dVG?2Ui4S;4r2u7![d$3jmVOI
+hp:W.?.SbK?*t+&hIm8BaWBu8m,]9i*^d)=<t;M&Y5'7g-O4pm35c'_I),rE^`dN6
+rm4eQs5m[Mi]G_6H0QIS*Er;HCHltmesj)Gl7dM,IaM3"-Ke\K\_\eXgGaeXiEB9l
+Zp+U5NI/kE*DLYF9$qjjhf6OZpBQJTf30*;hO=IKC]C$@4]gj8:!V#jhHFW=`A]K[
+agFM)DnD'6hk"P&[jT,g]"`fC\=bpgp"4?`:A#cMZQ)/TKK-?1$pXT4S57G&2)t7S
+k8,bPWMJD04EEaa@.bhND[?(tB$N$6VT3W!GqX?Fp>F"oT>"#HgXfk>?0qIX9>/'d
+O'Z<HQ,BHFGKXuUCWK,LiFDiMJbGgQpKqW[PWAJ,bIrG]QUTjflNE4%?kL)>TBY*+
+D;JT"mN\N5a"K9QA=Sf;o9$K)k#(dF3'Z[rkJS9[kURjV)d>DFH&"I!L,%QR)CkL?
+j0>e'Qan\+[*F!]Nj3r[%%!q@dgn\S(>W6I&'DG&(rH<qha7)6G?XDMX6rWqd%'Z9
+Xb4F.JN-=BrS_?q55,(M<ndKp'm(;]iP#!gYXiX:Ih@^eX89/`96FXchrSdKNPBOq
+5&uYH6>$ATH\CDnfRX9;i=`=nSHq#j`AuFt[*KKGH!&SIb%"SdI*#o+(>"`GHLX'U
+:NRi*Q2#`HRbNB@rC$!#Z%aulIG1u2H@'BJa`q)qh:cX][O`W*'BHiI\.fo8Kmqeh
+og3f]H8nUQS9k:Y?b7,t>(.N9'IMe$]J_e_Ik`t]GdGGUHYqsK-@b/&^Y\=JRsUlX
+^Y':f#j&?RB"GWJjcKADAe0oAL:k<g/94Ka2eq[S/6oa"*_*QdYfGXO2cqk;UqYl6
+)7R\_F_6!+b["FCYm,"!CCS8UqW<Lur@Z^VKbL#L3`-*jeb/iC\!G;3E0q'6"6C&r
+8t:5(A3Wrc@PR"6Ya7Jm]K=sT9/$a7c@gb\G(79fcWD%]b;&,)qMG+>[<pZcf'F]3
+,kK[^*GBY.d!?Z?),HXG2RfX@9,;S#4eFGfaYA#Ls2GroIuAR)Qj?1>/G30)]@q(B
+L@XPs.s$0jKC/JPH`;;'eEFJ\[J("T]D+A^&@,YUB;Z8!'HsBget1hBC`%9_HM7Jm
+X33"4\\C*!BuN1WYG8ufYB^t0KJ@`,e&3DV_?OXZ&HD3V>*#q;-[X,eG@-=O7,Nt4
+*m)!"l,.hpQ7bt!*3'[3WSqNr^3sM#-;#'@q19PMA#s/^O8>pC=W%/jc@<i%q&T,-
+]Pe4[Ng.T6HeuVKWQ-R9p7*$/3L_2&oWe#MFuBcSE]DI-I2o\@Rq+5I!_V;0*^KE=
+.+Ui6?#[p_jY:i)`lBAYIG0q#X9i(:gL'gqg^!E$g0`lH0()$u:sAf#_S'=4q6qHk
+>"Ip(r?ue4/93r%7G?df`K&?7j+4V@?F![[(;^kfGGbBfIi8!$X)BAHekte1[`2r5
+QF.E5F'h(W>a-8f"7BD][*-ZViA\Y4p2T<1B^P^0k;'$+gkY"FY`8(Ea/sJnF;OCu
+eWr_t,>@76c1%&SnCL#4VXN[hORr0+GiIrZ_KJ(Ejh*-?ohUHm_.&7nC]B=U>#phU
+`0a"u%5W$:09&.En)8Cu=SiQ^I[sM(-BHeslQ8cpl+SQW:04!/7r:RuCsHWUm-SWe
+_r]&"dMs?+?&1Wj&(if[bk[gLV<B9#3J3AsX4T?u?]@3Qn-Hf&/D./AZ/O"g6jDnX
+\N1S?\aHkFGE"g.W\[$*mH&@&ecp6p=P1YLBC<*q]A-cY`%DfCTC:4K&FjN/jn,gV
+DNnXP@-NkecB?5<=7R$$^:\gA.MgQqZ=lp<FQrAeN24`c32Z;Z;AZKk6Y@X4cU#;m
+LZoVH?0C,'Y@0NiAnulPp.3a^F.Y78pNcc3g;>D$nD!Z`^c1VjYAWdA7aDNiou9$W
+fbh6d\UL"@f-hWK-FVto^0:,a&MLqelVDoRoh_g5Zen&$jO&8,qMf(bhq67BGJRb?
+)c:aP4=*)_3qVZ+Nm6HW(5X2u]2mkESDh<J7!5307a*CZ?!Ef"?Uua,Cc_;t\ZX5%
+^ErS\8Y<*OX6+QW\\7E`A5D1`as6`pk,sYLLO&\\kLCV@Z]bc,EX3bi'2VaVHh*m`
+/@CaH\'+WQ[>WUK[,,E`%P6\G1M=hq/N`RjF;J$1gj<IX*@tAQl..Vl6PhAoS=;)f
+DUp_T*,:]-$h<3&Kl-k*%r.a$_p/0F\]3^8]"Uo\q$]/#qjK[Ng$8fkmd]X-J:/CY
+,BK'lq3T!WlC:r-KqqJ.4oN!'cre5X6@8^j""%8OQ$1m\Lc.H+n$1s"HWW<?O06B,
+O']b:01EToHXis0GJ2GSqt*8)2Tqf.+h;/sdUA?EQ*:9&f[k:inWQ+Z1"R@/(2KMs
+VssQmNuZn6485sLruT?'\j"%MKrtk>#*FtL07%o;Zes&pZ_lp`=Q3EF@di#.?/K:U
+=0e4i[YrIIcA1$7jb_ANp1:T^\mCiO@l+"&bXu5:D^jhlW<9L+]GNNgXnBC,S`J-W
+);fCOh2;X=KO4uqGLaBV%a[;AMFZP':gF/LO4a2r@LW=m>oW[q'8mNRb@0gQE3+"l
+:S@#@N.oHDg_u*\<iP;nb$`KqZ.FPsT)DIkINZ\;VX+^dmBh0omBc+g;CBcMLn7JX
+T04%RG[us6CN7F>h,\0*cLs+HFA+;EofdfBQ!/fHXE!hoIFrQG'0"NL.Ws0#r3I7^
+*tKF]X8<1[hQ4aRkMq$<`oOW'qhIs/LR]meP\WZHVrmd@IBh\FIN$g7-%kh%-A+*o
+_8^2;g@_Ap@9OF&B1[Kb(5MSrPaS2B9]HmkFNrB?T2d6kc1F!>lGpm-G?>7qEN/)>
+ki#>;:_*"+dk7[3iUF#6l!#M?X7js-o,V*YMXL@Bh:L3M<4CA"GkW7hG1lJQ3`4Y5
+D:MAt]@S`M5AZ`*f#(m&SEa@`_V)Xt?&gXVZuHSr7d$o(7pmtNa4FA8U;q!8F++o'
+-&]s?)],P]>\\R+[Pdq>gQT_9==[-t6h2e\8TY_1h#GlM97(M5^8&.5Y0(7d<h>bN
+2.L-k@td9k0CFb=\OXEq4@0pmIl1kgE:,`YSDU_6CjG*OAZsLd?F5JX(:Dg3eMr#k
+]mY]!l8(I3rf!]j.sk6T=dGNu6u.&%Wr8L6L7RJM\(4k>Cic)TU$m[T2RR(9bN+o0
+[@j;!O77)o52%JjX_teTjrRq@-5"iihcKR94bi[Bl?X64e(6MD,F73^(JaXr3mdQB
+gqq0:*3SCmBs4jtm%./$qa5;mhR.[#cYiUE&bf^t7=<G2T5?4shds(I4(Ue3kNOPM
+S<^c%H0mA&B6g2OVf6I4S,#G:amSmj>m(%YI=/Qu;a!Pbk1XQt8*iFp.1\O(o4upb
+kH-emI73&@rYK]c12,PrI\+54o/Ku*7S#feS\.(U-\ehf>frcSa%WVcdq<$o4a>cF
+3G`9XK6Wo7dB3Li9c\!NQ5[@t)kTe@[816Xib!%K>>K6n]6S5`b/=eNUX</j?[>9+
+Z7jPQcM#DK?H3>(h=p*&_]c\#*0spqg2DTT%qj_D=c%1)?3\_hHo/cE9'.7eWJ_U/
+SC+Z$ZgI]jm*!;]KLL6:Z7l7<9g>:3EB.KlN)=V4^pZ#5Atep3:O<`+P=$V!U5sO9
+f,s\J*R0B6brIn@p<Y5>Y]](!K0t#ScCOq5n58%HF+WiGUMWa9fA\I^](GBo]t8G^
+B::n(eJZ_HoW2%W2gUt\]?<&uXpp[cY-hMiU`Q==$JW[H?OkYQB&_t_?#5\0'!X7k
+B!%,-XFcL(9gp.dgraIkQi5"!g#b/;m$">]md%IT2fP^VBUtp"Tt53kRm?ER^LO63
+N1%W83=>m1mQ_c;>H<nPfB=5sm[^\iiK3Mi^7Cm5opP,!m%rmMrUb&8p4%ql)ggl5
+Gea3OI)!cSq1YuL5o-r[I<jY@G9qQ^Q5\MZ^.oc4j4!HcXi&lLh1s<7YK>kS3-Y.j
+iY=JleeWU[a^djB\q41>*0Ps4S3#Q`=Wup/k,mnH:p[%N55FPZkIB_AG]A1h[[H/'
+_sZ\u?^:3mi9@NsV)N=oLN3k"WkRS^P@1SYp#k]u3UR>^4^(Dmc0t-b^##9i[&<bV
+Qd;Y3*5T&!a5-a(`lu_PJ-2r_r0Wd;FGM`;pe7s;i?QXsK=Oap*p$XRbPfqI3Cf_5
+CMkJGmF/5TTJJM@*bR_9bY4!W)^/j/\9;@;[pc_JkIuF[P?SNRRh+$;E"m-[EQ_hC
+can&#:CYo(I^C)XK10.g+a2+USbC.3*;9'H]2m"\gpp1>><]5cSFI33SEJZ0I7$$=
+=[^P_;4KAjp+LW*aIE0SoT_IWV;X,gjHdp,g@sP*I>lh@j,ucG/N2TR*4hFO<oAX;
+l?W)*>FbT0\lL6BZT+-P?0c>)jR<g?-Za02/(nt,S3bFV3lh4Im^N/<HY`Y%c7R1]
+*;$?m-VE(GYaGE`rJB0AIDc6@AnoSCD-e6`^`du73TTqnG9YAKq*_D3L[[R3U?hu2
+iQA159]$gJoE+49d^iK#hI/iRgq1Bc7'OkeET\8h`Z"%ZR*+*_jG[AcAA>)/4.H>m
+GK;uEjH/[YfC1@]r?U")UlE[tc$F3t%>/M(V%:t-fOX=N[3'-LeAo+;3Nnr_r."9G
+r3!8(p,[Tk_G!YXk*jbcF,sGKJ+g$dmTl=%F67Gam-Skc>rZomY-SQm?\;'3eo3O%
+l]9++F)/Ohl]'t3am\8[95AtoZRgkA9FdW,aCj)hboU]mg)L`tr4(<-q+\s)PP=6&
+_?f<3]7N6,r*sZlF^4sb2<G%$-Sd=BgV4c"E)#hRfZT+gP='FLT/"nN(R&jB3Yi36
+m$bKi`;.);p5@(g1O?7+CPR2**0rWYoJeCVIjg5X^#D'H$?+Or%(:H[CBUk/eg[R#
+EK,"@Em:=cckl0O$ZNm=%VP^bkWN\r=_l2`Pf0KfQd'f2D/;E/<n?bf]Cm_j:3)//
+aPZF:mZ.6<fBkU\M"@+VG,D8)FR;5*qj2A`YeB\_Ac%kR.XSjl60Di@Vh2Jk^LR!/
+%(>u)E]7:\o82255olQ)&9,I26!n"qiIH!qmg<^jep?bpc0VI;S`Yj<SX]f6C:Kk$
+*YeL:i3;R=Z$TF6D:b*5)fRBr(Z`*gY_cAaGq]V!E9J2t@P2at?U$^MR.'&4I+[3r
+ZX.mK//k;1O+bg=Hg!,(h/OI0"5CKc4PT4m_8/%5cG*j*W/&is6-gH1MK;2r&Iu$p
+SG*D+h(33>A53\:3Ci5sN+q&"\)47Pem(.ZGO8Hu&&J_+!P/S,i0Vc*Vd[t57<s:4
+`PJ7]n@9Srqrp,TqD!?]m:59Ar"%)47GjZLHWTC.[.XOgc3tK?A".gkA"V0=MKML#
+k)<<e1"p6BC&PCH@^at&fi@2!S>Y>7+jMl)f6,of7h7ND03l-4G<gYn@d6DJGU6t)
+CXpN_>oP[4^?p8nYc",m`p,e^m;6>TWUGIB^'FMfgck`sf:Y;`m!U9uF0;R!Bg/:t
+\G#Fb,b@g`Aul%A[o=Hsh]<jJS`ou#fn4p#B!_/hbF<d<k^hgA)10Z9aRqg:9>'H-
+as+Ql$omQ!kF07reh#P858sLmm=%]IL]0sGYR+PFGLUD[mu4F2J&pqR?fg(37l[i\
+f\0rt[D&6NHOd_:nV#>IqM<cYY#Bdr\3Z1LcX?%d3Y)\1/8AqFY;.boZNdM%ol6Aj
+"mf<:Uoouq]<[6!9Et9=QdpL$]EZU9i:CAuZfa1BTA$\kGLb@Q[oLQ'=74P5Ice0;
+_cPMqo*EtP=<gkq5%e0WSj]a?,M\K-_YAqTcUL.g>H*O^Q18(qUjKr=^)jHAL'_Lk
+3GX0*37m*>L6LBt=C*&IH4^A.*Q0Qai&(Ones?ociKLMgBD0fd+5K([ErOUA[D/-m
+i7$QcT9]Gups#0pq[@u-?^*``]:O-6&_FJ9kb;9J#Jen*0it2i[Ni?nfcU**_5E6$
+Mm0JDWc:FIP3^5$&QW9@I>$EMq[@\oXL)=8]*t_lLJKbIJ$PuE?6?T2Roj!*Pjch?
+kC;RmR2<3NU:oUSbaVjETBiBZ+*##3^+j(#oc+r2gXb&(S9smuqc`P.pD.l>UNQjJ
+ZONArZlP(hYJM$pp6n7m>,TjLb]mB@gQS+2e\CH%%jcRj+7IV%r"%qs11o3<m5)Ic
+k#:+)9RW9Jo)%8uE&]e+UM\R/B)_Pi3]kb-.aGGEcbZ-@B"\=eDbFEOF7$ZIB"lIe
+[JrS*B`+AX]$-<"$kJBUF)G(P00e.2O*g6'3N[4$h/"\EIB7iDIa5L?jR[F.@UG.0
+i,F/E7QlE2iHKJ]?fp(V=m#rJ6d<<i1N.Y.eW8jIH1'6E#L33-k/<*tFWu>8lC(ee
+1A9"H:H7HSXOGbnoe*G2-f[."r=rfXluV<sg3lVuh:Q91pD$R&\S8:kF+)"!c.%S/
+f%QU=2KTFTmIlq9pct,A@V-PA$s&L\M7\drIX?2]a5K*>J'HWe)->tAF8q:go_iE3
+Vu*NcpeL$brDi0Eju1J`g?W@C#Q?K-lquJ(m'sOLqWE(P3X!4rc'9a@<SUMo`VT7g
+`f)D=FF=)]aGJ]a^0,isIU_ST\DqtRUikXclTCN(X*(r'B0KX;nFoDr6Hn3H'?Zir
+.ddPWCX,U4?FqrO[3N1_a`5S!5#G[YXl\f0-:c\M7:>-3aGE%3XQs3QGG!:/pX`Tp
+/QG$In$"UFF8q<=]I2<iI=AEo-1O-%59]Wrk#6?I''HX=n1Ac(ir.i.4N$cG]s2+n
+hm5e!:W$,C7_;sXD-l:saGCnT]'c!Pih8D;Lhd(K^/O>?Lc.K\>TQB5Z7;JgJ&H?2
+LjgRlbIO#6n[(FnhlbR(qcsGr4T@?I/'%AIlM:"Oeoa46j@(+S\96U`ho/cT1OJSl
+p)`2lh+)W!R[IsNiUEJicfPK%&^ZZmChLQFSgF6_mHgUa-Ehjs+-2g)O#B,F=egD\
+SB+!tX6jK'ce^n51PbmIn&L^e=VcK(]bC1=kW?;-48/lf/Zoh$@iqP\8re6.;m5<,
+MM'i$?7t<Ckidf>k,5mWP5?B0I`itp[lA0HreNY:+"_j5(-N;:Ym3GeeE9go%<DSs
+kI<Y2aO/^oVJf51F8fV=r[QKtS[\9*^L&`MGjrKJ0m?p1ooGki?@2Y/a.e(NdAB\6
+6kd`Qr1-r9qIuP]ZL7SIEA20?O;%BB(k.f;"rUs55mA3;O?j'gA<9(]).\gp"rUs5
+5mA3;O?j'gA<9(]).\gp"rZK0jo5G)m9`'
+~>
+grestore
+showpage
+
+%%EndDocument
+ @endspecial Black 557 2330 a Fe(Figure)25 b(4:)p 0 TeXcolorgray
+951 2330 a
+SDict begin H.S end
+ 951 2330 a 0 TeXcolorgray 0 TeXcolorgray 951
+2330 a
+SDict begin H.R end
+ 951 2330 a 951 2330 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.4) cvn H.B /DEST pdfmark
+end
+ 951 2330 a Black Fe(Still)f(the)g(same)h
+(image)f(mix)o(ed)g(against)f(light)h(red)h(background)p
+Black Black 257 2564 a(On)j(this)e(page)i(we)g(ha)n(v)o(e)f(a)g(color)h
+(ef)n(fect,)g(the)f(top)g(of)h(the)f(page)h(is)f(light)f(red)i(as)f(on)
+h(the)f(last)257 2685 y(page,)e(the)g(bottom)e(is)i(lighter)-5
+b(.)257 2805 y(Including)30 b(the)h(images)f(from)g(section)p
+0 0.5 0 TeXcolorrgb 1674 2805 a
+SDict begin H.S end
+ 1674 2805 a 0 0.5 0 TeXcolorrgb
+Fe(4)p 0 0.5 0 TeXcolorrgb 1723 2737 a
+SDict begin H.R end
+ 1723 2737 a 1723
+2805 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(section.4) cvn H.B /ANN pdfmark end
+ 1723 2805 a Black 31 w Fe(on)h(the)f(page)h(before)h(results)e
+(in)g(a)h(visible)f(rect-)257 2925 y(angle)c(background,)g(see)g
+(\002gure)p 0 0.5 0 TeXcolorrgb 1433 2925 a
+SDict begin H.S end
+ 1433 2925
+a 0 0.5 0 TeXcolorrgb Fe(4)p 0 0.5 0 TeXcolorrgb 1482
+2858 a
+SDict begin H.R end
+ 1482 2858 a 1482 2925 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(figure.4) cvn H.B /ANN pdfmark end
+ 1482 2925 a Black Fe(.)35
+b(Depending)25 b(on)h(the)f(PDF)i(le)n(v)o(el)e(we)h(can)h(use)e(we)i
+(ha)n(v)o(e)257 3046 y(tw)o(o)e(choices:)p Black 418
+3249 a(\225)p Black 48 w(Mixing)38 b(against)g(a)i(constant)e
+(background)h(and)g(adding)f(an)i(image)f(mask)f(\(PDF)501
+3369 y(le)n(v)o(el)24 b(1.3)g(and)h(abo)o(v)o(e\))f(or)p
+Black 418 3573 a(\225)p Black 48 w(P)o(assing)g(the)h(alpha)f(channel)h
+(to)g(the)f(PDF)i(\002le)f(\(PDF)h(le)n(v)o(el)d(1.4\).)p
+Black 1851 5637 a(8)p Black eop end
+%%Page: 9 10
+TeXDict begin 9 9 bop gsave 1.0 0.501961 0.501961 TeXcolorrgb
+clippath fill grestore 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+257 266 a
+SDict begin H.S end
+ 257 266 a 0 TeXcolorgray 0 TeXcolorgray 257
+266 a
+SDict begin H.R end
+ 257 266 a 257 266 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark
+end
+ 257 266 a Black Black 257 473
+a
+SDict begin H.S end
+ 257 473 a 257 473 a
+SDict begin 14.5 H.A end
+ 257 473 a 257 473 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.5.2) cvn H.B /DEST
+pdfmark end
+ 257 473 a 100
+x Fd(5.2)119 b(Adding)32 b(an)e(image)f(mask)p Black
+1286 1871 a @beginspecial 0 @llx 0 @lly 162 @urx 150
+@ury 1417 @rwi @setspecial
+%%BeginDocument: x3.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 162 150
+/DeviceRGB setcolorspace
+%
+% created by bmeps 1.0.6 (SCCS=1.65)
+%
+gsave
+0 150 translate
+162 150 scale
+<<
+ /ImageType 3
+ /DataDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /MultipleDataSources false
+ /DataSource
+ currentfile
+ /ASCII85Decode filter
+ /FlateDecode filter
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ >>
+ /MaskDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /BitsPerComponent 8
+ /Decode [ 0 1 ]
+ >>
+ /InterleaveType 1
+>>
+image
+GhVPUH`UdkH(XiTR2P.W1XkAdPe`N:AjA[3@>H(:mMAA1&-NUg#Ri$s44o(7&/`H=
+"CkU]Wg_MEX)V&^<2ikT<EmRG</%]Z.begjNeLE^C(as6%DqlI[dj;'F?e[^T!a(F
+4):HKj10DH]`*/`n*B>Hf<a?2pO5@*l,=J=FHAcm).\gp"rUs55mA3;O?j'gA<9(]
+).\gp#!&AgoY/rD*1cd2cQDP'_2Ch`i-EWh]jTU@'`#;9`D01bY\Ea9ce;9Ma1T^p
+q:qh8GjFi\%^L!/`k6DP+Y^kem%rci>(Jtb4DA54ZohM//WDZK:)[t%YJ'9_-P(#'
+ZAL`2OL`.+G>B-jp*HVYUAj1um_A.3n*H=RcQo\6)gr$NgFANqcOW]5ZYceF^^ZG8
+akZ\6qnahF4$V?Nl;fRTT)scuA,`otd$#D=>=KQ$>H=np:C]LYpj*JMj@/JNoN`P_
+Xfe-@/][-Q=bJR7#*m0-(UmH(]c:P?nH@n@D/\`Bi>f`?I.>kds7DBOGpdQtH;;3&
+#.L4ef@E^?@V_<o_r]&#euBOq<\@bVguWSDr8c%.*mWdP@"2V$=;F)`*Vi:=R^QE!
+HuH;LO2KO=C`,p9h!2a._;\q.pu@8b.PbU6):%\jT`8?ur4c=#0OBG6o-in&bcU@o
+q.k-149f$h;MV^YEP!gpi:\(i,^WH*2fsB9D-Jn5(*ES)QUXc0jiPYUE&jH_@t[#*
+?-Y=jQh174D:@-&k41\;Ikj"0rjEfD*pmGkD/nk\/m#IsX)+>hKiK\p*n]TC4nQ]H
+NZS1P58ZQ[LOV:0Cb._C%P0^Om%O#WYe8cQ5nH#nhtkF;(.OpBj21!rG:^u-Q9"-8
+_:m>ga.!kqpXrqsT`"W!Q6So;G<T-fJ)!'`m+oGNH_Yp@]PquMn,NCN_)7T"GW`S8
+Tj(F0E$#S[^Fh`nj63ar)b5DWa"*od^1-t5m$bMio`b4pCq7d1kl]'Lo'C"+>/es^
+f=Y_fNK8L(Y$?2=\YK1GhKbmrqsf`.rnf(e;<44=qUF_5TDis.r:b[7G=UQjguh.N
+m+F2k_$(X6mKk3^))I[C%efb?qL.k"gnfF'XuR!q%NiE2j631T4KG^]`qQ(;WZKT/
+fOpOT]dS5HVr,U?Js3qfEs,;=l^W#cs5Tjr*F4*E=el#j>JE&lY93a_OoKIaRA7Op
+d"dL+4bUkgLA5(=b:u!-[D2[pjk0(u\*'Aj\GXY@r(b;n&''"e8&=6GK5NfG$tbI?
+/[js:N=4ik@ZMnN'O2B$\:7rZkdS![meZ@p8,rQm0CI(L-^R$KVuQNcd<B*o&@bBq
+j:/9kqu\#X?2=KoO8e2:hH/dq^%]48J,>i3'_s]VIWpp(r>WN!$'0KTiVe/lMX`D\
+(<;Zas*==kjmSp&s5oN;*8NSd&j:O;k<E<u6pK[$5$E*h^uF<_E:5mF?N$s^%E@hM
+GOn.0:#W?Nb2H.!T5o`)@rMfo`Y(mJ6fF?o8ptudo<>:ma1=k1csQh;N&(eoE!&IH
+oriiCf11>ac?G<JjfeX:kjl3tI<=0;)F?'%lW_u*9C)KKN^(GEq#&b#or`=/fn<#j
+-\!3bZ/sVVH+\4"+7UKr**>>i23:D%^bieVKA=1gEHB6;E5/WeAYJ<?@[*M_c*KG8
+O[$SHPaOXVp*+&&@b_E>`8RqEbubdUPQ'Qo+"Xuu*=$Z-)a+)@l)0UAnXJDuqP.Er
+e^6TBmBk9[DgG?E0>6<R#8H%8B+U*>YrLn&asDOu^C-61"+2J@`,=U.@^"1=pC&So
+<XuOHM`$R3@s+HU&#PN7SMgHEh9._&E/:-"rD(pIdFZ;0EIMKfMTQtu'O:rfkV&?f
+2d#q9lX)mQ_WtMe\mVU(5QC"M(]!Eu?F;EE^$&`cO!L4m*LYtMn6Ot7mt]0M4/3a5
+Xt6:`Z-gKC:C\?c;GM1XQW)X8Eb[[+;`hW:3(+;>oB8-C,A)\NLV>[WIES\#c,@$@
+2mg2e9C+8h(E8b.EW4o^m_8Ur2g3F8=]tUNWM^O-jR1j!:]/A=N6Zdh.uKkOLsPZ6
+`Qs"qQ*9PaKP18o9R^QsAFbP*j?)p<Z.6cLpl420lt;69`a=,'`\)m=HtjY<`a[3W
+Rb*hBe9sEF(M<S6Cc/X:%Y++H2Kf.[4SP";QTDkl%V63B!e8p0cLL"]4o/RKa\,Z8
+MYPi6kNl,BR4IH"q:Nkt?KBmL&q9^[<'S5D2ZHS0Er$3&fP1<iD"J0H)biFhcLJ_:
+-U))G3Nq0U>ptKcGhkbC:.^"(mC*Lu(QDSe'/TVQO(`mtGfoW89h2tXGGahcp`-If
+r4P;Q3%;u;>5TOXVe%Q)U)`/3i&>DGnK[O9Z-VXP].UUdkX=u%eP@1[3X?5%2_XhI
+k>r/V$(RC+-ARud_#sOtj%se_GTXE73P;f,g@dG^X`'W4G2$BVp39_E`a<ETKLpJE
+i*YBGjUV=[/(I.C^Cn:\#$YFHI?%Z-Y48C8I&>s@Il,g?6fN&>F<P,-7c*S2oZ#bb
+E-9UK$!6\Q?O2/&NbZaG/G"U5:M][HfW/R*p$17MJ'Ueq&'`\(rGZSVMpkupaaKbo
+He4Lk)D@T/\NFmnn:s`(6/uVN+n<^jiM#A7gKM_-=u2I)D=&Qt2Y$[SY79W:c=ukC
+r9%mfWKijoL9p!hVQL/C0m^*.eu%>;TbANGhG3LmkPO,FV=l\r<?81?Kh"*IJ!`66
+F,?=N`ij&s3('cfkk4!'_+!'f(djHNCbN2[a0(jnk'?NQY\)1"-?h8SLZB_emmWf`
+S*(Pg0fZ5cVQsX-NtqWH^*[dIpMT3k+-rAUY#Hai)8MWI5O3b(IP#S7Xg8Qh;eMft
+LJ>Lj`[MFGi<r!onIU(8itQ"a)-o46N]]2l@r@pODP>iUi"?OIFaQpgAXMZ-QV6XP
+D4W";b9?QqC<)6^=R4=N%iRcQReP(+dj)\A3#9!ACbTHS`*_&D#^[c^MoaU.%+5OR
+UKZh"ioR)XiD`$Xk^5_iTF>!g7]bS=*#r:,ad-re5-'][I7P2WT$b0NRD`]5DC=>`
+4t_+bWICH3(h4EBNf9%HCYj!q`i7G\=5I>ER"`lV4h2jT6iHH-@pO:W'mr9VUS`7Y
+=Ps]oI.pHQ5%G.e%H?!j-[bKR8^.b0335/<)iafMOW?=*6Ok&4-h87jM9F;UZaE<T
+/_(nkHQ.#XF3@_KQnPN9P`-jFO'"aGH?I,3p3`Rgi9o?b2)um/Gh_CG?g8rU+EpjP
+pX/.h4V&Qh/[dn6nS'Z/^t1mIL:L>53J>5C$a6`Rem#XWRqrPq(OgPE&''cA3CMeE
+>@i8olFH:j<tT;GH"qRKk@]g9r!IQ]E[o#9Qe%Oi=P!6K#-[B%0`/GaX*n8-83Q%'
+<VP>)kdij-]=TS;p;YrRAriJT6TtC(K.]92%^jF#+EeJ_LsAp8WWV4Af<iZR@:Kpk
+GJr5ua78)PqrDhV[Iqr*Nph#.0E'>_K.hZ;kek#UNR%C^?S8m%o$&p\I]neuoq8Rl
+*"m>6i]MSCV\?JOkX0INS[Io_r?m5s!s]#@Xd6H0g-C$FIDWj.eUQ<3jKQSF2-t0A
+39I3b:W(kGjb9++g]tj3oa)UeB[#F*?M:[&O&Hk_WAWRkX"?65S/c-Z@HLarXSsAJ
+IQc]K4ta7nl:@=25Md/<U(^s4Io$W1[8_nsUL]r#^=7cjW*bq':^5=$aeA\V1%NW4
++1eUdmenea8WeB1?'lV'f>D$rYslBPDj+s+kTbaTojmW]3n%>ACVQ'+f*fCTpStp@
+X0*+L=WGuu4>dTbC[Ol%#Zp6+)1-c0oR<8g7!H*;W=N8j1692&iK+s_p)VePV/AuK
+5$%ngj],>m2"dd?r%EDCZIP.+:\M.soe=Y+kjjGsPBfLd1?f`iSgO>LgAFY/"^>;8
+(P=;pg1C3"ZYP%!4ULbtltPb#`%-Z:i'+Ede[h=,[^A2>W3Hh;?4fk?_pO[d3:M`Q
+]K,P;pGI66B)mj$%FVjAfm6b0PgkD@_eOC"^Tb&fqkj&"5!>8QY"'#*`?@;4SE_=3
+X(5S'r<XqHZ7>@DaR*'[k[Cu;:>D'/+7pd4\*I%qUS&FlYIU-85i/B>aZTTd/YfeF
+n_D"pUWiLeqkeh9ED#@$H(9$q(6MW>C6Rg83%ma`6Yu@^Ps]\g]io:1C>2rEUO*n;
+kHUC814@CLZ+.R"oW0S#&aNC_-_?]On<E*qhK.YQdDc-4$b]2gANemDN-rme.Y"\1
+c,E2cC0Fu1_dj>hbA<6!$\e8+AMEf9g!RRgp/#DZ@-Yk@h^s>[*_[Nd\#6F,oc)jD
+f1`S5OaM?E*hI%+Z1ru+Lb:gaT<5oi@F9ca=R(,-(M<4qD>g:'&_F>7`6%.oi:0V]
+4KmK$"8/d.n#H>eI6M'Y@iJeL`@Vs+lR/\CqeYjK-Z6-4kV_i*48=K*Nr-E6S:&ES
+E2i\f0N8mjot/d>9_#ZV6`g+$Q:"f.nX3S&`e=NcG@nbM\RCEnHM4[`F[j^-S<!ST
+lF8amQtr%P3TF[\B(LuVL7-AuU"X'uMg(fGqQTT&J,6ou.3/>FrIr.3Is0,m[%aIW
+Oib@?5O%1h`\+ao\]Z($[5sAND732UDaNbGT$cV5W1TSYF#Cr`oD8+6Fe4"97c,-[
+2OA8E>LonSm>l^cm'UQnJBiE_T6Q<u@ii>VXKA7)4D!KNjB=U:n2IOQ.Cp'#?[C;?
+HJ.Ur;ml5pLhX2M>\\L`&'?)W>J$DFN4iT2^Wkf3CT4)]01-h@p#C>fLiG.qmt/Vb
+YJjbYmer##EmrT6Y)SlVbF%rckM0U_NP.76^T@80TJH;XYoPJ6IdlYurQVV)^3e<p
+q1LFq>_4U+&)Z#;o\pe'@E75g<M$/^VC.i/-_-F8euNESL=VUD*h+%<Gl>R9/3[ON
+cdl(D2H+C70%dVP7^r'&[Vh8oLG+]Gm28"XolJ6E]aWUjCEdUK=8$VSW5f*.migA&
+F'nRo4Eg)RZ9(2R:R/tCII8\"4L]]-?21&lqH8Nm*kaV0s7dVE-F"*V.`u6u#DGNI
+bMKBsU6`[p)1?bS1mTjs.J&gV6Z96S/%)iu>LQXUMrq%A+eo.E]C9GTQb%&UF8B\*
+YFmM[.JaeGT1QJS-[TRoVkKHnSsi\$#dN"?310_GF;R-V,/W@Bkf)Np_JIVR(TnHX
+#`!?2G\O<%jStQ2IN*a2r9^"M<VcemS]2Q4`M*I<?g)C>pc3T[\XD;Af*UeJboqSs
+kI4/'e37fO4Q80N:P0`;KBPPpbI'lD?Yc(9?OM4KrE=7(*5c;;3I7V2^Y-MEh=<WW
+O&bFkY,Bn6=H$$F([U&9YpbZSo\*!Q>$VDpE/=/)aYO>h;Yf?3kP,!B>k@eGjD=%r
+K"!@5^2@AEn!DAB?hS)IQeOQ.p0uKDQ5o%hIFZ7\`$*(2HRja45Q!TbT!_l$n<:E;
+Wd_R\ktA_)iU#NXX^jt:rKi/!j'ZbE@1X2_$F\l,NHh5:-6N'=<#>,^^\HRNUHe_C
+<V`(`%.`.o0!IG$Kj1#FFnEq!c.R47QT6&2oK1S"Ku`MKhQNuW0t2<iF,;n)4njtU
+N]"'L\r\n)fH\uO>I1iMp0M0/k:tTZQCP@1rHO?5N-CA(bi`8fG@@c;?M87$=QFJ`
+C<""u%`eB&[Xgs80f"3-DbT^i0Sg3,8"_N>=#X+9r2/2S6qnO'd"h,?q1h[\de;F;
+IG*4BY5A'LR3';2[*:\,fAG?EC7FVjkBdf)&HAI4nc-sgkWjO.gM1YbI=DdQ@IAuD
+g$1_J4X5<SG+>qM0Vr)4%g\5+Ir?[RjYnGS-8'jVitLL]s);CH:?IDu&'?#@&*>j$
+fWsl0,Y#0@3ocH0S)!jo?*8/H1kqE$41]@1&%hU^heXp-SG#Q\"1>h!=hM^;UCZ>1
+Go^j[0')l>X0.0"RD<U^o,i8YkHMICf0ZAKOn15o`[o%R`ji+j5R13!K1Gl,hFen;
+Irk&L*-N;BMGSL?5D3ttnMT0Io&=0h](<!Z#Mmp/)I;!t"h8I8,H=+p_nI+NF%>"e
+5b#E$X_6I"N#79DR!JtA0X8]ClC<Mc:]0:XQc)h&&&Xb($MG>Qd<G*R=H.=^&7*AZ
+*:eRO!6=s3(JZsMZb@5IH]ISVidEg4V]nLjr!J5V,&Y,4RS3:eIUT8f48Z[?@AZPa
+j#SQ(\]H/[=t/Lp[*>^J,i6]?mB@r*cu^HO>,RQ'fHR5$rT*Vnh-:ds(SW_AY7CQi
+lCuG+N6,DLUk4UiH$R7MENIBOCGC"`(S'IRRb?>hbM-8:\XTXs3?214I2'm]_cYZ`
+/8D(]-^$P:AgUm;2qMo6QZ.1aI-,@oEV@b@ZfZRh6f*H$<>Y3Ir'#"TS)quo\0A8.
+Y4(lg?F6Q]7J)db6L;8II)Y=8lF<n&B:me:KY'Ef9dtQZ%X5q(puPo0]e<Wo9`>7n
+9^P4`nT2h*$nNI6Sd"`7Lc1N&I6E!?RH&R7.IT!HA*fp8CZ`:?j_q(RGO:jcq_Z\d
+)nI"uY&ikf]INP`lG;\<ctD]]o_p;/Y&D<EFI"*?b)TT9]Ii]1Xe3*=Mmp^=bCRW"
+lf"!om'ASb>m6"r:@CE[_(BeZhXdbn:$ao`NTBQ&n-;`NCS?Y\3$*8<Us5*P5\=si
+1W.n`A]B5%eR^<XH`^B2AAT^Y5t)!iff*9-c8j,I"XZ%8BD2FL?Es;oC<S8ff2NO-
+8)73YUCX\A%W:\kHo_4h\H]9IS:[>b1S046oG3MXkP5"$^;ML2J!+%r3g#pjSA>r1
++nSbHLQjedj'*@JhK(%A+flP11PP+1/G)kDT8.==2iUm:2pUM>oVD?03=d*jk?P'N
+ZX%.i](>We*"Es/m3R\_E:I./?ZG3S3UL8+i;,He*<_C[>e!\kO;GT=F(#BEC[B5S
+3.t.8BE!IjQIkXUa[)XOGob`K>F!*rCZY/,a^`7lW`ruHBOU*#=e43NBYC3On>`H0
+alg!;QH(S0W=u\cgVZ4aI1YI"A^Qr&/CMj5S],u:o*4SF*VT&qc_3@7CWkE&!)qsa
+j\NQl@[Ag%]SG[kdpQtKr26$BD<?-;Ck?B]CW62pSC7.f/lYV-B5P3)"l)sXFG<lZ
+'DlBZG-T3hfm+)8naS^Gdneb%B/2JkBm[`BC[^N,:)<*/0t0[q+gqQjhV]pD8"XtM
+Zh](UmWpiL=.&fIbh4E,qM\olc$VFNnJO;S\&+jsBAVP1g)e)6PY67U_sMTDl:SJ1
+AZ!^2R_JfMX7]l$qbd[]qW3!S5#`otXSaYn4>(_uBR2Dsc%\Z6EO,SflrKK@Zn#CF
+XI0plF$GEthf:s#gkpBEbdF5f[5O$4/2ht7,^*eVAKE4[-/\8!e*md4S@bCrR`mkK
+)0<#j0);fE-\(QD,+$T@3tQmi[Wrdt/BmHflE0B=m0f[JRliY.Y]*.gJe!GuC^@c`
+*"F\r5DR?fRr<!ENmM(U=+qN,e&4*[<?4Yj)$Wn8lD@<(_BPV;S\3i-EdL[N&]\4q
+"cVM9m*pIO,:Z?hREp,&4oD_aE(B-/[*e)Of*p$$BV-i(g3]m(LnCCOKL9X&X;p5'
+ZJOB?3EtN:^;FsMPKn-ul9h2]^7qh#kO@T#;8iK,rhdWP@oi(8MuP_J&/JP%O=[i'
+bZR:Y0#AEYDsitic<1+^`p"FTfh(%VGMT<1^$O"MaiWO_Qf$XZdi4$Y5-rP,_ZqIE
+5e`jp"R_FA"?XkT%cco@)$X:g='#@XERFO2qL\E$^gC_u0:_,8IZ.?a2)mO+%f]WY
+_BQH1#7gS-m`H@A)Y,`?2fGXf@sOWX%Y)Y>_!X/0ZIm4F;rQ*9NQ7-uPti]EkZDrq
+4`]8(=+6Jk:F5X=ad8$uK0OEcAUWt@26Q1S<]S8#_:"D"ekCA5GMs=L<M)A83@qc)
+P_n%b+G4]J>f("D<n?qOd9L(942*b\bunO"Icbcn2+nlHQC8,PiGZl33C`H.)Rhik
+r@;qkD"i1;V5L$qrESY5l5ubpq2VO(?s`$!>uT]#K*uSU^jJBCSG0mpYoZ5,5PmRE
+>O`OWkO_YrFo5cGmUQmfS1)&50`(l@A0qcZ_n8V,61Qqhf1tLXS_@9(cYq+t%qkZZ
+l9q$#3#mSFUE@j8nc`gk]+I6Qot^*BYI]Gbr3j8X3Akt?&5t@<a(jN/>9@j?IG"uA
+rOoQ&E;bN%/:EB9PNR<7-Hpo.^[.uHn^uIS;>l@@=Kt@Aqj%*Xq2IA+#W@TFeg7%,
+H/C>mT=`qupd*NJN'4H1/*\@VhUaF35''IY2fP_J=3E>N^B@i*Fr2:ZO5mc/J\Qp<
+6sB;0NoTX.G0de%M59"pgDb&P]<*]=5?UA'KB;VPZ^e!2ofrAE%-ILoot&s"T@mLk
+Zne&DY1+MloAl"jh7nO15PQ7,P1TPHs.$gmVephh]]]`D.gKWlc1le^GI'3OIInEW
+Vq3c?,C\HAc^Jmaqm2d([0@V3SBQrkgT`H]>EScgh7).m,(GelS\N?d4L=d+pih.4
+chDaX>P=4hT:_[^f>h%5Sl;K9Dn?qEnp.AsUch3<C-=@[9Dbl0e%WtDZAu*J4l#50
+i&9bFF3AXg76(3bce@o7CDMpSO+fkf(>r$$$o@8M_>h@?7GJ0$k+0&d+6W*D^\<?9
+RgOY&F26:^pfMouj2/Poi5RXR$b;ONHR#$oRrNPn>T\m+%a7*.fOmh6PjcZm>?H2[
+E-06e7q;A3g^C$+Ed)r5s,fG7SGZL0j>m7+I!O!*g9oYkb8RkDFaeO[ephhg8G<>J
+2'1r7ES$qnCUeCZ_bnjCK`TeTEXRNb7s,XJ"$R@33r^SR/,TTjM;N0pNq7crPXGCE
+3;he8T.;I4>X"Xb'l8mbN<4a/p:!03[GH+GP9!YY-'+J38Oe,EDNK9BfO'\&:q/C6
+dMC#eIc0X";\lp9^7j`Ia"-hl=pb)?;YTtHIJ/kI]Pj8\QWpU!rLDFD9gR*jpMZFh
+-ZValDdgaN&?%CrDO_aVH@kRFFo&6oFK^VCO5:o[*BUEh6>tOe#X=n"\5=&SXp;S@
+DloZC>Fh.mNn663a5V#>(Gt$:$kcpb^OJKHb06X%@[mC]e")a3qc_2@_oa'IWUO$g
+%J<q@S(1+,,!;bEo6Vd=fgD7\1&&qJo='^o[IH=omns($?T2$F<a3OeG2K=NhE&,r
+hHXN,eeQV_6#YI/F^E2a@U;XOGX%(l8;c9`S8'.Fc1u_?@fnC8SD3^9f&JM%JY%O%
+NicXKGraqGor?VpF[P15@UrSl6[iZb1ABW%(n^6WjltPQREIQk+$^de@s`XbcXU\h
+3Tl44W.&RZK\/^7o/G`lq`CkG?)]hSnl'uJDNU2:5JEiWo?P,8^+DG3ri!j%WN0T8
+/n$<o4ljfqeo9#4%qdT:g.9fFYYNXB3o%KDY/PQRfT0(ZeNT`,Tfg,V4YZS3CU]Kl
+L!O@YTmoYK"$/+&1UlX;Nb?*9[k_\nZE.%D?Q8.7[DeY'FP-C2qa06GT+6V:9,gqr
+>P$c:mq^#]kE=kE%!XV$@P63s;:.<q?,\Prqg:W"j*:?3c@O%X7H]aTfMM.tl:glP
+G2BnTjfRU)7[(Nhp`8G!h,!=m3X\I67uoWXBQ+/sb]oj0LjmH]@X_e3H&(!5l[I)K
+TqAf`)i(U$6_0e'[qTI2M"-Ea`Kn8dNmF[<\Q(;orl)VsLUi]sHYAD\NJGkhr;Q1U
+C]QW_O&Cmm^2Ds6j+3coZ$HZ6>j$S,*3[;PQ,?KMfeI7QeUd#!e?:tF>A*^&im8M(
+hKi8S\XM<O=3Q,%^?;Z?laV/-_Y<-g\LoIHRH-K7n(1\[bUZNa_&&WX*7k8*P$Ag)
+4`jF5F"2Fj)$,-aY.EN+&Y@l_IW+D&a9^!(+)cQ+99$=4CgmfUm,QR8]GDU01!jXu
+g6^AMLA,X,39PGM2[XhGHaQf!D:gT0'`&BqN%X/c`jrCUIaU-DLGfp0?$.(pEa1Tb
+pJA6;l9/VcHol2PHJ<koqYD;t`IZ"A0oH_(rn_k3^!&p"3W6q&fCFit\JF&>qdC7h
+h5eEG:-$'!ql7>`4`hc]XjOn2NmDbdXpMj1c=pg4Pk-B_(S4oNEs-Vp\IR"cg0/SC
+\uN]Qq_iT1g%$8TY)0WBDd9BY#@l>AobBIs[M]R5m=*HKR5KSPEH.sDO3]JR^*n9%
+WjgbZT'qh"5l&lA`5grQ3`02(hhER^1Z-2,c+foqA@gh02Ga:sV0XYEoCc6oDBa.j
+@$+UYAZr(F?_=Nlp80&+e&%h!m]=,G/>=53Y<9C',W[LNoYJhM^_<of(@UF-0ZWk%
+>d\_j4A>;ehXB/Oo][Aj?hk<''?bM/Hc.;]iOBC'4R^uO"J8DSG`DH:%SD2Pg=MKd
+gc^X`[AEZZg1Xq5FJf&4GtVsp3UYo!f\W&Y['!17&qT5o[sR)VbShC:V&XXD@]Bs9
+Ng$a=2sY9h3A's6Y2RefF8cgFDL69tp7+0"p/gM5k6E?)g[6*aoQG_3r*K"F4S""!
+^[N7P&ROR=hX"$TrY8l9d<.nPNqq`,>S#%SG-<(`k`nS#K8mm+r+96(mCKJG[+;,<
+YqkpTSnlV#\r(P/#I";kkLZ/pk8k^#F+egGiH*e?[49]k1H$k2SQuV/J!/$m5k_&D
+pKC-qT_2O\3tcW+5Ih!A4J$i-m.je`I15C3Su3C6X;tSQkk<n>Xu_kN\<"P8AfA.*
+=hlE2_&n7\5GueX7plt%d-k[c%Na0&kVDn>5gX_2O*Q`Z^`!*5Gn&hW;>*R%+4$;]
+S`j5rI*WlU=kd1rDk'2^0$NN(EaEuc>DoWWI$9%/Ibsi[j,fQq3L!J@/f:k=@]a_n
+GP[fn2ln;Cb9rM+DsatoOiQ`TF3_eW`ZA^kmgZW#dVG?2Ui4S;4r2u7![d$3jmVOI
+hp:W.?.SbK?*t+&hIm8BaWBu8m,]9i*^d)=<t;M&Y5'7g-O4pm35c'_I),rE^`dN6
+rm4eQs5m[Mi]G_6H0QIS*Er;HCHltmesj)Gl7dM,IaM3"-Ke\K\_\eXgGaeXiEB9l
+Zp+U5NI/kE*DLYF9$qjjhf6OZpBQJTf30*;hO=IKC]C$@4]gj8:!V#jhHFW=`A]K[
+agFM)DnD'6hk"P&[jT,g]"`fC\=bpgp"4?`:A#cMZQ)/TKK-?1$pXT4S57G&2)t7S
+k8,bPWMJD04EEaa@.bhND[?(tB$N$6VT3W!GqX?Fp>F"oT>"#HgXfk>?0qIX9>/'d
+O'Z<HQ,BHFGKXuUCWK,LiFDiMJbGgQpKqW[PWAJ,bIrG]QUTjflNE4%?kL)>TBY*+
+D;JT"mN\N5a"K9QA=Sf;o9$K)k#(dF3'Z[rkJS9[kURjV)d>DFH&"I!L,%QR)CkL?
+j0>e'Qan\+[*F!]Nj3r[%%!q@dgn\S(>W6I&'DG&(rH<qha7)6G?XDMX6rWqd%'Z9
+Xb4F.JN-=BrS_?q55,(M<ndKp'm(;]iP#!gYXiX:Ih@^eX89/`96FXchrSdKNPBOq
+5&uYH6>$ATH\CDnfRX9;i=`=nSHq#j`AuFt[*KKGH!&SIb%"SdI*#o+(>"`GHLX'U
+:NRi*Q2#`HRbNB@rC$!#Z%aulIG1u2H@'BJa`q)qh:cX][O`W*'BHiI\.fo8Kmqeh
+og3f]H8nUQS9k:Y?b7,t>(.N9'IMe$]J_e_Ik`t]GdGGUHYqsK-@b/&^Y\=JRsUlX
+^Y':f#j&?RB"GWJjcKADAe0oAL:k<g/94Ka2eq[S/6oa"*_*QdYfGXO2cqk;UqYl6
+)7R\_F_6!+b["FCYm,"!CCS8UqW<Lur@Z^VKbL#L3`-*jeb/iC\!G;3E0q'6"6C&r
+8t:5(A3Wrc@PR"6Ya7Jm]K=sT9/$a7c@gb\G(79fcWD%]b;&,)qMG+>[<pZcf'F]3
+,kK[^*GBY.d!?Z?),HXG2RfX@9,;S#4eFGfaYA#Ls2GroIuAR)Qj?1>/G30)]@q(B
+L@XPs.s$0jKC/JPH`;;'eEFJ\[J("T]D+A^&@,YUB;Z8!'HsBget1hBC`%9_HM7Jm
+X33"4\\C*!BuN1WYG8ufYB^t0KJ@`,e&3DV_?OXZ&HD3V>*#q;-[X,eG@-=O7,Nt4
+*m)!"l,.hpQ7bt!*3'[3WSqNr^3sM#-;#'@q19PMA#s/^O8>pC=W%/jc@<i%q&T,-
+]Pe4[Ng.T6HeuVKWQ-R9p7*$/3L_2&oWe#MFuBcSE]DI-I2o\@Rq+5I!_V;0*^KE=
+.+Ui6?#[p_jY:i)`lBAYIG0q#X9i(:gL'gqg^!E$g0`lH0()$u:sAf#_S'=4q6qHk
+>"Ip(r?ue4/93r%7G?df`K&?7j+4V@?F![[(;^kfGGbBfIi8!$X)BAHekte1[`2r5
+QF.E5F'h(W>a-8f"7BD][*-ZViA\Y4p2T<1B^P^0k;'$+gkY"FY`8(Ea/sJnF;OCu
+eWr_t,>@76c1%&SnCL#4VXN[hORr0+GiIrZ_KJ(Ejh*-?ohUHm_.&7nC]B=U>#phU
+`0a"u%5W$:09&.En)8Cu=SiQ^I[sM(-BHeslQ8cpl+SQW:04!/7r:RuCsHWUm-SWe
+_r]&"dMs?+?&1Wj&(if[bk[gLV<B9#3J3AsX4T?u?]@3Qn-Hf&/D./AZ/O"g6jDnX
+\N1S?\aHkFGE"g.W\[$*mH&@&ecp6p=P1YLBC<*q]A-cY`%DfCTC:4K&FjN/jn,gV
+DNnXP@-NkecB?5<=7R$$^:\gA.MgQqZ=lp<FQrAeN24`c32Z;Z;AZKk6Y@X4cU#;m
+LZoVH?0C,'Y@0NiAnulPp.3a^F.Y78pNcc3g;>D$nD!Z`^c1VjYAWdA7aDNiou9$W
+fbh6d\UL"@f-hWK-FVto^0:,a&MLqelVDoRoh_g5Zen&$jO&8,qMf(bhq67BGJRb?
+)c:aP4=*)_3qVZ+Nm6HW(5X2u]2mkESDh<J7!5307a*CZ?!Ef"?Uua,Cc_;t\ZX5%
+^ErS\8Y<*OX6+QW\\7E`A5D1`as6`pk,sYLLO&\\kLCV@Z]bc,EX3bi'2VaVHh*m`
+/@CaH\'+WQ[>WUK[,,E`%P6\G1M=hq/N`RjF;J$1gj<IX*@tAQl..Vl6PhAoS=;)f
+DUp_T*,:]-$h<3&Kl-k*%r.a$_p/0F\]3^8]"Uo\q$]/#qjK[Ng$8fkmd]X-J:/CY
+,BK'lq3T!WlC:r-KqqJ.4oN!'cre5X6@8^j""%8OQ$1m\Lc.H+n$1s"HWW<?O06B,
+O']b:01EToHXis0GJ2GSqt*8)2Tqf.+h;/sdUA?EQ*:9&f[k:inWQ+Z1"R@/(2KMs
+VssQmNuZn6485sLruT?'\j"%MKrtk>#*FtL07%o;Zes&pZ_lp`=Q3EF@di#.?/K:U
+=0e4i[YrIIcA1$7jb_ANp1:T^\mCiO@l+"&bXu5:D^jhlW<9L+]GNNgXnBC,S`J-W
+);fCOh2;X=KO4uqGLaBV%a[;AMFZP':gF/LO4a2r@LW=m>oW[q'8mNRb@0gQE3+"l
+:S@#@N.oHDg_u*\<iP;nb$`KqZ.FPsT)DIkINZ\;VX+^dmBh0omBc+g;CBcMLn7JX
+T04%RG[us6CN7F>h,\0*cLs+HFA+;EofdfBQ!/fHXE!hoIFrQG'0"NL.Ws0#r3I7^
+*tKF]X8<1[hQ4aRkMq$<`oOW'qhIs/LR]meP\WZHVrmd@IBh\FIN$g7-%kh%-A+*o
+_8^2;g@_Ap@9OF&B1[Kb(5MSrPaS2B9]HmkFNrB?T2d6kc1F!>lGpm-G?>7qEN/)>
+ki#>;:_*"+dk7[3iUF#6l!#M?X7js-o,V*YMXL@Bh:L3M<4CA"GkW7hG1lJQ3`4Y5
+D:MAt]@S`M5AZ`*f#(m&SEa@`_V)Xt?&gXVZuHSr7d$o(7pmtNa4FA8U;q!8F++o'
+-&]s?)],P]>\\R+[Pdq>gQT_9==[-t6h2e\8TY_1h#GlM97(M5^8&.5Y0(7d<h>bN
+2.L-k@td9k0CFb=\OXEq4@0pmIl1kgE:,`YSDU_6CjG*OAZsLd?F5JX(:Dg3eMr#k
+]mY]!l8(I3rf!]j.sk6T=dGNu6u.&%Wr8L6L7RJM\(4k>Cic)TU$m[T2RR(9bN+o0
+[@j;!O77)o52%JjX_teTjrRq@-5"iihcKR94bi[Bl?X64e(6MD,F73^(JaXr3mdQB
+gqq0:*3SCmBs4jtm%./$qa5;mhR.[#cYiUE&bf^t7=<G2T5?4shds(I4(Ue3kNOPM
+S<^c%H0mA&B6g2OVf6I4S,#G:amSmj>m(%YI=/Qu;a!Pbk1XQt8*iFp.1\O(o4upb
+kH-emI73&@rYK]c12,PrI\+54o/Ku*7S#feS\.(U-\ehf>frcSa%WVcdq<$o4a>cF
+3G`9XK6Wo7dB3Li9c\!NQ5[@t)kTe@[816Xib!%K>>K6n]6S5`b/=eNUX</j?[>9+
+Z7jPQcM#DK?H3>(h=p*&_]c\#*0spqg2DTT%qj_D=c%1)?3\_hHo/cE9'.7eWJ_U/
+SC+Z$ZgI]jm*!;]KLL6:Z7l7<9g>:3EB.KlN)=V4^pZ#5Atep3:O<`+P=$V!U5sO9
+f,s\J*R0B6brIn@p<Y5>Y]](!K0t#ScCOq5n58%HF+WiGUMWa9fA\I^](GBo]t8G^
+B::n(eJZ_HoW2%W2gUt\]?<&uXpp[cY-hMiU`Q==$JW[H?OkYQB&_t_?#5\0'!X7k
+B!%,-XFcL(9gp.dgraIkQi5"!g#b/;m$">]md%IT2fP^VBUtp"Tt53kRm?ER^LO63
+N1%W83=>m1mQ_c;>H<nPfB=5sm[^\iiK3Mi^7Cm5opP,!m%rmMrUb&8p4%ql)ggl5
+Gea3OI)!cSq1YuL5o-r[I<jY@G9qQ^Q5\MZ^.oc4j4!HcXi&lLh1s<7YK>kS3-Y.j
+iY=JleeWU[a^djB\q41>*0Ps4S3#Q`=Wup/k,mnH:p[%N55FPZkIB_AG]A1h[[H/'
+_sZ\u?^:3mi9@NsV)N=oLN3k"WkRS^P@1SYp#k]u3UR>^4^(Dmc0t-b^##9i[&<bV
+Qd;Y3*5T&!a5-a(`lu_PJ-2r_r0Wd;FGM`;pe7s;i?QXsK=Oap*p$XRbPfqI3Cf_5
+CMkJGmF/5TTJJM@*bR_9bY4!W)^/j/\9;@;[pc_JkIuF[P?SNRRh+$;E"m-[EQ_hC
+can&#:CYo(I^C)XK10.g+a2+USbC.3*;9'H]2m"\gpp1>><]5cSFI33SEJZ0I7$$=
+=[^P_;4KAjp+LW*aIE0SoT_IWV;X,gjHdp,g@sP*I>lh@j,ucG/N2TR*4hFO<oAX;
+l?W)*>FbT0\lL6BZT+-P?0c>)jR<g?-Za02/(nt,S3bFV3lh4Im^N/<HY`Y%c7R1]
+*;$?m-VE(GYaGE`rJB0AIDc6@AnoSCD-e6`^`du73TTqnG9YAKq*_D3L[[R3U?hu2
+iQA159]$gJoE+49d^iK#hI/iRgq1Bc7'OkeET\8h`Z"%ZR*+*_jG[AcAA>)/4.H>m
+GK;uEjH/[YfC1@]r?U")UlE[tc$F3t%>/M(V%:t-fOX=N[3'-LeAo+;3Nnr_r."9G
+r3!8(p,[Tk_G!YXk*jbcF,sGKJ+g$dmTl=%F67Gam-Skc>rZomY-SQm?\;'3eo3O%
+l]9++F)/Ohl]'t3am\8[95AtoZRgkA9FdW,aCj)hboU]mg)L`tr4(<-q+\s)PP=6&
+_?f<3]7N6,r*sZlF^4sb2<G%$-Sd=BgV4c"E)#hRfZT+gP='FLT/"nN(R&jB3Yi36
+m$bKi`;.);p5@(g1O?7+CPR2**0rWYoJeCVIjg5X^#D'H$?+Or%(:H[CBUk/eg[R#
+EK,"@Em:=cckl0O$ZNm=%VP^bkWN\r=_l2`Pf0KfQd'f2D/;E/<n?bf]Cm_j:3)//
+aPZF:mZ.6<fBkU\M"@+VG,D8)FR;5*qj2A`YeB\_Ac%kR.XSjl60Di@Vh2Jk^LR!/
+%(>u)E]7:\o82255olQ)&9,I26!n"qiIH!qmg<^jep?bpc0VI;S`Yj<SX]f6C:Kk$
+*YeL:i3;R=Z$TF6D:b*5)fRBr(Z`*gY_cAaGq]V!E9J2t@P2at?U$^MR.'&4I+[3r
+ZX.mK//k;1O+bg=Hg!,(h/OI0"5CKc4PT4m_8/%5cG*j*W/&is6-gH1MK;2r&Iu$p
+SG*D+h(33>A53\:3Ci5sN+q&"\)47Pem(.ZGO8Hu&&J_+!P/S,i0Vc*Vd[t57<s:4
+`PJ7]n@9Srqrp,TqD!?]m:59Ar"%)47GjZLHWTC.[.XOgc3tK?A".gkA"V0=MKML#
+k)<<e1"p6BC&PCH@^at&fi@2!S>Y>7+jMl)f6,of7h7ND03l-4G<gYn@d6DJGU6t)
+CXpN_>oP[4^?p8nYc",m`p,e^m;6>TWUGIB^'FMfgck`sf:Y;`m!U9uF0;R!Bg/:t
+\G#Fb,b@g`Aul%A[o=Hsh]<jJS`ou#fn4p#B!_/hbF<d<k^hgA)10Z9aRqg:9>'H-
+as+Ql$omQ!kF07reh#P858sLmm=%]IL]0sGYR+PFGLUD[mu4F2J&pqR?fg(37l[i\
+f\0rt[D&6NHOd_:nV#>IqM<cYY#Bdr\3Z1LcX?%d3Y)\1/8AqFY;.boZNdM%ol6Aj
+"mf<:Uoouq]<[6!9Et9=QdpL$]EZU9i:CAuZfa1BTA$\kGLb@Q[oLQ'=74P5Ice0;
+_cPMqo*EtP=<gkq5%e0WSj]a?,M\K-_YAqTcUL.g>H*O^Q18(qUjKr=^)jHAL'_Lk
+3GX0*37m*>L6LBt=C*&IH4^A.*Q0Qai&(Ones?ociKLMgBD0fd+5K([ErOUA[D/-m
+i7$QcT9]Gups#0pq[@u-?^*``]:O-6&_FJ9kb;9J#Jen*0it2i[Ni?nfcU**_5E6$
+Mm0JDWc:FIP3^5$&QW9@I>$EMq[@\oXL)=8]*t_lLJKbIJ$PuE?6?T2Roj!*Pjch?
+kC;RmR2<3NU:oUSbaVjETBiBZ+*##3^+j(#oc+r2gXb&(S9smuqc`P.pD.l>UNQjJ
+ZONArZlP(hYJM$pp6n7m>,TjLb]mB@gQS+2e\CH%%jcRj+7IV%r"%qs11o3<m5)Ic
+k#:+)9RW9Jo)%8uE&]e+UM\R/B)_Pi3]kb-.aGGEcbZ-@B"\=eDbFEOF7$ZIB"lIe
+[JrS*B`+AX]$-<"$kJBUF)G(P00e.2O*g6'3N[4$h/"\EIB7iDIa5L?jR[F.@UG.0
+i,F/E7QlE2iHKJ]?fp(V=m#rJ6d<<i1N.Y.eW8jIH1'6E#L33-k/<*tFWu>8lC(ee
+1A9"H:H7HSXOGbnoe*G2-f[."r=rfXluV<sg3lVuh:Q91pD$R&\S8:kF+)"!c.%S/
+f%QU=2KTFTmIlq9pct,A@V-PA$s&L\M7\drIX?2]a5K*>J'HWe)->tAF8q:go_iE3
+Vu*NcpeL$brDi0Eju1J`g?W@C#Q?K-lquJ(m'sOLqWE(P3X!4rc'9a@<SUMo`VT7g
+`f)D=FF=)]aGJ]a^0,isIU_ST\DqtRUikXclTCN(X*(r'B0KX;nFoDr6Hn3H'?Zir
+.ddPWCX,U4?FqrO[3N1_a`5S!5#G[YXl\f0-:c\M7:>-3aGE%3XQs3QGG!:/pX`Tp
+/QG$In$"UFF8q<=]I2<iI=AEo-1O-%59]Wrk#6?I''HX=n1Ac(ir.i.4N$cG]s2+n
+hm5e!:W$,C7_;sXD-l:saGCnT]'c!Pih8D;Lhd(K^/O>?Lc.K\>TQB5Z7;JgJ&H?2
+LjgRlbIO#6n[(FnhlbR(qcsGr4T@?I/'%AIlM:"Oeoa46j@(+S\96U`ho/cT1OJSl
+p)`2lh+)W!R[IsNiUEJicfPK%&^ZZmChLQFSgF6_mHgUa-Ehjs+-2g)O#B,F=egD\
+SB+!tX6jK'ce^n51PbmIn&L^e=VcK(]bC1=kW?;-48/lf/Zoh$@iqP\8re6.;m5<,
+MM'i$?7t<Ckidf>k,5mWP5?B0I`itp[lA0HreNY:+"_j5(-N;:Ym3GeeE9go%<DSs
+kI<Y2aO/^oVJf51F8fV=r[QKtS[\9*^L&`MGjrKJ0m?p1ooGki?@2Y/a.e(NdAB\6
+6kd`Qr1-r9qIuP]ZL7SIEA20?O;%BB(k.f;"rUs55mA3;O?j'gA<9(]).\gp"rUs5
+5mA3;O?j'gA<9(]).\gp"rZK0jo5G)m9`'
+~>
+grestore
+showpage
+
+%%EndDocument
+ @endspecial Black 1081 2074 a Fe(Figure)c(5:)p 0 TeXcolorgray
+1474 2074 a
+SDict begin H.S end
+ 1474 2074 a 0 TeXcolorgray 0 TeXcolorgray
+1474 2074 a
+SDict begin H.R end
+ 1474 2074 a 1474 2074 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.5) cvn H.B /DEST pdfmark
+end
+ 1474 2074 a Black
+Fe(Image)g(containing)e(image)i(mask)p Black Black 257
+2305 a(W)-8 b(e)26 b(create)f(a)g(PDF)h(\002le)f(containing)f(an)h
+(image)f(mask)g(by)p Black Black 377 2504 a Fa(png2pdf)58
+b(-i)h(-m)h(255,128,128)d(-s)i(*png)g(x3.pdf)377 2624
+y(cp)g(x2.eps)g(e3.eps)257 2823 y Fe(The)25 b(result)f(can)i(be)f(seen)
+g(in)f(\002gure)p 0 0.5 0 TeXcolorrgb 1527 2824 a
+SDict begin H.S end
+ 1527
+2824 a 0 0.5 0 TeXcolorrgb -1 x Fe(5)p 0 0.5 0 TeXcolorrgb
+1577 2755 a
+SDict begin H.R end
+ 1577 2755 a 1577 2823 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(figure.5) cvn H.B /ANN pdfmark end
+ 1577 2823 a Black
+Fe(.)257 2989 y
+SDict begin H.S end
+ 257 2989 a 257 2989 a
+SDict begin 14.5 H.A end
+ 257 2989 a 257
+2989 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.5.3) cvn H.B /DEST
+pdfmark end
+ 257 2989 a 128 x Fd(5.3)119 b(Using)31 b(alpha)f(channel)p
+Black 1286 4415 a @beginspecial 0 @llx 0 @lly 162 @urx
+150 @ury 1417 @rwi @setspecial
+%%BeginDocument: x3.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 162 150
+/DeviceRGB setcolorspace
+%
+% created by bmeps 1.0.6 (SCCS=1.65)
+%
+gsave
+0 150 translate
+162 150 scale
+<<
+ /ImageType 3
+ /DataDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /MultipleDataSources false
+ /DataSource
+ currentfile
+ /ASCII85Decode filter
+ /FlateDecode filter
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ >>
+ /MaskDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /BitsPerComponent 8
+ /Decode [ 0 1 ]
+ >>
+ /InterleaveType 1
+>>
+image
+GhVPUH`UdkH(XiTR2P.W1XkAdPe`N:AjA[3@>H(:mMAA1&-NUg#Ri$s44o(7&/`H=
+"CkU]Wg_MEX)V&^<2ikT<EmRG</%]Z.begjNeLE^C(as6%DqlI[dj;'F?e[^T!a(F
+4):HKj10DH]`*/`n*B>Hf<a?2pO5@*l,=J=FHAcm).\gp"rUs55mA3;O?j'gA<9(]
+).\gp#!&AgoY/rD*1cd2cQDP'_2Ch`i-EWh]jTU@'`#;9`D01bY\Ea9ce;9Ma1T^p
+q:qh8GjFi\%^L!/`k6DP+Y^kem%rci>(Jtb4DA54ZohM//WDZK:)[t%YJ'9_-P(#'
+ZAL`2OL`.+G>B-jp*HVYUAj1um_A.3n*H=RcQo\6)gr$NgFANqcOW]5ZYceF^^ZG8
+akZ\6qnahF4$V?Nl;fRTT)scuA,`otd$#D=>=KQ$>H=np:C]LYpj*JMj@/JNoN`P_
+Xfe-@/][-Q=bJR7#*m0-(UmH(]c:P?nH@n@D/\`Bi>f`?I.>kds7DBOGpdQtH;;3&
+#.L4ef@E^?@V_<o_r]&#euBOq<\@bVguWSDr8c%.*mWdP@"2V$=;F)`*Vi:=R^QE!
+HuH;LO2KO=C`,p9h!2a._;\q.pu@8b.PbU6):%\jT`8?ur4c=#0OBG6o-in&bcU@o
+q.k-149f$h;MV^YEP!gpi:\(i,^WH*2fsB9D-Jn5(*ES)QUXc0jiPYUE&jH_@t[#*
+?-Y=jQh174D:@-&k41\;Ikj"0rjEfD*pmGkD/nk\/m#IsX)+>hKiK\p*n]TC4nQ]H
+NZS1P58ZQ[LOV:0Cb._C%P0^Om%O#WYe8cQ5nH#nhtkF;(.OpBj21!rG:^u-Q9"-8
+_:m>ga.!kqpXrqsT`"W!Q6So;G<T-fJ)!'`m+oGNH_Yp@]PquMn,NCN_)7T"GW`S8
+Tj(F0E$#S[^Fh`nj63ar)b5DWa"*od^1-t5m$bMio`b4pCq7d1kl]'Lo'C"+>/es^
+f=Y_fNK8L(Y$?2=\YK1GhKbmrqsf`.rnf(e;<44=qUF_5TDis.r:b[7G=UQjguh.N
+m+F2k_$(X6mKk3^))I[C%efb?qL.k"gnfF'XuR!q%NiE2j631T4KG^]`qQ(;WZKT/
+fOpOT]dS5HVr,U?Js3qfEs,;=l^W#cs5Tjr*F4*E=el#j>JE&lY93a_OoKIaRA7Op
+d"dL+4bUkgLA5(=b:u!-[D2[pjk0(u\*'Aj\GXY@r(b;n&''"e8&=6GK5NfG$tbI?
+/[js:N=4ik@ZMnN'O2B$\:7rZkdS![meZ@p8,rQm0CI(L-^R$KVuQNcd<B*o&@bBq
+j:/9kqu\#X?2=KoO8e2:hH/dq^%]48J,>i3'_s]VIWpp(r>WN!$'0KTiVe/lMX`D\
+(<;Zas*==kjmSp&s5oN;*8NSd&j:O;k<E<u6pK[$5$E*h^uF<_E:5mF?N$s^%E@hM
+GOn.0:#W?Nb2H.!T5o`)@rMfo`Y(mJ6fF?o8ptudo<>:ma1=k1csQh;N&(eoE!&IH
+oriiCf11>ac?G<JjfeX:kjl3tI<=0;)F?'%lW_u*9C)KKN^(GEq#&b#or`=/fn<#j
+-\!3bZ/sVVH+\4"+7UKr**>>i23:D%^bieVKA=1gEHB6;E5/WeAYJ<?@[*M_c*KG8
+O[$SHPaOXVp*+&&@b_E>`8RqEbubdUPQ'Qo+"Xuu*=$Z-)a+)@l)0UAnXJDuqP.Er
+e^6TBmBk9[DgG?E0>6<R#8H%8B+U*>YrLn&asDOu^C-61"+2J@`,=U.@^"1=pC&So
+<XuOHM`$R3@s+HU&#PN7SMgHEh9._&E/:-"rD(pIdFZ;0EIMKfMTQtu'O:rfkV&?f
+2d#q9lX)mQ_WtMe\mVU(5QC"M(]!Eu?F;EE^$&`cO!L4m*LYtMn6Ot7mt]0M4/3a5
+Xt6:`Z-gKC:C\?c;GM1XQW)X8Eb[[+;`hW:3(+;>oB8-C,A)\NLV>[WIES\#c,@$@
+2mg2e9C+8h(E8b.EW4o^m_8Ur2g3F8=]tUNWM^O-jR1j!:]/A=N6Zdh.uKkOLsPZ6
+`Qs"qQ*9PaKP18o9R^QsAFbP*j?)p<Z.6cLpl420lt;69`a=,'`\)m=HtjY<`a[3W
+Rb*hBe9sEF(M<S6Cc/X:%Y++H2Kf.[4SP";QTDkl%V63B!e8p0cLL"]4o/RKa\,Z8
+MYPi6kNl,BR4IH"q:Nkt?KBmL&q9^[<'S5D2ZHS0Er$3&fP1<iD"J0H)biFhcLJ_:
+-U))G3Nq0U>ptKcGhkbC:.^"(mC*Lu(QDSe'/TVQO(`mtGfoW89h2tXGGahcp`-If
+r4P;Q3%;u;>5TOXVe%Q)U)`/3i&>DGnK[O9Z-VXP].UUdkX=u%eP@1[3X?5%2_XhI
+k>r/V$(RC+-ARud_#sOtj%se_GTXE73P;f,g@dG^X`'W4G2$BVp39_E`a<ETKLpJE
+i*YBGjUV=[/(I.C^Cn:\#$YFHI?%Z-Y48C8I&>s@Il,g?6fN&>F<P,-7c*S2oZ#bb
+E-9UK$!6\Q?O2/&NbZaG/G"U5:M][HfW/R*p$17MJ'Ueq&'`\(rGZSVMpkupaaKbo
+He4Lk)D@T/\NFmnn:s`(6/uVN+n<^jiM#A7gKM_-=u2I)D=&Qt2Y$[SY79W:c=ukC
+r9%mfWKijoL9p!hVQL/C0m^*.eu%>;TbANGhG3LmkPO,FV=l\r<?81?Kh"*IJ!`66
+F,?=N`ij&s3('cfkk4!'_+!'f(djHNCbN2[a0(jnk'?NQY\)1"-?h8SLZB_emmWf`
+S*(Pg0fZ5cVQsX-NtqWH^*[dIpMT3k+-rAUY#Hai)8MWI5O3b(IP#S7Xg8Qh;eMft
+LJ>Lj`[MFGi<r!onIU(8itQ"a)-o46N]]2l@r@pODP>iUi"?OIFaQpgAXMZ-QV6XP
+D4W";b9?QqC<)6^=R4=N%iRcQReP(+dj)\A3#9!ACbTHS`*_&D#^[c^MoaU.%+5OR
+UKZh"ioR)XiD`$Xk^5_iTF>!g7]bS=*#r:,ad-re5-'][I7P2WT$b0NRD`]5DC=>`
+4t_+bWICH3(h4EBNf9%HCYj!q`i7G\=5I>ER"`lV4h2jT6iHH-@pO:W'mr9VUS`7Y
+=Ps]oI.pHQ5%G.e%H?!j-[bKR8^.b0335/<)iafMOW?=*6Ok&4-h87jM9F;UZaE<T
+/_(nkHQ.#XF3@_KQnPN9P`-jFO'"aGH?I,3p3`Rgi9o?b2)um/Gh_CG?g8rU+EpjP
+pX/.h4V&Qh/[dn6nS'Z/^t1mIL:L>53J>5C$a6`Rem#XWRqrPq(OgPE&''cA3CMeE
+>@i8olFH:j<tT;GH"qRKk@]g9r!IQ]E[o#9Qe%Oi=P!6K#-[B%0`/GaX*n8-83Q%'
+<VP>)kdij-]=TS;p;YrRAriJT6TtC(K.]92%^jF#+EeJ_LsAp8WWV4Af<iZR@:Kpk
+GJr5ua78)PqrDhV[Iqr*Nph#.0E'>_K.hZ;kek#UNR%C^?S8m%o$&p\I]neuoq8Rl
+*"m>6i]MSCV\?JOkX0INS[Io_r?m5s!s]#@Xd6H0g-C$FIDWj.eUQ<3jKQSF2-t0A
+39I3b:W(kGjb9++g]tj3oa)UeB[#F*?M:[&O&Hk_WAWRkX"?65S/c-Z@HLarXSsAJ
+IQc]K4ta7nl:@=25Md/<U(^s4Io$W1[8_nsUL]r#^=7cjW*bq':^5=$aeA\V1%NW4
++1eUdmenea8WeB1?'lV'f>D$rYslBPDj+s+kTbaTojmW]3n%>ACVQ'+f*fCTpStp@
+X0*+L=WGuu4>dTbC[Ol%#Zp6+)1-c0oR<8g7!H*;W=N8j1692&iK+s_p)VePV/AuK
+5$%ngj],>m2"dd?r%EDCZIP.+:\M.soe=Y+kjjGsPBfLd1?f`iSgO>LgAFY/"^>;8
+(P=;pg1C3"ZYP%!4ULbtltPb#`%-Z:i'+Ede[h=,[^A2>W3Hh;?4fk?_pO[d3:M`Q
+]K,P;pGI66B)mj$%FVjAfm6b0PgkD@_eOC"^Tb&fqkj&"5!>8QY"'#*`?@;4SE_=3
+X(5S'r<XqHZ7>@DaR*'[k[Cu;:>D'/+7pd4\*I%qUS&FlYIU-85i/B>aZTTd/YfeF
+n_D"pUWiLeqkeh9ED#@$H(9$q(6MW>C6Rg83%ma`6Yu@^Ps]\g]io:1C>2rEUO*n;
+kHUC814@CLZ+.R"oW0S#&aNC_-_?]On<E*qhK.YQdDc-4$b]2gANemDN-rme.Y"\1
+c,E2cC0Fu1_dj>hbA<6!$\e8+AMEf9g!RRgp/#DZ@-Yk@h^s>[*_[Nd\#6F,oc)jD
+f1`S5OaM?E*hI%+Z1ru+Lb:gaT<5oi@F9ca=R(,-(M<4qD>g:'&_F>7`6%.oi:0V]
+4KmK$"8/d.n#H>eI6M'Y@iJeL`@Vs+lR/\CqeYjK-Z6-4kV_i*48=K*Nr-E6S:&ES
+E2i\f0N8mjot/d>9_#ZV6`g+$Q:"f.nX3S&`e=NcG@nbM\RCEnHM4[`F[j^-S<!ST
+lF8amQtr%P3TF[\B(LuVL7-AuU"X'uMg(fGqQTT&J,6ou.3/>FrIr.3Is0,m[%aIW
+Oib@?5O%1h`\+ao\]Z($[5sAND732UDaNbGT$cV5W1TSYF#Cr`oD8+6Fe4"97c,-[
+2OA8E>LonSm>l^cm'UQnJBiE_T6Q<u@ii>VXKA7)4D!KNjB=U:n2IOQ.Cp'#?[C;?
+HJ.Ur;ml5pLhX2M>\\L`&'?)W>J$DFN4iT2^Wkf3CT4)]01-h@p#C>fLiG.qmt/Vb
+YJjbYmer##EmrT6Y)SlVbF%rckM0U_NP.76^T@80TJH;XYoPJ6IdlYurQVV)^3e<p
+q1LFq>_4U+&)Z#;o\pe'@E75g<M$/^VC.i/-_-F8euNESL=VUD*h+%<Gl>R9/3[ON
+cdl(D2H+C70%dVP7^r'&[Vh8oLG+]Gm28"XolJ6E]aWUjCEdUK=8$VSW5f*.migA&
+F'nRo4Eg)RZ9(2R:R/tCII8\"4L]]-?21&lqH8Nm*kaV0s7dVE-F"*V.`u6u#DGNI
+bMKBsU6`[p)1?bS1mTjs.J&gV6Z96S/%)iu>LQXUMrq%A+eo.E]C9GTQb%&UF8B\*
+YFmM[.JaeGT1QJS-[TRoVkKHnSsi\$#dN"?310_GF;R-V,/W@Bkf)Np_JIVR(TnHX
+#`!?2G\O<%jStQ2IN*a2r9^"M<VcemS]2Q4`M*I<?g)C>pc3T[\XD;Af*UeJboqSs
+kI4/'e37fO4Q80N:P0`;KBPPpbI'lD?Yc(9?OM4KrE=7(*5c;;3I7V2^Y-MEh=<WW
+O&bFkY,Bn6=H$$F([U&9YpbZSo\*!Q>$VDpE/=/)aYO>h;Yf?3kP,!B>k@eGjD=%r
+K"!@5^2@AEn!DAB?hS)IQeOQ.p0uKDQ5o%hIFZ7\`$*(2HRja45Q!TbT!_l$n<:E;
+Wd_R\ktA_)iU#NXX^jt:rKi/!j'ZbE@1X2_$F\l,NHh5:-6N'=<#>,^^\HRNUHe_C
+<V`(`%.`.o0!IG$Kj1#FFnEq!c.R47QT6&2oK1S"Ku`MKhQNuW0t2<iF,;n)4njtU
+N]"'L\r\n)fH\uO>I1iMp0M0/k:tTZQCP@1rHO?5N-CA(bi`8fG@@c;?M87$=QFJ`
+C<""u%`eB&[Xgs80f"3-DbT^i0Sg3,8"_N>=#X+9r2/2S6qnO'd"h,?q1h[\de;F;
+IG*4BY5A'LR3';2[*:\,fAG?EC7FVjkBdf)&HAI4nc-sgkWjO.gM1YbI=DdQ@IAuD
+g$1_J4X5<SG+>qM0Vr)4%g\5+Ir?[RjYnGS-8'jVitLL]s);CH:?IDu&'?#@&*>j$
+fWsl0,Y#0@3ocH0S)!jo?*8/H1kqE$41]@1&%hU^heXp-SG#Q\"1>h!=hM^;UCZ>1
+Go^j[0')l>X0.0"RD<U^o,i8YkHMICf0ZAKOn15o`[o%R`ji+j5R13!K1Gl,hFen;
+Irk&L*-N;BMGSL?5D3ttnMT0Io&=0h](<!Z#Mmp/)I;!t"h8I8,H=+p_nI+NF%>"e
+5b#E$X_6I"N#79DR!JtA0X8]ClC<Mc:]0:XQc)h&&&Xb($MG>Qd<G*R=H.=^&7*AZ
+*:eRO!6=s3(JZsMZb@5IH]ISVidEg4V]nLjr!J5V,&Y,4RS3:eIUT8f48Z[?@AZPa
+j#SQ(\]H/[=t/Lp[*>^J,i6]?mB@r*cu^HO>,RQ'fHR5$rT*Vnh-:ds(SW_AY7CQi
+lCuG+N6,DLUk4UiH$R7MENIBOCGC"`(S'IRRb?>hbM-8:\XTXs3?214I2'm]_cYZ`
+/8D(]-^$P:AgUm;2qMo6QZ.1aI-,@oEV@b@ZfZRh6f*H$<>Y3Ir'#"TS)quo\0A8.
+Y4(lg?F6Q]7J)db6L;8II)Y=8lF<n&B:me:KY'Ef9dtQZ%X5q(puPo0]e<Wo9`>7n
+9^P4`nT2h*$nNI6Sd"`7Lc1N&I6E!?RH&R7.IT!HA*fp8CZ`:?j_q(RGO:jcq_Z\d
+)nI"uY&ikf]INP`lG;\<ctD]]o_p;/Y&D<EFI"*?b)TT9]Ii]1Xe3*=Mmp^=bCRW"
+lf"!om'ASb>m6"r:@CE[_(BeZhXdbn:$ao`NTBQ&n-;`NCS?Y\3$*8<Us5*P5\=si
+1W.n`A]B5%eR^<XH`^B2AAT^Y5t)!iff*9-c8j,I"XZ%8BD2FL?Es;oC<S8ff2NO-
+8)73YUCX\A%W:\kHo_4h\H]9IS:[>b1S046oG3MXkP5"$^;ML2J!+%r3g#pjSA>r1
++nSbHLQjedj'*@JhK(%A+flP11PP+1/G)kDT8.==2iUm:2pUM>oVD?03=d*jk?P'N
+ZX%.i](>We*"Es/m3R\_E:I./?ZG3S3UL8+i;,He*<_C[>e!\kO;GT=F(#BEC[B5S
+3.t.8BE!IjQIkXUa[)XOGob`K>F!*rCZY/,a^`7lW`ruHBOU*#=e43NBYC3On>`H0
+alg!;QH(S0W=u\cgVZ4aI1YI"A^Qr&/CMj5S],u:o*4SF*VT&qc_3@7CWkE&!)qsa
+j\NQl@[Ag%]SG[kdpQtKr26$BD<?-;Ck?B]CW62pSC7.f/lYV-B5P3)"l)sXFG<lZ
+'DlBZG-T3hfm+)8naS^Gdneb%B/2JkBm[`BC[^N,:)<*/0t0[q+gqQjhV]pD8"XtM
+Zh](UmWpiL=.&fIbh4E,qM\olc$VFNnJO;S\&+jsBAVP1g)e)6PY67U_sMTDl:SJ1
+AZ!^2R_JfMX7]l$qbd[]qW3!S5#`otXSaYn4>(_uBR2Dsc%\Z6EO,SflrKK@Zn#CF
+XI0plF$GEthf:s#gkpBEbdF5f[5O$4/2ht7,^*eVAKE4[-/\8!e*md4S@bCrR`mkK
+)0<#j0);fE-\(QD,+$T@3tQmi[Wrdt/BmHflE0B=m0f[JRliY.Y]*.gJe!GuC^@c`
+*"F\r5DR?fRr<!ENmM(U=+qN,e&4*[<?4Yj)$Wn8lD@<(_BPV;S\3i-EdL[N&]\4q
+"cVM9m*pIO,:Z?hREp,&4oD_aE(B-/[*e)Of*p$$BV-i(g3]m(LnCCOKL9X&X;p5'
+ZJOB?3EtN:^;FsMPKn-ul9h2]^7qh#kO@T#;8iK,rhdWP@oi(8MuP_J&/JP%O=[i'
+bZR:Y0#AEYDsitic<1+^`p"FTfh(%VGMT<1^$O"MaiWO_Qf$XZdi4$Y5-rP,_ZqIE
+5e`jp"R_FA"?XkT%cco@)$X:g='#@XERFO2qL\E$^gC_u0:_,8IZ.?a2)mO+%f]WY
+_BQH1#7gS-m`H@A)Y,`?2fGXf@sOWX%Y)Y>_!X/0ZIm4F;rQ*9NQ7-uPti]EkZDrq
+4`]8(=+6Jk:F5X=ad8$uK0OEcAUWt@26Q1S<]S8#_:"D"ekCA5GMs=L<M)A83@qc)
+P_n%b+G4]J>f("D<n?qOd9L(942*b\bunO"Icbcn2+nlHQC8,PiGZl33C`H.)Rhik
+r@;qkD"i1;V5L$qrESY5l5ubpq2VO(?s`$!>uT]#K*uSU^jJBCSG0mpYoZ5,5PmRE
+>O`OWkO_YrFo5cGmUQmfS1)&50`(l@A0qcZ_n8V,61Qqhf1tLXS_@9(cYq+t%qkZZ
+l9q$#3#mSFUE@j8nc`gk]+I6Qot^*BYI]Gbr3j8X3Akt?&5t@<a(jN/>9@j?IG"uA
+rOoQ&E;bN%/:EB9PNR<7-Hpo.^[.uHn^uIS;>l@@=Kt@Aqj%*Xq2IA+#W@TFeg7%,
+H/C>mT=`qupd*NJN'4H1/*\@VhUaF35''IY2fP_J=3E>N^B@i*Fr2:ZO5mc/J\Qp<
+6sB;0NoTX.G0de%M59"pgDb&P]<*]=5?UA'KB;VPZ^e!2ofrAE%-ILoot&s"T@mLk
+Zne&DY1+MloAl"jh7nO15PQ7,P1TPHs.$gmVephh]]]`D.gKWlc1le^GI'3OIInEW
+Vq3c?,C\HAc^Jmaqm2d([0@V3SBQrkgT`H]>EScgh7).m,(GelS\N?d4L=d+pih.4
+chDaX>P=4hT:_[^f>h%5Sl;K9Dn?qEnp.AsUch3<C-=@[9Dbl0e%WtDZAu*J4l#50
+i&9bFF3AXg76(3bce@o7CDMpSO+fkf(>r$$$o@8M_>h@?7GJ0$k+0&d+6W*D^\<?9
+RgOY&F26:^pfMouj2/Poi5RXR$b;ONHR#$oRrNPn>T\m+%a7*.fOmh6PjcZm>?H2[
+E-06e7q;A3g^C$+Ed)r5s,fG7SGZL0j>m7+I!O!*g9oYkb8RkDFaeO[ephhg8G<>J
+2'1r7ES$qnCUeCZ_bnjCK`TeTEXRNb7s,XJ"$R@33r^SR/,TTjM;N0pNq7crPXGCE
+3;he8T.;I4>X"Xb'l8mbN<4a/p:!03[GH+GP9!YY-'+J38Oe,EDNK9BfO'\&:q/C6
+dMC#eIc0X";\lp9^7j`Ia"-hl=pb)?;YTtHIJ/kI]Pj8\QWpU!rLDFD9gR*jpMZFh
+-ZValDdgaN&?%CrDO_aVH@kRFFo&6oFK^VCO5:o[*BUEh6>tOe#X=n"\5=&SXp;S@
+DloZC>Fh.mNn663a5V#>(Gt$:$kcpb^OJKHb06X%@[mC]e")a3qc_2@_oa'IWUO$g
+%J<q@S(1+,,!;bEo6Vd=fgD7\1&&qJo='^o[IH=omns($?T2$F<a3OeG2K=NhE&,r
+hHXN,eeQV_6#YI/F^E2a@U;XOGX%(l8;c9`S8'.Fc1u_?@fnC8SD3^9f&JM%JY%O%
+NicXKGraqGor?VpF[P15@UrSl6[iZb1ABW%(n^6WjltPQREIQk+$^de@s`XbcXU\h
+3Tl44W.&RZK\/^7o/G`lq`CkG?)]hSnl'uJDNU2:5JEiWo?P,8^+DG3ri!j%WN0T8
+/n$<o4ljfqeo9#4%qdT:g.9fFYYNXB3o%KDY/PQRfT0(ZeNT`,Tfg,V4YZS3CU]Kl
+L!O@YTmoYK"$/+&1UlX;Nb?*9[k_\nZE.%D?Q8.7[DeY'FP-C2qa06GT+6V:9,gqr
+>P$c:mq^#]kE=kE%!XV$@P63s;:.<q?,\Prqg:W"j*:?3c@O%X7H]aTfMM.tl:glP
+G2BnTjfRU)7[(Nhp`8G!h,!=m3X\I67uoWXBQ+/sb]oj0LjmH]@X_e3H&(!5l[I)K
+TqAf`)i(U$6_0e'[qTI2M"-Ea`Kn8dNmF[<\Q(;orl)VsLUi]sHYAD\NJGkhr;Q1U
+C]QW_O&Cmm^2Ds6j+3coZ$HZ6>j$S,*3[;PQ,?KMfeI7QeUd#!e?:tF>A*^&im8M(
+hKi8S\XM<O=3Q,%^?;Z?laV/-_Y<-g\LoIHRH-K7n(1\[bUZNa_&&WX*7k8*P$Ag)
+4`jF5F"2Fj)$,-aY.EN+&Y@l_IW+D&a9^!(+)cQ+99$=4CgmfUm,QR8]GDU01!jXu
+g6^AMLA,X,39PGM2[XhGHaQf!D:gT0'`&BqN%X/c`jrCUIaU-DLGfp0?$.(pEa1Tb
+pJA6;l9/VcHol2PHJ<koqYD;t`IZ"A0oH_(rn_k3^!&p"3W6q&fCFit\JF&>qdC7h
+h5eEG:-$'!ql7>`4`hc]XjOn2NmDbdXpMj1c=pg4Pk-B_(S4oNEs-Vp\IR"cg0/SC
+\uN]Qq_iT1g%$8TY)0WBDd9BY#@l>AobBIs[M]R5m=*HKR5KSPEH.sDO3]JR^*n9%
+WjgbZT'qh"5l&lA`5grQ3`02(hhER^1Z-2,c+foqA@gh02Ga:sV0XYEoCc6oDBa.j
+@$+UYAZr(F?_=Nlp80&+e&%h!m]=,G/>=53Y<9C',W[LNoYJhM^_<of(@UF-0ZWk%
+>d\_j4A>;ehXB/Oo][Aj?hk<''?bM/Hc.;]iOBC'4R^uO"J8DSG`DH:%SD2Pg=MKd
+gc^X`[AEZZg1Xq5FJf&4GtVsp3UYo!f\W&Y['!17&qT5o[sR)VbShC:V&XXD@]Bs9
+Ng$a=2sY9h3A's6Y2RefF8cgFDL69tp7+0"p/gM5k6E?)g[6*aoQG_3r*K"F4S""!
+^[N7P&ROR=hX"$TrY8l9d<.nPNqq`,>S#%SG-<(`k`nS#K8mm+r+96(mCKJG[+;,<
+YqkpTSnlV#\r(P/#I";kkLZ/pk8k^#F+egGiH*e?[49]k1H$k2SQuV/J!/$m5k_&D
+pKC-qT_2O\3tcW+5Ih!A4J$i-m.je`I15C3Su3C6X;tSQkk<n>Xu_kN\<"P8AfA.*
+=hlE2_&n7\5GueX7plt%d-k[c%Na0&kVDn>5gX_2O*Q`Z^`!*5Gn&hW;>*R%+4$;]
+S`j5rI*WlU=kd1rDk'2^0$NN(EaEuc>DoWWI$9%/Ibsi[j,fQq3L!J@/f:k=@]a_n
+GP[fn2ln;Cb9rM+DsatoOiQ`TF3_eW`ZA^kmgZW#dVG?2Ui4S;4r2u7![d$3jmVOI
+hp:W.?.SbK?*t+&hIm8BaWBu8m,]9i*^d)=<t;M&Y5'7g-O4pm35c'_I),rE^`dN6
+rm4eQs5m[Mi]G_6H0QIS*Er;HCHltmesj)Gl7dM,IaM3"-Ke\K\_\eXgGaeXiEB9l
+Zp+U5NI/kE*DLYF9$qjjhf6OZpBQJTf30*;hO=IKC]C$@4]gj8:!V#jhHFW=`A]K[
+agFM)DnD'6hk"P&[jT,g]"`fC\=bpgp"4?`:A#cMZQ)/TKK-?1$pXT4S57G&2)t7S
+k8,bPWMJD04EEaa@.bhND[?(tB$N$6VT3W!GqX?Fp>F"oT>"#HgXfk>?0qIX9>/'d
+O'Z<HQ,BHFGKXuUCWK,LiFDiMJbGgQpKqW[PWAJ,bIrG]QUTjflNE4%?kL)>TBY*+
+D;JT"mN\N5a"K9QA=Sf;o9$K)k#(dF3'Z[rkJS9[kURjV)d>DFH&"I!L,%QR)CkL?
+j0>e'Qan\+[*F!]Nj3r[%%!q@dgn\S(>W6I&'DG&(rH<qha7)6G?XDMX6rWqd%'Z9
+Xb4F.JN-=BrS_?q55,(M<ndKp'm(;]iP#!gYXiX:Ih@^eX89/`96FXchrSdKNPBOq
+5&uYH6>$ATH\CDnfRX9;i=`=nSHq#j`AuFt[*KKGH!&SIb%"SdI*#o+(>"`GHLX'U
+:NRi*Q2#`HRbNB@rC$!#Z%aulIG1u2H@'BJa`q)qh:cX][O`W*'BHiI\.fo8Kmqeh
+og3f]H8nUQS9k:Y?b7,t>(.N9'IMe$]J_e_Ik`t]GdGGUHYqsK-@b/&^Y\=JRsUlX
+^Y':f#j&?RB"GWJjcKADAe0oAL:k<g/94Ka2eq[S/6oa"*_*QdYfGXO2cqk;UqYl6
+)7R\_F_6!+b["FCYm,"!CCS8UqW<Lur@Z^VKbL#L3`-*jeb/iC\!G;3E0q'6"6C&r
+8t:5(A3Wrc@PR"6Ya7Jm]K=sT9/$a7c@gb\G(79fcWD%]b;&,)qMG+>[<pZcf'F]3
+,kK[^*GBY.d!?Z?),HXG2RfX@9,;S#4eFGfaYA#Ls2GroIuAR)Qj?1>/G30)]@q(B
+L@XPs.s$0jKC/JPH`;;'eEFJ\[J("T]D+A^&@,YUB;Z8!'HsBget1hBC`%9_HM7Jm
+X33"4\\C*!BuN1WYG8ufYB^t0KJ@`,e&3DV_?OXZ&HD3V>*#q;-[X,eG@-=O7,Nt4
+*m)!"l,.hpQ7bt!*3'[3WSqNr^3sM#-;#'@q19PMA#s/^O8>pC=W%/jc@<i%q&T,-
+]Pe4[Ng.T6HeuVKWQ-R9p7*$/3L_2&oWe#MFuBcSE]DI-I2o\@Rq+5I!_V;0*^KE=
+.+Ui6?#[p_jY:i)`lBAYIG0q#X9i(:gL'gqg^!E$g0`lH0()$u:sAf#_S'=4q6qHk
+>"Ip(r?ue4/93r%7G?df`K&?7j+4V@?F![[(;^kfGGbBfIi8!$X)BAHekte1[`2r5
+QF.E5F'h(W>a-8f"7BD][*-ZViA\Y4p2T<1B^P^0k;'$+gkY"FY`8(Ea/sJnF;OCu
+eWr_t,>@76c1%&SnCL#4VXN[hORr0+GiIrZ_KJ(Ejh*-?ohUHm_.&7nC]B=U>#phU
+`0a"u%5W$:09&.En)8Cu=SiQ^I[sM(-BHeslQ8cpl+SQW:04!/7r:RuCsHWUm-SWe
+_r]&"dMs?+?&1Wj&(if[bk[gLV<B9#3J3AsX4T?u?]@3Qn-Hf&/D./AZ/O"g6jDnX
+\N1S?\aHkFGE"g.W\[$*mH&@&ecp6p=P1YLBC<*q]A-cY`%DfCTC:4K&FjN/jn,gV
+DNnXP@-NkecB?5<=7R$$^:\gA.MgQqZ=lp<FQrAeN24`c32Z;Z;AZKk6Y@X4cU#;m
+LZoVH?0C,'Y@0NiAnulPp.3a^F.Y78pNcc3g;>D$nD!Z`^c1VjYAWdA7aDNiou9$W
+fbh6d\UL"@f-hWK-FVto^0:,a&MLqelVDoRoh_g5Zen&$jO&8,qMf(bhq67BGJRb?
+)c:aP4=*)_3qVZ+Nm6HW(5X2u]2mkESDh<J7!5307a*CZ?!Ef"?Uua,Cc_;t\ZX5%
+^ErS\8Y<*OX6+QW\\7E`A5D1`as6`pk,sYLLO&\\kLCV@Z]bc,EX3bi'2VaVHh*m`
+/@CaH\'+WQ[>WUK[,,E`%P6\G1M=hq/N`RjF;J$1gj<IX*@tAQl..Vl6PhAoS=;)f
+DUp_T*,:]-$h<3&Kl-k*%r.a$_p/0F\]3^8]"Uo\q$]/#qjK[Ng$8fkmd]X-J:/CY
+,BK'lq3T!WlC:r-KqqJ.4oN!'cre5X6@8^j""%8OQ$1m\Lc.H+n$1s"HWW<?O06B,
+O']b:01EToHXis0GJ2GSqt*8)2Tqf.+h;/sdUA?EQ*:9&f[k:inWQ+Z1"R@/(2KMs
+VssQmNuZn6485sLruT?'\j"%MKrtk>#*FtL07%o;Zes&pZ_lp`=Q3EF@di#.?/K:U
+=0e4i[YrIIcA1$7jb_ANp1:T^\mCiO@l+"&bXu5:D^jhlW<9L+]GNNgXnBC,S`J-W
+);fCOh2;X=KO4uqGLaBV%a[;AMFZP':gF/LO4a2r@LW=m>oW[q'8mNRb@0gQE3+"l
+:S@#@N.oHDg_u*\<iP;nb$`KqZ.FPsT)DIkINZ\;VX+^dmBh0omBc+g;CBcMLn7JX
+T04%RG[us6CN7F>h,\0*cLs+HFA+;EofdfBQ!/fHXE!hoIFrQG'0"NL.Ws0#r3I7^
+*tKF]X8<1[hQ4aRkMq$<`oOW'qhIs/LR]meP\WZHVrmd@IBh\FIN$g7-%kh%-A+*o
+_8^2;g@_Ap@9OF&B1[Kb(5MSrPaS2B9]HmkFNrB?T2d6kc1F!>lGpm-G?>7qEN/)>
+ki#>;:_*"+dk7[3iUF#6l!#M?X7js-o,V*YMXL@Bh:L3M<4CA"GkW7hG1lJQ3`4Y5
+D:MAt]@S`M5AZ`*f#(m&SEa@`_V)Xt?&gXVZuHSr7d$o(7pmtNa4FA8U;q!8F++o'
+-&]s?)],P]>\\R+[Pdq>gQT_9==[-t6h2e\8TY_1h#GlM97(M5^8&.5Y0(7d<h>bN
+2.L-k@td9k0CFb=\OXEq4@0pmIl1kgE:,`YSDU_6CjG*OAZsLd?F5JX(:Dg3eMr#k
+]mY]!l8(I3rf!]j.sk6T=dGNu6u.&%Wr8L6L7RJM\(4k>Cic)TU$m[T2RR(9bN+o0
+[@j;!O77)o52%JjX_teTjrRq@-5"iihcKR94bi[Bl?X64e(6MD,F73^(JaXr3mdQB
+gqq0:*3SCmBs4jtm%./$qa5;mhR.[#cYiUE&bf^t7=<G2T5?4shds(I4(Ue3kNOPM
+S<^c%H0mA&B6g2OVf6I4S,#G:amSmj>m(%YI=/Qu;a!Pbk1XQt8*iFp.1\O(o4upb
+kH-emI73&@rYK]c12,PrI\+54o/Ku*7S#feS\.(U-\ehf>frcSa%WVcdq<$o4a>cF
+3G`9XK6Wo7dB3Li9c\!NQ5[@t)kTe@[816Xib!%K>>K6n]6S5`b/=eNUX</j?[>9+
+Z7jPQcM#DK?H3>(h=p*&_]c\#*0spqg2DTT%qj_D=c%1)?3\_hHo/cE9'.7eWJ_U/
+SC+Z$ZgI]jm*!;]KLL6:Z7l7<9g>:3EB.KlN)=V4^pZ#5Atep3:O<`+P=$V!U5sO9
+f,s\J*R0B6brIn@p<Y5>Y]](!K0t#ScCOq5n58%HF+WiGUMWa9fA\I^](GBo]t8G^
+B::n(eJZ_HoW2%W2gUt\]?<&uXpp[cY-hMiU`Q==$JW[H?OkYQB&_t_?#5\0'!X7k
+B!%,-XFcL(9gp.dgraIkQi5"!g#b/;m$">]md%IT2fP^VBUtp"Tt53kRm?ER^LO63
+N1%W83=>m1mQ_c;>H<nPfB=5sm[^\iiK3Mi^7Cm5opP,!m%rmMrUb&8p4%ql)ggl5
+Gea3OI)!cSq1YuL5o-r[I<jY@G9qQ^Q5\MZ^.oc4j4!HcXi&lLh1s<7YK>kS3-Y.j
+iY=JleeWU[a^djB\q41>*0Ps4S3#Q`=Wup/k,mnH:p[%N55FPZkIB_AG]A1h[[H/'
+_sZ\u?^:3mi9@NsV)N=oLN3k"WkRS^P@1SYp#k]u3UR>^4^(Dmc0t-b^##9i[&<bV
+Qd;Y3*5T&!a5-a(`lu_PJ-2r_r0Wd;FGM`;pe7s;i?QXsK=Oap*p$XRbPfqI3Cf_5
+CMkJGmF/5TTJJM@*bR_9bY4!W)^/j/\9;@;[pc_JkIuF[P?SNRRh+$;E"m-[EQ_hC
+can&#:CYo(I^C)XK10.g+a2+USbC.3*;9'H]2m"\gpp1>><]5cSFI33SEJZ0I7$$=
+=[^P_;4KAjp+LW*aIE0SoT_IWV;X,gjHdp,g@sP*I>lh@j,ucG/N2TR*4hFO<oAX;
+l?W)*>FbT0\lL6BZT+-P?0c>)jR<g?-Za02/(nt,S3bFV3lh4Im^N/<HY`Y%c7R1]
+*;$?m-VE(GYaGE`rJB0AIDc6@AnoSCD-e6`^`du73TTqnG9YAKq*_D3L[[R3U?hu2
+iQA159]$gJoE+49d^iK#hI/iRgq1Bc7'OkeET\8h`Z"%ZR*+*_jG[AcAA>)/4.H>m
+GK;uEjH/[YfC1@]r?U")UlE[tc$F3t%>/M(V%:t-fOX=N[3'-LeAo+;3Nnr_r."9G
+r3!8(p,[Tk_G!YXk*jbcF,sGKJ+g$dmTl=%F67Gam-Skc>rZomY-SQm?\;'3eo3O%
+l]9++F)/Ohl]'t3am\8[95AtoZRgkA9FdW,aCj)hboU]mg)L`tr4(<-q+\s)PP=6&
+_?f<3]7N6,r*sZlF^4sb2<G%$-Sd=BgV4c"E)#hRfZT+gP='FLT/"nN(R&jB3Yi36
+m$bKi`;.);p5@(g1O?7+CPR2**0rWYoJeCVIjg5X^#D'H$?+Or%(:H[CBUk/eg[R#
+EK,"@Em:=cckl0O$ZNm=%VP^bkWN\r=_l2`Pf0KfQd'f2D/;E/<n?bf]Cm_j:3)//
+aPZF:mZ.6<fBkU\M"@+VG,D8)FR;5*qj2A`YeB\_Ac%kR.XSjl60Di@Vh2Jk^LR!/
+%(>u)E]7:\o82255olQ)&9,I26!n"qiIH!qmg<^jep?bpc0VI;S`Yj<SX]f6C:Kk$
+*YeL:i3;R=Z$TF6D:b*5)fRBr(Z`*gY_cAaGq]V!E9J2t@P2at?U$^MR.'&4I+[3r
+ZX.mK//k;1O+bg=Hg!,(h/OI0"5CKc4PT4m_8/%5cG*j*W/&is6-gH1MK;2r&Iu$p
+SG*D+h(33>A53\:3Ci5sN+q&"\)47Pem(.ZGO8Hu&&J_+!P/S,i0Vc*Vd[t57<s:4
+`PJ7]n@9Srqrp,TqD!?]m:59Ar"%)47GjZLHWTC.[.XOgc3tK?A".gkA"V0=MKML#
+k)<<e1"p6BC&PCH@^at&fi@2!S>Y>7+jMl)f6,of7h7ND03l-4G<gYn@d6DJGU6t)
+CXpN_>oP[4^?p8nYc",m`p,e^m;6>TWUGIB^'FMfgck`sf:Y;`m!U9uF0;R!Bg/:t
+\G#Fb,b@g`Aul%A[o=Hsh]<jJS`ou#fn4p#B!_/hbF<d<k^hgA)10Z9aRqg:9>'H-
+as+Ql$omQ!kF07reh#P858sLmm=%]IL]0sGYR+PFGLUD[mu4F2J&pqR?fg(37l[i\
+f\0rt[D&6NHOd_:nV#>IqM<cYY#Bdr\3Z1LcX?%d3Y)\1/8AqFY;.boZNdM%ol6Aj
+"mf<:Uoouq]<[6!9Et9=QdpL$]EZU9i:CAuZfa1BTA$\kGLb@Q[oLQ'=74P5Ice0;
+_cPMqo*EtP=<gkq5%e0WSj]a?,M\K-_YAqTcUL.g>H*O^Q18(qUjKr=^)jHAL'_Lk
+3GX0*37m*>L6LBt=C*&IH4^A.*Q0Qai&(Ones?ociKLMgBD0fd+5K([ErOUA[D/-m
+i7$QcT9]Gups#0pq[@u-?^*``]:O-6&_FJ9kb;9J#Jen*0it2i[Ni?nfcU**_5E6$
+Mm0JDWc:FIP3^5$&QW9@I>$EMq[@\oXL)=8]*t_lLJKbIJ$PuE?6?T2Roj!*Pjch?
+kC;RmR2<3NU:oUSbaVjETBiBZ+*##3^+j(#oc+r2gXb&(S9smuqc`P.pD.l>UNQjJ
+ZONArZlP(hYJM$pp6n7m>,TjLb]mB@gQS+2e\CH%%jcRj+7IV%r"%qs11o3<m5)Ic
+k#:+)9RW9Jo)%8uE&]e+UM\R/B)_Pi3]kb-.aGGEcbZ-@B"\=eDbFEOF7$ZIB"lIe
+[JrS*B`+AX]$-<"$kJBUF)G(P00e.2O*g6'3N[4$h/"\EIB7iDIa5L?jR[F.@UG.0
+i,F/E7QlE2iHKJ]?fp(V=m#rJ6d<<i1N.Y.eW8jIH1'6E#L33-k/<*tFWu>8lC(ee
+1A9"H:H7HSXOGbnoe*G2-f[."r=rfXluV<sg3lVuh:Q91pD$R&\S8:kF+)"!c.%S/
+f%QU=2KTFTmIlq9pct,A@V-PA$s&L\M7\drIX?2]a5K*>J'HWe)->tAF8q:go_iE3
+Vu*NcpeL$brDi0Eju1J`g?W@C#Q?K-lquJ(m'sOLqWE(P3X!4rc'9a@<SUMo`VT7g
+`f)D=FF=)]aGJ]a^0,isIU_ST\DqtRUikXclTCN(X*(r'B0KX;nFoDr6Hn3H'?Zir
+.ddPWCX,U4?FqrO[3N1_a`5S!5#G[YXl\f0-:c\M7:>-3aGE%3XQs3QGG!:/pX`Tp
+/QG$In$"UFF8q<=]I2<iI=AEo-1O-%59]Wrk#6?I''HX=n1Ac(ir.i.4N$cG]s2+n
+hm5e!:W$,C7_;sXD-l:saGCnT]'c!Pih8D;Lhd(K^/O>?Lc.K\>TQB5Z7;JgJ&H?2
+LjgRlbIO#6n[(FnhlbR(qcsGr4T@?I/'%AIlM:"Oeoa46j@(+S\96U`ho/cT1OJSl
+p)`2lh+)W!R[IsNiUEJicfPK%&^ZZmChLQFSgF6_mHgUa-Ehjs+-2g)O#B,F=egD\
+SB+!tX6jK'ce^n51PbmIn&L^e=VcK(]bC1=kW?;-48/lf/Zoh$@iqP\8re6.;m5<,
+MM'i$?7t<Ckidf>k,5mWP5?B0I`itp[lA0HreNY:+"_j5(-N;:Ym3GeeE9go%<DSs
+kI<Y2aO/^oVJf51F8fV=r[QKtS[\9*^L&`MGjrKJ0m?p1ooGki?@2Y/a.e(NdAB\6
+6kd`Qr1-r9qIuP]ZL7SIEA20?O;%BB(k.f;"rUs55mA3;O?j'gA<9(]).\gp"rUs5
+5mA3;O?j'gA<9(]).\gp"rZK0jo5G)m9`'
+~>
+grestore
+showpage
+
+%%EndDocument
+ @endspecial Black 1045 4618 a Fe(Figure)25 b(6:)p 0
+TeXcolorgray 1438 4618 a
+SDict begin H.S end
+ 1438 4618 a 0 TeXcolorgray 0
+TeXcolorgray 1438 4618 a
+SDict begin H.R end
+ 1438 4618 a 1438 4618 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.6) cvn H.B /DEST pdfmark
+end
+ 1438
+4618 a Black Fe(Image)g(containing)e(alpha)i(channel)p
+Black Black 257 4849 a(Best)d(quality)f(is)g(achie)n(v)o(ed)f(when)i
+(passing)e(the)i(PNG)g(\002le')-5 b(s)21 b(alpha)h(channel)f(to)g(the)h
+(PDF)g(\002le)257 4969 y(by)j(running)p Black Black 377
+5168 a Fa(png2pdf)58 b(-a)h(-m)h(255,128,128)d(-s)i(*png)g(x4.pdf)257
+5367 y Fe(The)25 b(result)f(can)i(be)f(seen)g(in)f(\002gure)p
+0 0.5 0 TeXcolorrgb 1527 5368 a
+SDict begin H.S end
+ 1527 5368 a 0 0.5 0 TeXcolorrgb
+-1 x Fe(6)p 0 0.5 0 TeXcolorrgb 1577 5299 a
+SDict begin H.R end
+ 1577 5299
+a 1577 5367 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(figure.6) cvn H.B /ANN pdfmark end
+ 1577 5367 a Black Fe(.)p Black 1851 5637
+a(9)p Black eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf.svg b/obsolete/support/png2pdf/DOCU/png2pdf.svg
new file mode 100644
index 0000000000..b89c20219e
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf.svg
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+>
+<svg width="6.63in" height="2in" viewBox="0 0 477 144"
+xmlns="http://www.w3.org/2000/svg"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+<title>png2pdf-logo.fig</title>
+<desc>Converted by fig2vect, see http://fig2vect.sourceforge.net</desc>
+<defs>
+<linearGradient id="GH1" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="477" y2="0">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.0190" stop-color="white" stop-opacity="1" />
+<stop offset="0.4381" stop-color="white" stop-opacity="1" />
+<stop offset="0.4571" stop-color="white" stop-opacity="0" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GV1" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="0" y2="144">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.0645" stop-color="white" stop-opacity="1" />
+<stop offset="0.5806" stop-color="white" stop-opacity="1" />
+<stop offset="0.6452" stop-color="white" stop-opacity="0" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GH2" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="477" y2="0">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.5429" stop-color="white" stop-opacity="0" />
+<stop offset="0.5619" stop-color="white" stop-opacity="1" />
+<stop offset="0.9810" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<linearGradient id="GV2" gradientUnits="userSpaceOnUse"
+x1="0" y1="0" x2="0" y2="144">
+<stop offset="0" stop-color="white" stop-opacity="0" />
+<stop offset="0.3548" stop-color="white" stop-opacity="0" />
+<stop offset="0.4193" stop-color="white" stop-opacity="1" />
+<stop offset="0.9355" stop-color="white" stop-opacity="1" />
+<stop offset="1" stop-color="white" stop-opacity="0" />
+</linearGradient>
+<mask id="MH1" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GH1)" />
+</mask>
+<mask id="MV1" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GV1)" />
+</mask>
+<mask id="MH2" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GH2)" />
+</mask>
+<mask id="MV2" maskUnits="userSpaceOnUse" x="0" y="0" width="477" height="144">
+<rect x="0" y="0" width="477" height="144" fill="url(#GV2)" />
+</mask>
+<style type="text/css"><![CDATA[
+@font-face {
+font-family: 'Nimbus Roman No9 L';
+font-style: normal;
+font-weight: normal;
+src: url("file://g:\p\urw-svg/n021003l.svg#NimbusRomanNo9L-Regu") format(svg);
+}
+.cA {
+fill: none;
+stroke: #000000;
+stroke-width: 0;
+}
+.cB {
+fill: none;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cC {
+fill: #D10000;
+stroke: none;
+}
+.cD {
+fill: #FFD600;
+stroke: none;
+}
+.cE {
+fill: #000000;
+stroke: #000000;
+stroke-width: 2.7;
+}
+.cF {
+font-family: "Nimbus Roman No9 L", serif;
+font-style: normal;
+font-weight: normal;
+font-size: 92;
+text-anchor: middle;
+fill: #000000;
+}
+.cG {
+font-family: "Nimbus Roman No9 L", serif;
+font-style: normal;
+font-weight: normal;
+font-size: 92;
+text-anchor: middle;
+fill: #FFFFFF;
+}
+]]></style>
+</defs>
+<!-- <rect x="2.25" y="2.25" width="472.5" height="139.5" class="cA"/> -->
+<!-- 1 -->
+<g mask="url(#MH1)">
+<g mask="url(#MV1)">
+<rect x="0" y="0" width="218.25" height="92.25" class="cD"
+ />
+</g>
+</g>
+<!-- 2 -->
+<g mask="url(#MH2)">
+<g mask="url(#MV2)">
+<rect x="258.75" y="51.75" width="218.25" height="92.25" class="cC"
+ />
+</g>
+</g>
+<g>
+<path class="cB"
+d="M366.75,42.55
+C366.75,42.09 366.75,41.61 366.75,41.11
+C366.75,37.55 366.75,35 366.75,32.25
+C366.75,29.5 366.75,26.12 364.26,22.81
+C361.76,19.5 357,16.72 348.75,15
+C340.5,13.28 327.13,12.29 311.92,11.77
+C296.71,11.25 281.75,11.25 270.75,11.25
+C259.75,11.25 251.16,11.25 240.51,11.25
+C229.85,11.25 222.75,11.25 222.75,11.25
+"
+/>
+<polygon class="cE"
+points="371.07,28.15 366.75,42.55 362.43,28.15"
+/>
+</g>
+<g>
+<path class="cB"
+d="M110.25,96.75
+C110.25,96.75 110.25,99.34 110.25,102.89
+C110.25,106.45 110.25,109 110.25,111.75
+C110.25,114.5 110.25,117.88 112.74,121.19
+C115.24,124.5 120,127.28 128.25,129
+C136.5,130.72 149.87,131.71 165.08,132.23
+C180.29,132.75 195.25,132.75 206.25,132.75
+C217.25,132.75 225.84,132.75 236.49,132.75
+C241.93,132.75 246.44,132.75 249.55,132.75
+"
+/>
+<polygon class="cE"
+points="235.15,128.43 249.55,132.75 235.15,137.07"
+/>
+</g>
+<text x="366.75" y="128.25" class="cG"
+>PDF</text>
+<text x="110.25" y="78.75" class="cF"
+>PNG</text>
+</svg>
diff --git a/obsolete/support/png2pdf/DOCU/png2pdf.tex b/obsolete/support/png2pdf/DOCU/png2pdf.tex
new file mode 100644
index 0000000000..16d7bda9f9
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/png2pdf.tex
@@ -0,0 +1,471 @@
+
+% This file must be processed by pdfLaTeX three times.
+% In the next step run
+% ppower4 png2pdf.pdf docu.pdf
+% and view docu.pdf
+
+\documentclass[12pt,a4paper,titlepage]{article}
+\usepackage{lscape}
+\usepackage{ifpdf}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage{mathptmx}
+\usepackage[scaled=.92]{helvet}
+\usepackage{courier}
+\usepackage{array}
+\usepackage{enumerate}
+\usepackage{longtable}
+\usepackage{latexsym}
+\usepackage{varioref}
+\usepackage{color}
+\ifpdf
+\usepackage[activate=normal]{pdfcprot}
+\usepackage[pdftex]{graphicx}
+\usepackage{epstopdf}
+\usepackage{background}
+\usepackage{pause}
+\pdfcompresslevel=9
+\usepackage[
+ pdftex,
+ a4paper=true,
+ pdftitle={png2pdf},
+ pdfsubject={Using the png2pdf program},
+ pdfauthor={Dipl.-Ing. D. Krause},
+ colorlinks=true,
+ linkcolor=black,
+ pdfpagemode=None,
+ pdfstartview=FitH
+]{hyperref}
+\definecolor{bgred}{rgb}{1.0,0.501961,0.501961}
+\definecolor{bgblue}{rgb}{0.8,0.8,1}
+\else
+\usepackage[dvips]{graphicx}
+\DeclareGraphicsRule{.png}{eps}{.bb}{`bmeps #1}
+\usepackage[
+ dvips,
+ colorlinks=true,
+ linkcolor=black
+]{hyperref}
+\definecolor{bgred}{rgb}{1.0,0.501961,0.501961}
+\definecolor{bgblue}{rgb}{0.8,0.8,1}
+\fi
+\usepackage{listings}
+\lstset{numbers=left, numberstyle=\tiny, numbersep=5pt, basicstyle=\small}
+\lstset{showstringspaces=true}
+% \setlength{\parindent}{0cm}
+\author{Dipl.-Ing.~D.~Krause}
+\title{The png2pdf program}
+
+\begin{document}
+\begin{sloppy}
+\maketitle
+\cleardoublepage
+\ifpdf\pdfbookmark[1]{\contentsname}{tocanc}\fi
+\tableofcontents
+\cleardoublepage
+\section{Overview}
+The png2pdf program can be used to convert \textsc{png} image files to
+\textsc{pdf} files.
+If the \textsc{png} file contains an alpha channel one can mix the image
+against a background color and/or create a \textsc{pdf} image mask or
+\textsc{pdf} transparency data.
+
+The program is mainly intended for pdfLaTeX users who want to
+create flyers or posters having colored background.
+\clearpage
+\section{Installation}
+\subsection{Installation from source on \textsc{unix} systems}
+\subsubsection{Prerequisitions}
+The following software packages should be installed before
+you start to install png2pdf:
+\begin{itemize}
+\item \textbf{zlib} (required)\\*
+A general purpose compression library\footnote{\url{http://www.gzip.org/zlib}}.
+\item \textbf{libpng} (required)\\*
+A library for dealing with \textsc{png}
+images\footnote{\url{http://www.libpng.org/pub/png/libpng.html}}.
+\item \textbf{libbz2} (recommended)\\*
+Another compression library\footnote{\url{http://sources.redhat.com/bzip2}}.
+\item \textbf{dklibs} (required)\\*
+Dirk Krause's libraries\footnote{\url{http://sourceforge.net/projects/dklibs}}.
+\end{itemize}
+The png2pdf software can be retrieved on the SourceForge project
+website\footnote{\url{http://sourceforge.net/projects/png2pdf}}.
+Documentation is available via the project homepage also hosted at
+SourceForge\footnote{\url{http://png2pdf.sourceforge.net}}.
+\subsubsection{Installation procedure}
+\paragraph{zlib, libpng, libbz2 and dklibs}~\\
+These libraries are installed as usual by running
+\begin{lstlisting}
+ ./configure
+ make
+ make install
+\end{lstlisting}
+\clearpage
+\paragraph{png2pdf}~\\
+Make sure the environment variables \textsc{cflags} and \textsc{ldflags}
+are set properly to point into the ``include'' and ``lib'' subdirectories
+of the installation directories for the libraries listed above. The
+\textsc{cflags} variable should contain something like ``-I/usr/local/include'',
+the \textsc{ldflags} variable ``-L/usr/local/lib''.
+
+Both variables must not point to the directory created while unpacking
+the dklibs source archive and used to build dklibs! Reason: There are
+two different versions of the ``dkconfig.h'' file. An initial version is
+shipped with the dklibs distribution, it includes the ``config.h'' file
+created by the configure script. During installation a final version
+is written to ``/usr/local/include/dkconfig.h'', this file must be used
+by applications linked against the dklibs libraries. If the initial version
+is used instead, it loads the ``config.h'' file but finds the application's
+file instead of the file created for the dklibs project. Many
+\#define instructions will be missing in this case!
+
+After making sure to have the correct values for \textsc{cflags}
+and \textsc{ldflags} run
+\begin{lstlisting}
+ ./configure
+ make
+ make install
+\end{lstlisting}
+to install the software.
+
+\subsection{Executable setup for Windows}
+For Windows users there is a setup.exe available via the
+dklibs project website
+\footnote{\url{http://sourceforge.net/projects/dklibs}}.
+In the file releases section you find dklibs-win32-*.*.* containing
+two files dklibs-win32-*.*.*-*-setup.exe. Choose the highest version
+number for the recent version. The ``user'' file installs the dklibs-based
+software and documentation, the ``dev'' file also installs all used sources.
+\emph{Note:} The ``dev'' file is significantly larger.
+\clearpage
+\section{Usage}
+\subsection{Common dkapp options}
+The program uses the dklibs library set for preferences handling,
+localization, logging etc.
+At program startup the permanent options are read first before
+processing command line options. The options used are the result
+of combining the permanent options and the command line options.
+\subsubsection{Help and version information}
+\begin{itemize}
+\item -h\\*
+-\/-help\\*
+shows a help text.
+\item -v\\*
+-\/-version\\*
+shows version information.
+\end{itemize}
+\subsubsection{Permanent options handling}
+\begin{itemize}
+\item -c \textit{options}\\*
+-\/-configure \textit{options}\\*
+configures permanent options (preferences).
+\item -u\\*
+-\/-unconfigure\\*
+removes all permanent options.
+\item -C\\*
+-\/-show-configuration\\*
+shows the permanent options.
+\item -r \textit{options}\\*
+-\/-reset \textit{options}\\*
+overrides the permanent options for this program invokation and
+uses the command line options only.
+\end{itemize}
+\subsection{Png2pdf options}
+\begin{itemize}
+\item -p 1.2\\*
+-p 1.3\\*
+-p 1.4\\*
+-\/-pdf-level=1.2\\*
+-\/-pdf-level=1.3\\*
+-\/-pdf-level=1.4\\*
+chooses the \textsc{pdf} format version.
+\item -m \textit{r,g,b}\\*
+--mix-background=\textit{r,g,b}\\*
+sets a default background color for color mixing. This background
+color is used if the \textsc{png} file does not contain a background chunk
+or if the -s option is used (see below).\\*
+-m-\\*
+--mix-background=-\\*
+turns explicit mixing off and leaves this up to the libpng library.
+\item -s\\*
+-\/-mix-specified\\*
+ignores the background chunk contained in the \textsc{png} file. The program
+uses the background specified in the -m option (see above) regardless
+whether or not the \textsc{png} file contains a background chunk.\\*
+-s-\\*
+-\/-mix-specified=off\\*
+disables this behaviour.
+\item -a\\*
+-\/-transparency\\*
+passes alpha channel data from the \textsc{png} file to the \textsc{pdf} file. This
+feature is available for \textsc{pdf} format 1.4 only.\\*
+-a-\\*
+-\/-transparency=off\\*
+denies writing of alpha channel information to the \textsc{pdf} file.
+\item -i\\*
+-\/-image-mask\\*
+converts the alpha channel from the \textsc{png} file into a \textsc{pdf} image mask.
+This requires \textsc{pdf} format 1.3 or above. By default all pixels having
+opacity 0 are masked out. The -l option (see below) inverts the
+level so only pixels with full opacity are drawn, all others are masked
+out.\\*
+-i-\\*
+-\/-image-mask=off\\*
+disables image mask generation.
+\item -l\\*
+-\/-invert-levels\\*
+can be used in conjunction with -i to invert the image mask level.\\*
+-l-\\*
+-\/-invert-levels=off\\*
+switches back to normal imake mask level.
+\item -t\\*
+-\/-alpha-transparency\\*
+indicates that the alpha channel contains transparency data.\\*
+By default alpha channel data is interpreted as opacity.\\*
+\item -t-\\*
+-\/-alpha-transparency=off\\*
+switches back to default behaviour (alpha channel is opacity).
+\item -b\\*
+-\/-fill-background\\*
+can be used in conjunction with -a or -i to fill the image are with
+the default background color before applying the image.\\*
+-b-\\*
+-\/-fill-background=off\\*
+turns background filling off.
+\item -n\\*
+-\/-interpolation\\*
+adds an entry to the image dictionary indicating that viewers should
+attempt an image interpolation to obtain smoother transitions.\\*
+Use with care. Image interpolation is not supported for all output
+devices. Different viewers may use different algorithms. So the
+representation of the image may vary depending on the viewer software
+and output device.
+\item -f\\*
+-\/-file-time-check\\*
+inspects the modification time of source \textsc{png} and destination \textsc{pdf} file
+when png2pdf is run on a directory.\\*
+-f-\\*
+-\/-file-time-check=off\\*
+turns modification time inspection off (and forces a conversion for
+all files).
+\end{itemize}
+\clearpage
+\section{Examples}
+\subsection{Overview}
+\begin{figure}[ht]
+{\centering
+\includegraphics[width=5cm]{fbt.png}
+\caption{The original image, \textsc{png} file directly included by pdf\LaTeX{}}
+\label{img:fbt}
+}
+\end{figure}
+In the examples section we use the image fbt.png. This image contains
+a clock showing 5 before 12. The hour dots and the center of the clock
+are fully opaque, the white center becomes more and more transparent when
+moving from the image center to the image borders.
+See figure~\vref{img:fbt}.
+The image was included using
+\lstset{language={TeX}}
+\begin{lstlisting}
+ \begin{figure}[ht]
+ {\centering
+ \includegraphics[width=5cm]{fbt.png}
+ \caption{The original image}
+ \label{img:fbt}
+ }
+ \end{figure}
+\end{lstlisting}
+\lstset{language={}}
+The LaTeX source must be processed using pdfLaTeX three times
+to make sure to have all labels and bookmarks recognized.
+The next step in processing is to run ppower4 to have the background
+effects.
+Among others the packages color, ifthen, ifpdf, background and pause are needed
+for the examples.
+\clearpage
+\subsection{Explicit background color}
+\begin{figure}[ht]
+{\centering
+\ifpdf
+\includegraphics[width=5cm]{x1.pdf}
+\else
+\includegraphics[width=5cm]{x1.eps}
+\fi
+\caption{Now mixed against white background}
+\label{img:b2}
+}
+\end{figure}
+Using the commands
+\begin{lstlisting}
+ bmeps -p2 -c -er8 fbt.png x1.eps
+ png2pdf -m 255,255,255 -s fbt.png x1.pdf
+\end{lstlisting}
+we create an EPS and a \textsc{pdf} version of the image.
+The image is included using
+\lstset{language={TeX}}
+\begin{lstlisting}
+ \begin{figure}[ht]
+ {\centering
+ \ifpdf
+ \includegraphics[width=5cm]{x1.pdf}
+ \else
+ \includegraphics[width=5cm]{x1.eps}
+ \fi
+ \caption{Now mixed against a white background}
+ \label{img:b2}
+ }
+ \end{figure}
+\end{lstlisting}
+\lstset{language={}}
+\clearpage
+\pagecolor{bgred}
+\subsection{Colored background}
+\label{sec:unique-colored-background}
+\begin{figure}[ht]
+{\centering
+\ifpdf
+\includegraphics[width=5cm]{x2.pdf}
+\else
+\includegraphics[width=5cm]{x2.eps}
+\fi
+\caption{Now mixed against light red background}
+\label{img:b3}
+}
+\end{figure}
+Now we create a light red background using
+\begin{lstlisting}
+ \pagecolor{bgred}
+\end{lstlisting}
+The images files are created by running
+\begin{lstlisting}
+ bmeps -p3 -c -e8f -am255,128,128s fbt.png x2.eps
+ png2pdf -m 255,128,128 -s fbt.png x2.pdf
+\end{lstlisting}
+This image was included using
+\lstset{language={TeX}}
+\begin{lstlisting}
+ \begin{figure}[ht]
+ {\centering
+ \ifpdf
+ \includegraphics[width=5cm]{x2.pdf}
+ \else
+ \includegraphics[width=5cm]{x2.eps}
+ \fi
+ \caption{Now mixed against light red background}
+ \label{img:b3}
+ }
+ \end{figure}
+\end{lstlisting}
+\lstset{language={}}
+\clearpage
+\ifpdf\vpagecolor{bgred}\fi
+\subsection{Background effects}
+\subsubsection{Mixing against background color}
+\begin{figure}[ht]
+{\centering
+\ifpdf
+\includegraphics[width=5cm]{x2.pdf}
+\else
+\includegraphics[width=5cm]{x2.eps}
+\fi
+\caption{Still the same image mixed against light red background}
+\label{img:b4}
+}
+\end{figure}
+On this page we have a color effect, the top of the page is light
+red as on the previous page, the bottom is lighter.
+Including the images from section~\vref{sec:unique-colored-background}
+results in a visible rectangle background, see figure~\vref{img:b4}.
+Depending on the \textsc{pdf} level we can use we have two choices:
+\begin{itemize}
+\item Mixing against a constant background and adding an image
+ mask (\textsc{pdf} level 1.3 and above) or
+\item Passing the alpha channel to the \textsc{pdf} file (\textsc{pdf} level 1.4).
+\end{itemize}
+\clearpage
+\subsubsection{Adding an image mask}
+\begin{figure}[ht]
+{\centering
+\ifpdf
+\includegraphics[width=5cm]{x3.pdf}
+\else
+\includegraphics[width=5cm]{x3.eps}
+\fi
+\caption{Image containing image mask}
+\label{img:b5}
+}
+\end{figure}
+We create a \textsc{pdf} file containing an image mask by
+\begin{lstlisting}
+ png2pdf -i -m 255,128,128 -s fbt.png x3.pdf
+ cp x2.eps e3.eps
+\end{lstlisting}
+The result can be seen in figure~\vref{img:b5}.
+\subsubsection{Using alpha channel}
+\begin{figure}[ht]
+{\centering
+\ifpdf
+\includegraphics[width=5cm]{x4.pdf}
+\else
+\includegraphics[width=5cm]{x3.eps}
+\fi
+\caption{Image containing alpha channel}
+\label{img:b6}
+}
+\end{figure}
+Best quality is achieved when passing the \textsc{png} file's alpha channel to the
+\textsc{pdf} file by running
+\begin{lstlisting}
+ png2pdf -a -m 255,128,128 -s fbt.png x4.pdf
+\end{lstlisting}
+The result can be seen in figure~\vref{img:b6}.
+\clearpage
+\pagecolor{white}
+\subsection{Image interpolation}
+This section shows the impact of the ``-n'' option used to
+add an ``interpolate~image'' entry to the image directory.
+The logo was converted to \textsc{pdf} twice, the
+first example
+(figure~\vref{fig:non-interpolated-image})
+comes without image interpolation, the second
+examples
+(figure~\vref{fig:interpolated-image})
+uses interpolation.
+
+To view the difference zoom into the page to have the images
+filling the screen width.
+
+\begin{figure}[bh]
+{\centering
+\includegraphics[width=\linewidth]{png2pdf-logo1.pdf}
+\caption{Image without interpolation}
+\label{fig:non-interpolated-image}
+}
+\end{figure}
+\begin{figure}[bh]
+{\centering
+\includegraphics[width=\linewidth]{png2pdf-logo2.pdf}
+\caption{Interpolated image}
+\label{fig:interpolated-image}
+}
+\end{figure}
+\clearpage
+\subsection{Beamer presentation example}
+To embed partial transparent \textsc{pdf} graphics into beamer
+presentations, use ``\textbackslash{}usepackage\{graphicx\}'' and
+``\textbackslash{}includegraphics\{\ldots{}\}''.\\
+The example uses an image png2pdf-logo.pdf produced by
+\begin{lstlisting}
+ png2pdf -a -n png2pdf-logo.png png2pdf-logo.pdf
+\end{lstlisting}
+which is placed over a color gradient background.
+\lstinputlisting{beamtest.tex}
+The result can be seen in \href{http://png2pdf.sourceforge.net/beamtest.pdf}{beamtest.pdf}.
+\clearpage
+\end{sloppy}
+\end{document}
+
+% use ppower4
+
diff --git a/obsolete/support/png2pdf/DOCU/ppg01.png b/obsolete/support/png2pdf/DOCU/ppg01.png
new file mode 100644
index 0000000000..dfb23aa2d6
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg01.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg02.png b/obsolete/support/png2pdf/DOCU/ppg02.png
new file mode 100644
index 0000000000..bdd596152d
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg02.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg03.png b/obsolete/support/png2pdf/DOCU/ppg03.png
new file mode 100644
index 0000000000..39176dc9ce
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg03.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg04.png b/obsolete/support/png2pdf/DOCU/ppg04.png
new file mode 100644
index 0000000000..2b26a165f4
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg04.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg05.png b/obsolete/support/png2pdf/DOCU/ppg05.png
new file mode 100644
index 0000000000..c3bcb8109a
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg05.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg06.png b/obsolete/support/png2pdf/DOCU/ppg06.png
new file mode 100644
index 0000000000..f76607c19d
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg06.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg07.png b/obsolete/support/png2pdf/DOCU/ppg07.png
new file mode 100644
index 0000000000..192701e461
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg07.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg08.png b/obsolete/support/png2pdf/DOCU/ppg08.png
new file mode 100644
index 0000000000..1b58c65b05
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg08.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg09.png b/obsolete/support/png2pdf/DOCU/ppg09.png
new file mode 100644
index 0000000000..df430fd18d
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg09.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg10.png b/obsolete/support/png2pdf/DOCU/ppg10.png
new file mode 100644
index 0000000000..b5f00508e5
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg10.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg11.png b/obsolete/support/png2pdf/DOCU/ppg11.png
new file mode 100644
index 0000000000..3a797a2534
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg11.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg12.png b/obsolete/support/png2pdf/DOCU/ppg12.png
new file mode 100644
index 0000000000..8d4cdb44d8
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg12.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg13.png b/obsolete/support/png2pdf/DOCU/ppg13.png
new file mode 100644
index 0000000000..d31c0b10e6
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg13.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppg14.png b/obsolete/support/png2pdf/DOCU/ppg14.png
new file mode 100644
index 0000000000..7ecd406ddf
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppg14.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/ppgui.html b/obsolete/support/png2pdf/DOCU/ppgui.html
new file mode 100644
index 0000000000..94e88364fa
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/ppgui.html
@@ -0,0 +1,282 @@
+<html>
+<head>
+<title>png2pdf - Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft" rowspan="2"><img src="./png2pdf-logo.png"></td>
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">GUI</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+</td>
+</tr>
+</table>
+</p>
+</div>
+<div class="text">
+<h2>Png2PdfGUI - A graphical user interface to png2pdf</h2>
+<table width="100%" class="toctable">
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h3overview">Overview</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h3req">Requirements</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h3start">Starting the program</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h3appearance">Program appearance at start</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h3dir">Choosing a directory</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h3options">Set png2pdf options</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h3conversion">Running a conversion</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h3exit">Exiting the program</a></td>
+</tr>
+</table>
+<hr>
+<a name="h3overview"><h3>Overview</h3></a>
+<p>
+The Java application Png2PdfGUI provides a graphical user
+interface to the png2pdf program.
+To convert PNG files to PDF you have to perform the following tasks:
+<ul>
+<li>Choose the directory containing the PNG files.</li>
+<li>Set conversion options.</li>
+<li>Run png2pdf.</li>
+<li>Exit the application.</li>
+</ul>
+These main tasks can be performed using buttons in the button bar
+or using menu entries.
+</p>
+<hr>
+<a name="h3req"><h3>Requirements</h3></a>
+<p>
+To use the Png2PdfGUI you must have the png2pdf program installed.
+Normally this conditions is fullfilled because Png2PdfGUI and png2pdf
+are in the same package, so they are installed at the same time.
+</p>
+<p>
+A Java run-time environment (Java 5) must be installed. Previous
+versions are not sufficient to run Png2PdfGUI.
+</p>
+<hr>
+<a name="h3start"><h3>Starting the program</h3></a>
+<h4>On Windows systems</h4>
+<p>In a prompt box run
+<pre>
+java.exe -cp c:\programs\krause\lib\png2pdf.jar;c:\programs\krause\lib\dklibsj.jar Png2PdfGUI
+</pre>
+You possibly need to replace c:\programs\krause by another directory, depending
+on your decisions during installation process.
+</p>
+<p>Once you have verified the program starts correctly you can create
+shortcuts either on the desktop or in the start menu. For shortcuts you
+should use javaw.exe instead of java.exe.
+</p>
+<h4>On Unix/Linux systems</h4>
+<p>Run
+<pre>
+java -c /usr/local/lib/png2pdf.jar:/usr/local/lib/dklibsj.jar Png2PdfGUI
+</pre>
+to start the program.<br>
+</p>
+<hr>
+<a name="h3appearance"><h3>Program appearance at start</h3></a>
+<p>
+When running the program for the first time the main window looks like
+this:<br>&nbsp;<br>
+<table width="100%">
+<tr><td align="CENTER"><img src="./ppg01.png" width="341" height="171"></td></tr>
+</table>
+</p>
+<hr>
+<a name="h3dir"><h3>Choosing a directory</h3></a>
+<p>
+Use either the "Choose&nbsp;directory" button or the menu entry
+"Png2pdf&nbsp;/&nbsp;Directory" to choose the directory.<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg02.png" width="341" height="171"></td>
+<td align="CENTER"><img src="./ppg03.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+The directory chooser dialog appears.
+<br>&nbsp;<br>
+<table width="100%">
+<tr><td align="CENTER"><img src="./ppg04.png" width="817" height="407"></td></tr>
+</table>
+<br>&nbsp;<br>
+Navigate to the directory
+containing your PNG files and confirm the selection.<br>
+The new working directory is shown in the main window.<br>&nbsp;<br>
+<table width="100%">
+<tr><td align="CENTER"><img src="./ppg05.png" width="341" height="171"></td></tr>
+</table>
+</p>
+<p>You can also attempt to use drag'n'drop to drag a directory
+from Windows explorer or Nautilus into the Png2PdfGUI main window.
+For other Unix/Linux desktops it is not known whether drag'n'drop works,
+just try it.
+</p>
+<hr>
+<a name="h3options"><h3>Set png2pdf options</h3></a>
+<p>Use either the "Set&nbsp;options" button in the button bar or the
+"Png2pdf&nbsp;/&nbsp;Options" menu entry to set conversion options.
+<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg06.png" width="341" height="171"></td>
+<td align="CENTER"><img src="./ppg07.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg08.png" width="460" height="543"></td>
+</tr>
+</table><br>&nbsp;<br>
+In the "Png2pdf Options" dialog you have the following choices:
+<ul>
+<li>PDF format version<br>
+You can either produce PDF version 1.2, 1.3 or 1.4. Smaller version
+numbers will be compatible to older PDF viewers, larger version
+numbers require a recent viewer but provide more PDF features.</li>
+<li>Run in make mode<br>
+If make mode is enabled the program checks the modification timestamps
+of source and destination files. A destination file is up to date
+if the file exists and was last modified after the last modification
+of the source file. A conversion is only run for those sources for
+which there is no up-to-date destination file.
+</li>
+<li>Show file names while processing<br>
+The status message can either simply show "running" while a conversion
+is running or show the file name for each file currently processed.
+When processing directories containing many files showing each file name
+will show you that the program is still alive.<br>
+When showing file names a new png2pdf process is started for each
+conversion. If you choose to see the simple "running" status message one
+process is running on the directory doing all the conversions, this
+is faster than starting a new process for each file to convert.
+</li>
+<li>Image interpolation<br>
+This check box sets the image interpolation flag in output files.
+Viewer programs are recommended to do image interpolation, this is
+usefull if small images are scaled up.
+</li>
+<li>Alpha channel handling<br>
+Here you can decide how to handle alpha channel data if such data
+is present in a PNG file.
+<ul>
+<li>Input alpha channel expresses transparency<br>
+Normally you should leave this checkbox turned off because the
+alpha channel expresses opacity.</li>
+<li>Mix against a background color<br>
+You can choose to mix foreground color (the PNG pixel RGB value) against
+the background color depending on the opacity/transparency value of the
+pixel. The background color is contained in the background chunk in
+the PNG file.<br>
+Some PNG files containing an alpha channel do not contain a background chunk,
+so it is up to the user to choose a background color. The
+"Choose&nbsp;background&nbsp;color" entry allows to choose a default
+background color to use if no background chunk is available in the PNG file.
+Just click on the color-view rectangle to select a color.<br>
+If you always want to use the specified background color (you want to
+ignore background chunks from the PNG file) enable the checkbox
+"Prefer&nbsp;specified&nbsp;default&nbsp;color...".
+</li>
+<li>Create image mask<br>
+In addition to mixing -- or instead of mixing -- you can convert
+the alpha channel into an image mask. The normal mask level is
+to paint all opacity&gt;0 pixels and to mask out all opacity=0 pixels.<br>
+Enable "Use&nbsp;inverted&nbsp;mask&nbsp;levels" to paint
+only opacity=full pixels and to mask out all opacity&lt;full pixels.
+</li>
+<li>Write alpha channel to output<br>
+You can also write alpha channel data to PDF output (for PDF version &gt;= 1.4).
+</li>
+</ul>
+Note: Some of these options are not available for all PDF versions.<br>
+Some of the options are exclusive, i.e. you can not use mixing and
+alpha channel writing together (the opacity factors from the alpha
+channel would be applied twice: once in mixing and once by the PDF
+viewer when showing the file).
+</li>
+</ul>
+</p>
+<hr>
+<a name="h3conversion"><h3>Running a conversion</h3></a>
+<p>Use the "Run&nbsp;png2pdf" button from the button bar or the
+"Png2pdf&nbsp;/&nbsp;Run" menu entry to start a conversion.
+<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg09.png" width="341" height="171"></td>
+<td align="CENTER"><img src="./ppg10.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+While the conversion is running the status text color changes to red
+and the text changes to "Running". If you decided to see file names
+the text changes to "Processing&nbsp;...".
+<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg11.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+After all conversions are done the color changes back to green and the
+text changes back to "Ready".
+</p>
+<hr>
+<a name="h3exit"><h3>Exiting the program</h3></a>
+<p>Use either the "Exit&nbsp;the&nbsp;GUI" button in the button bar or the
+"Png2pdf&nbsp;/&nbsp;Exit" menu entry to exit the program.
+<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg12.png" width="341" height="171"></td>
+<td align="CENTER"><img src="./ppg13.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+</p>
+</div>
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2006/07/01</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
diff --git a/obsolete/support/png2pdf/DOCU/projbody.txt b/obsolete/support/png2pdf/DOCU/projbody.txt
new file mode 100644
index 0000000000..2843fb9eeb
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/projbody.txt
@@ -0,0 +1,83 @@
+<div class="text">
+<table>
+<tr>
+<td valign="TOP" width="20%"><a class="linkoutside" href="http://bmeps.sourceforge.net">bmeps</a><br>
+(BSD style license)
+</td>
+<td>&nbsp;</td>
+<td valign="TOP">Converter from PNG/JPEG/NetPBM to EPS. EPS levels 1, 2 and 3 supported.
+Support for run-length compression, flate compression and ASCII85-encoding.
+Alpha channel usage for mixing against background color or for image
+mask creation.
+</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://dklibs.sourceforge.net">dklibs</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Dirk Krause's libraries and related tools.<br>
+The libraries provide a portability layer to hide system differences
+from an application programmer and modules for sorted storage,
+logging and localization.<br>
+Additional tools are included (string table compiler, trace tool
+for C, C++, Objective-C and Java).</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://dktools.sourceforge.net">dktools</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">A set of various tools, including:
+<ul>
+<li>kls - ls clone, output column order configurable</li>
+<li>showhex - shows binary files in hexadecimal notation</li>
+<li>tabrep - filter, replaces tabulators by sequences of spaces</li>
+<li>tape - backup media managment program</li>
+<li>uid - searches for free user ID in a given range</li>
+<li>ksort - partial sort clone, can sort by floating point numbers</li>
+<li>klammern - reports brackests in source code</li>
+<li>dklogger - logger clone (mainly intended for use on Windows)</li>
+<li>addctrld - add a finishing Ctrl-D to a PS print job</li>
+<li>createp - password suggestor</li>
+<li>cona - file name corrector, removes spaces and umlauts from file names</li>
+<li>pdfcmb - changes media box entry in PDF files</li>
+</ul></td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://genau.sourceforge.net">genau</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Conversion program to produce a C state machine function
+from a table based description.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://hostsadm.sourceforge.net">hostsadm</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">A perl script to produce host related information (/etc/hosts,
+/etc/ethers, /etc/netgroup, /etc/dhcpd.conf and /var/yp/securenets)
+and a network documentation netdocu.tex from one file /etc/dhcpd.conf.src.
+</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://png2pdf.sourceforge.net">png2pdf</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Conversion program from PNG to PDF.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://fig2vect.sourceforge.net">fig2vect</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Conversion program from Fig to MetaPost, EPS and SVG.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://yanolc.sourceforge.net">yanolc</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Set of lpc/lpq/lprm/lpc clones for use on Windows.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://prqd.sourceforge.net">prqd</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Print quota daemon for use with <a class="linkoutside" href="http://www.lprng.com">LPRng</a>.</td>
+</tr>
+<tr>
+<td valign="TOP"></td>
+<td></td>
+<td valign="TOP"></td>
+</tr>
+</table>
+</div>
diff --git a/obsolete/support/png2pdf/DOCU/projects.html b/obsolete/support/png2pdf/DOCU/projects.html
new file mode 100644
index 0000000000..391fb7e4c7
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/projects.html
@@ -0,0 +1,129 @@
+<html>
+<head>
+<title>png2pdf - Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft" rowspan="2"><img src="./png2pdf-logo.png"></td>
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Other&nbsp;Projects</span>
+</td>
+</tr>
+</table>
+</p>
+</div>
+<div class="text">
+<table>
+<tr>
+<td valign="TOP" width="20%"><a class="linkoutside" href="http://bmeps.sourceforge.net">bmeps</a><br>
+(BSD style license)
+</td>
+<td>&nbsp;</td>
+<td valign="TOP">Converter from PNG/JPEG/NetPBM to EPS. EPS levels 1, 2 and 3 supported.
+Support for run-length compression, flate compression and ASCII85-encoding.
+Alpha channel usage for mixing against background color or for image
+mask creation.
+</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://dklibs.sourceforge.net">dklibs</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Dirk Krause's libraries and related tools.<br>
+The libraries provide a portability layer to hide system differences
+from an application programmer and modules for sorted storage,
+logging and localization.<br>
+Additional tools are included (string table compiler, trace tool
+for C, C++, Objective-C and Java).</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://dktools.sourceforge.net">dktools</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">A set of various tools, including:
+<ul>
+<li>kls - ls clone, output column order configurable</li>
+<li>showhex - shows binary files in hexadecimal notation</li>
+<li>tabrep - filter, replaces tabulators by sequences of spaces</li>
+<li>tape - backup media managment program</li>
+<li>uid - searches for free user ID in a given range</li>
+<li>ksort - partial sort clone, can sort by floating point numbers</li>
+<li>klammern - reports brackests in source code</li>
+<li>dklogger - logger clone (mainly intended for use on Windows)</li>
+<li>addctrld - add a finishing Ctrl-D to a PS print job</li>
+<li>createp - password suggestor</li>
+<li>cona - file name corrector, removes spaces and umlauts from file names</li>
+<li>pdfcmb - changes media box entry in PDF files</li>
+</ul></td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://genau.sourceforge.net">genau</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Conversion program to produce a C state machine function
+from a table based description.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://hostsadm.sourceforge.net">hostsadm</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">A perl script to produce host related information (/etc/hosts,
+/etc/ethers, /etc/netgroup, /etc/dhcpd.conf and /var/yp/securenets)
+and a network documentation netdocu.tex from one file /etc/dhcpd.conf.src.
+</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://png2pdf.sourceforge.net">png2pdf</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Conversion program from PNG to PDF.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://fig2vect.sourceforge.net">fig2vect</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Conversion program from Fig to MetaPost, EPS and SVG.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://yanolc.sourceforge.net">yanolc</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Set of lpc/lpq/lprm/lpc clones for use on Windows.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://fsnmp.sourceforge.net">fsnmp</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">A simple print filter for the LPRng print system, retrieves pagecounter value using SNMP.</td>
+</tr>
+<tr>
+<td valign="TOP"><a class="linkoutside" href="http://prqd.sourceforge.net">prqd</a><br>(BSD style license)</td>
+<td></td>
+<td valign="TOP">Print quota daemon for use with <a class="linkoutside" href="http://www.lprng.com">LPRng</a>.</td>
+</tr>
+<tr>
+<td valign="TOP"></td>
+<td></td>
+<td valign="TOP"></td>
+</tr>
+</table>
+</div>
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2005/03/22</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
diff --git a/obsolete/support/png2pdf/DOCU/projfoot.txt b/obsolete/support/png2pdf/DOCU/projfoot.txt
new file mode 100644
index 0000000000..f48f76d928
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/projfoot.txt
@@ -0,0 +1,14 @@
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2003/11/30</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
+
diff --git a/obsolete/support/png2pdf/DOCU/projhead.txt b/obsolete/support/png2pdf/DOCU/projhead.txt
new file mode 100644
index 0000000000..702121558b
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/projhead.txt
@@ -0,0 +1,29 @@
+<html>
+<head>
+<title>png2pdf -Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<!-- begin logo -->
+<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=96216&amp;type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"></a>
+<!-- end logo -->
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Other&nbsp;Projects</span>
+</td>
+</tr>
+</table>
+</p>
+</div>
diff --git a/obsolete/support/png2pdf/DOCU/sfl1.pdf b/obsolete/support/png2pdf/DOCU/sfl1.pdf
new file mode 100644
index 0000000000..577794b738
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/sfl1.pdf
@@ -0,0 +1,131 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.4)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 210 62 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+210 0 0 62 0 0 cm
+BI
+/W 210
+/H 62
+/BPC 8
+/CS /RGB
+/F [/A85 /Fl]
+ID
+GhVPU?#17r(!!FKm:1L>^>pFJ[$CL7LXrS2"e!dW#Utu@N56@"!fdp,<=.0.:_T\*
+%8BCK"q["%#nm^M<5?RUS&A(U'(Z]480B%-_hWeY^^4C&(LqN+nAjenqD:^[m-`Zb
+qZSm!FEP"JS_a,<brKF^b[+pn=g;u`KWJ:tTNLK\=R(XTSD?PZ.qiQE]fVGCB@+AH
+FDM+dW21G-Q9$Ob1b7#.g)BVWrb,s%Y.*VSdBk6UerQR%kNM\!CB'5:-`H&>Fe5J2
+ql"?J7?04FPP4_DTXj*KrVQ?@e^^eu8nr*UE(57TqcD2c:_G1;V9Z!'Q^?%i/a-7.
+hO`atUPl#AQB.hQ5GS'QlFc>K:#G@3etWsQbC&I#d*Q1gFARO!g0GF.(%N`4lNX/l
+ZkVC_EF(oH?(=tr<E3pSDC?49GM[l.A4]?!rj:0$U[HJdc8HJi!oX:G9"F9=Im/h8
+RWS/q^Zp5a4>lTuP>S^QqW:N<]eWKRJM8Z.%uEb+.k;n`7Lb/O'/VU*C-]p_!4.mY
+\iXKHQ7^fr/Bh4!=W+`,6mC=;fp92p"[/])LU41P$NBYZ]+&W;Vo5N<1o:51k!1i8
+Z?!'K7S\r=FhJJV'H59,AtqO^I>GnO/(f6Q(Nn)I:io,p7@(OGeX`*h8V;XK)oJdB
+T#T:QSn\\&(H>::\oq(QNJNs*%65h(0BBK4WVf#"a/+gToV)g"(MM@Meg='24./:G
+BI%(PoA6/e<CQIG*@F3ETE"n39O2b\f&X/q>7rZ`WaSoR)[,58B^qM#eA2o9QN.ts
+%u8%Q<ihB=JZ+2q.3B+'G'mfX@$KX)<T!?Y_`(AUpfOXUH@M2I[-(h]BaO9^<Si=2
+H[4-))X[YZ56N:Q0ri#QR/+kL')JC6dS[F<lo,8;h::2nlgO+2R.JRl2uBD2HXAl'
+g/D>,V$*_i8*#?Z(_n"[W&7;d[K'U4!eBgdKu[3@PH*S,msC$:WNY)*-b0D"*lX=_
+m<!0s"sJQ;,cW)Q!`n>Z*bST*%8?oRKsOF?\unc^PLS$3W7*(!?7kLY)S-``6[,3T
+>^]-jLL-F>dj'kA,;h6D4P(-tCC:E-C&qH&HF5b*U5g8a@9aJH/`;i(gYoRS=YlGV
+hMZ5"$/-5.!AZblK"T<F;"6oD(@b$(FZdfO4&5E+1?Ipk`u/pVDFI/MUjq[:gq?mA
+qZYklG&$fhX&ZPCp@;pM;RcDreP+f<n]rPc);*#F-_4*o<tl<kAc5G\##FU]#3r^P
+?"ZEs[CGXEB1]VUE,t"6VbX:o<t!*&NZm@kfO&]^Hr:bo2Sk^Xm>%9BlIq-=PGbRt
+^0]&TS-N\76pnphN=r+K9h`^/PO8N&Y#%[k5L+m<'^eRRFlM4k"NGSPP,D'EGOW`N
+mhRX#O]OK;.U7TeW`_mZ(PS44EJ@Ci7@b2?QH2bBWDc0<Y.E-5U%/gnr]Je-/Tn';
+<KDd@Y^oJ4eB,fC+.U="Ff_`@'m1F5U?0l;3n'm^3\O&0F]p#".&fg77[B[Jj\Zl$
+WMPW5_6XkR^WoDI@ap7<kgRDC%*3aAFtlp>A_pdXVs_?O"-O6'TWK-2lOI*3f0EW4
+\$->s>?J6ggR!"Ya2&F3nI`h$0?M9B6lkUYA>fTB4O&Z8j>,Y_LV2\WT&"WgVjU2#
+D(EtLilIXTl1=4O"t(U[p$^MSP-H@>>T;:u@p_Ane<+5]=\S,:U/"%hcM2pY9*3VR
+/oW1'h9C[$M4>he*S8dkSuG1:S]*B9-V5R[78D@0T/eIL9jlEd"^-W2Pb(9>K2RK-
+9U1<32hCIn,StOS`4q#VT&W%-Hn&+>e9-95EAGW*>hb[/[e!*\RARgE'7%h5<"6cO
+N"S3V5b&0p5FEYh.?Zab8>0B<".%!,oF]"]bje81d)_'b`M,4`?"@AHo&eIuPaECg
+F7%2CL=]1u5h*X0qetc0eDX9MaKqs\EB(qJS]j2:k/a.$=A!0=dQZI'1+rK[jjQNO
+m;O"Cf/A(M:Xd^E'qMp\B3'63$gK<`f3qTE>lq9?F-P=]X%J<ERTDsH,AA[X#5oVl
+E['n3N!*j3qWS?VjuK?$3_8=sC8S.Drg`t$+r^Mml/+?CVn1pRB]fi?(o[&:dto"h
+[FDb`jLcd(,/^Kdbhftu7F<;q?L\IZa'&PJ(=:hs;0Rca2>`&18Dd)!#f'4#beri=
+N.npZY.J^o@K@,uhAS:M,;i`-Y(6DIc?7+NbO>[@NK(Ook-S&l,JdTS4g-L#o\+Ih
+l"C(Z<'at<eB3Zpk/s]_9b&YQi&SI\A?(B7bf^mF:9(29jl?3EI@XZqjt?H/%ec?f
+e:#5QAGB]!QBAMI>Xs?%NbTb`:RAnFCNXVlDn,j_9B(M3@T#1T:q)fIbkU>GeZ+/:
+aF_$G-2VW9qmbqXHKf3j@>'8(*,en/bBlk3n`tQq7GU4_QKMq`ZoPl6"i14X(Z\H2
+02G1"Es,]q%t^F11_LaLI;?j\6hY_HFh[]MN4SSB<&p(E&&mdrhHL6Y^@.L&ceuHj
+Ri2987($*=E#skD=$3i\/D?*X:Bl,R-\^'D!%8o&;*oEjl=Io%8[Y#b#+S!XU(-WX
+Xs:[2mSeJ)4\SS?`S^fu=1,mi$gotl!j5=B$EkJjNTV7VB6R)=CZAmmLondm\e7($
+Dn>?*oK#cHUp9Ub_*An.-:Xo3c([+J`[?O;V(mBVLf[pILn%R=8oAe"Z$3-mG3jY0
+^]0a;o;Q.>I9I50$iB_bFD`mW*6USrJjqcK+dT^O,F9A6at[XLU<%>cIe%rg]qs"H
+1/_.RjuUble6,A,n@OGUcVeC%1D5O46D9L;c:TF[W2PO2Z.)puUi!Nh=im%=qOmi7
+X/4*6-FKA?D?qa.#l;,K5]R)t9u&t@_EXRo6(5]H%gSO;eCN3nPOnA9]UjY<,pak_
++14Sh%1Y+Z_,>J1MttuJ]eFte+4(jk2ZUkh:qgMnY[R)**.p^<]m;Q=3.Juj;E'CG
+*P,QhM^ijG-A"PWJ7rYIP<n0c'(^j5W5#kG<qut27?7IE^6G[SRLu-QlOXI09AP[9
+;m6N`kZlMLXLltm5g]sO^)[L_.T[t1[$LCNmK_-Y$4Vf'!F<BekASD?6lD44Hpn-=
+QFcrI=91.XI]=11WUAgsoVX]JeWJ=n6qc?a8=`\3):Y5/-!++2A_-ZY2_B1H1Na!O
+<n1U58ZlgZ2=Jgg2d#2.DYeSurHE,YSooIZO(<c%9H:FtL07I`CT/9FEib_<jjVce
+YoUe&a3pG%qNg83Qd!$hE.;&jK1XU,nLp>*\'tjBfipa(-IKS?ddB-&q^MC"[o>MQ
+erK*FH,P\&'5f@.SNc>GM/Y58Yga+/fscjI5=Q+$FQ>kO\XZDIUViq8o*O.E./e#X
+XbC8fk3$rih4>ML>U+BW\tLJ6&(8$oH>bhb>!OZXe$VPbm1X6f5R6K$44C/!(Hl=S
+,EGW8rCK:N93VV!946qnV/FXOJ,L#60ICC9O8atgn"eegolSTX&#f#Zo`!mXIWY%N
+7pMZLnahMCXtJ@o!U@%"Lo"u[9(2),%/c13hp@KSe65LN@HosB(TQ`KKeWc+<c67C
+T1<Kgr;<Gr?]80YJ_<HH.']Ud#fr>cjjKS0<&9q+HA4V1R9DLH\;H`@d%7.Fo8>PJ
+\mHH-?822l&#M3s'kSS/&dj=*G3pi'K13B6NpH_gE2jgDs"&uN?4Y8>I<IbFs-O/b
+g0ZSIle1fpa%^8n@+qT]l04k$mYhe!?/r0=%0=!t,HptTA,;N&O4dZ0>&3_>T</c7
+>Pjaq!rMJp_E=4;1LDdt'm_W0e7k9IX#o1LBrN%ndf.GuOdVDN^$p!udMuFNSDMJH
+I9$jHI3g8P?n>on(OnHQjkGJcFKKi3[!Mn/g,-1DN?t%)j8W4u(>aP8;J0+?&2C8r
+=m@ahSX\I<=7G!_4?Xkar7LF+U[a2dJ)nV>8)'q:^,WFVg]R'0VOtquEP6+rR6's=
+E,F1!77d4R;eshhK>uq7!8>pig[F;6_B=E]mQO9L-D`BDFoFJAXZn;F1j\GPa7?E/
+R=$lA1(GprRbIVUC#Ml3,8\X3Utl;%[,'d)kpOuI=dq\bC#E\eMBs,j7V?nSjEtT1
+?Lct%)Os8i>p^lOcuf,"L#HqbSpPG1q<u9d3!b#?&1:6`+:!t1qf%Inim?_g0.[*m
+P*-HcB+9];&sq+dY4#U<)8E;kR`b!*3F<P#h*pot`DW%:4'VSRF/Tr$)h1TmI)$[b
+B84Z0OeY!F<H&]Gon5Se7:cKRfim`iq(&TsG<udWj6iVHeD1R4Hh0k_%PYo,0lK%(
+o676+TF8aOZNb)$YS:cU%/9=NPPee>K*GY`=NQs.&*A7J4T~>
+EI
+Q
+endstream
+endobj
+6 0 obj
+4491
+endobj
+xref 0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000061 00000 n
+0000000116 00000 n
+0000000182 00000 n
+0000000337 00000 n
+0000004887 00000 n
+trailer
+<< /Size 7 /Info 1 0 R /Root 2 0 R >>
+startxref
+4910
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/sfl1.png b/obsolete/support/png2pdf/DOCU/sfl1.png
new file mode 100644
index 0000000000..e7649f222b
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/sfl1.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/sfl2.pdf b/obsolete/support/png2pdf/DOCU/sfl2.pdf
new file mode 100644
index 0000000000..a6c2d30aad
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/sfl2.pdf
@@ -0,0 +1,150 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdfdeveloper)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 210 62 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+ /XObject 7 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+210 0 0 62 0 0 cm
+/R8 Do
+Q
+endstream
+endobj
+6 0 obj
+33
+endobj
+7 0 obj
+<<
+/R8 8 0 R
+>>
+endobj
+8 0 obj
+<<
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 210
+/Height 62
+/BitsPerComponent 8
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 9 0 R
+/Interpolate true
+>>
+stream
+GhVPU?#17r(!!FKm:1L>^>pFJ[$CL7LXrS2"e!dW#Utu@N56@"!fdp,<=.0.:_T\*
+%8BCK"q["%#nm^M<5?RUS&A(U'(Z]480B%-_hWeY^^4C&(LqN+nAjenqD:^[m-`Zb
+qZSm!FEP"JS_a,<brKF^b[+pn=g;u`KWJ:tTNLK\=R(XTSD?PZ.qiQE]fVGCB@+AH
+FDM+dW21G-Q9$Ob1b7#.g)BVWrb,s%Y.*VSdBk6UerQR%kNM\!CB'5:-`H&>Fe5J2
+ql"?J7?04FPP4_DTXj*KrVQ?@e^^eu8nr*UE(57TqcD2c:_G1;V9Z!'Q^?%i/a-7.
+hO`atUPl#AQB.hQ5GS'QlFc>K:#G@3etWsQbC&I#d*Q1gFARO!g0GF.(%N`4lNX/l
+ZkVC_EF(oH?(=tr<E3pSDC?49GM[l.A4]?!rj:0$U[HJdc8HJi!oX:G9"F9=Im/h8
+RWS/q^Zp5a4>lTuP>S^QqW:N<]eWKRJM8Z.%uEb+.k;n`7Lb/O'/VU*C-]p_!4.mY
+\iXKHQ7^fr/Bh4!=W+`,6mC=;fp92p"[/])LU41P$NBYZ]+&W;Vo5N<1o:51k!1i8
+Z?!'K7S\r=FhJJV'H59,AtqO^I>GnO/(f6Q(Nn)I:io,p7@(OGeX`*h8V;XK)oJdB
+T#T:QSn\\&(H>::\oq(QNJNs*%65h(0BBK4WVf#"a/+gToV)g"(MM@Meg='24./:G
+BI%(PoA6/e<CQIG*@F3ETE"n39O2b\f&X/q>7rZ`WaSoR)[,58B^qM#eA2o9QN.ts
+%u8%Q<ihB=JZ+2q.3B+'G'mfX@$KX)<T!?Y_`(AUpfOXUH@M2I[-(h]BaO9^<Si=2
+H[4-))X[YZ56N:Q0ri#QR/+kL')JC6dS[F<lo,8;h::2nlgO+2R.JRl2uBD2HXAl'
+g/D>,V$*_i8*#?Z(_n"[W&7;d[K'U4!eBgdKu[3@PH*S,msC$:WNY)*-b0D"*lX=_
+m<!0s"sJQ;,cW)Q!`n>Z*bST*%8?oRKsOF?\unc^PLS$3W7*(!?7kLY)S-``6[,3T
+>^]-jLL-F>dj'kA,;h6D4P(-tCC:E-C&qH&HF5b*U5g8a@9aJH/`;i(gYoRS=YlGV
+hMZ5"$/-5.!AZblK"T<F;"6oD(@b$(FZdfO4&5E+1?Ipk`u/pVDFI/MUjq[:gq?mA
+qZYklG&$fhX&ZPCp@;pM;RcDreP+f<n]rPc);*#F-_4*o<tl<kAc5G\##FU]#3r^P
+?"ZEs[CGXEB1]VUE,t"6VbX:o<t!*&NZm@kfO&]^Hr:bo2Sk^Xm>%9BlIq-=PGbRt
+^0]&TS-N\76pnphN=r+K9h`^/PO8N&Y#%[k5L+m<'^eRRFlM4k"NGSPP,D'EGOW`N
+mhRX#O]OK;.U7TeW`_mZ(PS44EJ@Ci7@b2?QH2bBWDc0<Y.E-5U%/gnr]Je-/Tn';
+<KDd@Y^oJ4eB,fC+.U="Ff_`@'m1F5U?0l;3n'm^3\O&0F]p#".&fg77[B[Jj\Zl$
+WMPW5_6XkR^WoDI@ap7<kgRDC%*3aAFtlp>A_pdXVs_?O"-O6'TWK-2lOI*3f0EW4
+\$->s>?J6ggR!"Ya2&F3nI`h$0?M9B6lkUYA>fTB4O&Z8j>,Y_LV2\WT&"WgVjU2#
+D(EtLilIXTl1=4O"t(U[p$^MSP-H@>>T;:u@p_Ane<+5]=\S,:U/"%hcM2pY9*3VR
+/oW1'h9C[$M4>he*S8dkSuG1:S]*B9-V5R[78D@0T/eIL9jlEd"^-W2Pb(9>K2RK-
+9U1<32hCIn,StOS`4q#VT&W%-Hn&+>e9-95EAGW*>hb[/[e!*\RARgE'7%h5<"6cO
+N"S3V5b&0p5FEYh.?Zab8>0B<".%!,oF]"]bje81d)_'b`M,4`?"@AHo&eIuPaECg
+F7%2CL=]1u5h*X0qetc0eDX9MaKqs\EB(qJS]j2:k/a.$=A!0=dQZI'1+rK[jjQNO
+m;O"Cf/A(M:Xd^E'qMp\B3'63$gK<`f3qTE>lq9?F-P=]X%J<ERTDsH,AA[X#5oVl
+E['n3N!*j3qWS?VjuK?$3_8=sC8S.Drg`t$+r^Mml/+?CVn1pRB]fi?(o[&:dto"h
+[FDb`jLcd(,/^Kdbhftu7F<;q?L\IZa'&PJ(=:hs;0Rca2>`&18Dd)!#f'4#beri=
+N.npZY.J^o@K@,uhAS:M,;i`-Y(6DIc?7+NbO>[@NK(Ook-S&l,JdTS4g-L#o\+Ih
+l"C(Z<'at<eB3Zpk/s]_9b&YQi&SI\A?(B7bf^mF:9(29jl?3EI@XZqjt?H/%ec?f
+e:#5QAGB]!QBAMI>Xs?%NbTb`:RAnFCNXVlDn,j_9B(M3@T#1T:q)fIbkU>GeZ+/:
+aF_$G-2VW9qmbqXHKf3j@>'8(*,en/bBlk3n`tQq7GU4_QKMq`ZoPl6"i14X(Z\H2
+02G1"Es,]q%t^F11_LaLI;?j\6hY_HFh[]MN4SSB<&p(E&&mdrhHL6Y^@.L&ceuHj
+Ri2987($*=E#skD=$3i\/D?*X:Bl,R-\^'D!%8o&;*oEjl=Io%8[Y#b#+S!XU(-WX
+Xs:[2mSeJ)4\SS?`S^fu=1,mi$gotl!j5=B$EkJjNTV7VB6R)=CZAmmLondm\e7($
+Dn>?*oK#cHUp9Ub_*An.-:Xo3c([+J`[?O;V(mBVLf[pILn%R=8oAe"Z$3-mG3jY0
+^]0a;o;Q.>I9I50$iB_bFD`mW*6USrJjqcK+dT^O,F9A6at[XLU<%>cIe%rg]qs"H
+1/_.RjuUble6,A,n@OGUcVeC%1D5O46D9L;c:TF[W2PO2Z.)puUi!Nh=im%=qOmi7
+X/4*6-FKA?D?qa.#l;,K5]R)t9u&t@_EXRo6(5]H%gSO;eCN3nPOnA9]UjY<,pak_
++14Sh%1Y+Z_,>J1MttuJ]eFte+4(jk2ZUkh:qgMnY[R)**.p^<]m;Q=3.Juj;E'CG
+*P,QhM^ijG-A"PWJ7rYIP<n0c'(^j5W5#kG<qut27?7IE^6G[SRLu-QlOXI09AP[9
+;m6N`kZlMLXLltm5g]sO^)[L_.T[t1[$LCNmK_-Y$4Vf'!F<BekASD?6lD44Hpn-=
+QFcrI=91.XI]=11WUAgsoVX]JeWJ=n6qc?a8=`\3):Y5/-!++2A_-ZY2_B1H1Na!O
+<n1U58ZlgZ2=Jgg2d#2.DYeSurHE,YSooIZO(<c%9H:FtL07I`CT/9FEib_<jjVce
+YoUe&a3pG%qNg83Qd!$hE.;&jK1XU,nLp>*\'tjBfipa(-IKS?ddB-&q^MC"[o>MQ
+erK*FH,P\&'5f@.SNc>GM/Y58Yga+/fscjI5=Q+$FQ>kO\XZDIUViq8o*O.E./e#X
+XbC8fk3$rih4>ML>U+BW\tLJ6&(8$oH>bhb>!OZXe$VPbm1X6f5R6K$44C/!(Hl=S
+,EGW8rCK:N93VV!946qnV/FXOJ,L#60ICC9O8atgn"eegolSTX&#f#Zo`!mXIWY%N
+7pMZLnahMCXtJ@o!U@%"Lo"u[9(2),%/c13hp@KSe65LN@HosB(TQ`KKeWc+<c67C
+T1<Kgr;<Gr?]80YJ_<HH.']Ud#fr>cjjKS0<&9q+HA4V1R9DLH\;H`@d%7.Fo8>PJ
+\mHH-?822l&#M3s'kSS/&dj=*G3pi'K13B6NpH_gE2jgDs"&uN?4Y8>I<IbFs-O/b
+g0ZSIle1fpa%^8n@+qT]l04k$mYhe!?/r0=%0=!t,HptTA,;N&O4dZ0>&3_>T</c7
+>Pjaq!rMJp_E=4;1LDdt'm_W0e7k9IX#o1LBrN%ndf.GuOdVDN^$p!udMuFNSDMJH
+I9$jHI3g8P?n>on(OnHQjkGJcFKKi3[!Mn/g,-1DN?t%)j8W4u(>aP8;J0+?&2C8r
+=m@ahSX\I<=7G!_4?Xkar7LF+U[a2dJ)nV>8)'q:^,WFVg]R'0VOtquEP6+rR6's=
+E,F1!77d4R;eshhK>uq7!8>pig[F;6_B=E]mQO9L-D`BDFoFJAXZn;F1j\GPa7?E/
+R=$lA1(GprRbIVUC#Ml3,8\X3Utl;%[,'d)kpOuI=dq\bC#E\eMBs,j7V?nSjEtT1
+?Lct%)Os8i>p^lOcuf,"L#HqbSpPG1q<u9d3!b#?&1:6`+:!t1qf%Inim?_g0.[*m
+P*-HcB+9];&sq+dY4#U<)8E;kR`b!*3F<P#h*pot`DW%:4'VSRF/Tr$)h1TmI)$[b
+B84Z0OeY!F<H&]Gon5Se7:cKRfim`iq(&TsG<udWj6iVHeD1R4Hh0k_%PYo,0lK%(
+o676+TF8aOZNb)$YS:cU%/9=NPPee>K*GY`=NQs.&*A7J4T~>
+endstream
+endobj
+9 0 obj
+4406
+endobj
+xref 0 10
+0000000000 65535 f
+0000000010 00000 n
+0000000065 00000 n
+0000000120 00000 n
+0000000186 00000 n
+0000000359 00000 n
+0000000451 00000 n
+0000000472 00000 n
+0000000508 00000 n
+0000005119 00000 n
+trailer
+<< /Size 10 /Info 1 0 R /Root 2 0 R >>
+startxref
+5142
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/sfl2.png b/obsolete/support/png2pdf/DOCU/sfl2.png
new file mode 100644
index 0000000000..d3c5a439cd
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/sfl2.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/sflogo.png b/obsolete/support/png2pdf/DOCU/sflogo.png
new file mode 100644
index 0000000000..b49f6ccf77
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/sflogo.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/stefan_255_rgba.bb b/obsolete/support/png2pdf/DOCU/stefan_255_rgba.bb
new file mode 100644
index 0000000000..fc19c76690
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/stefan_255_rgba.bb
@@ -0,0 +1 @@
+%%BoundingBox: 0 0 162 150
diff --git a/obsolete/support/png2pdf/DOCU/stefan_255_rgba.png b/obsolete/support/png2pdf/DOCU/stefan_255_rgba.png
new file mode 100644
index 0000000000..e3b32af1e0
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/stefan_255_rgba.png
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/style.css b/obsolete/support/png2pdf/DOCU/style.css
new file mode 100644
index 0000000000..05278836a6
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/style.css
@@ -0,0 +1,241 @@
+
+@media screen
+{
+ body {
+ font-family: serif;
+ background-color: white;
+ }
+ .headertable {
+ width:100%;
+ }
+ .headertdleft {
+ text-align:left;
+ }
+ .headertdright {
+ text-align:right;
+ }
+ .navimenutable {
+ text-align: center;
+ background-color: yellow;
+ }
+ .navimenutd {
+ }
+ a.navimenulink {
+ color: red;
+ font-family: sans-serif;
+ text-decoration: none;
+ }
+ a.navimenulink:hover {
+ color: red;
+ font-family: sans-serif;
+ text-decoration: underline;
+ }
+ .navimenucurrent {
+ color: red;
+ font-family: sans-serif;
+ font-weight: bold;
+ }
+ .footertable {
+ background-color: yellow;
+ }
+ .footertr {
+ }
+ .footertdleft {
+ text-align: left;
+ }
+ .footertdcenter {
+ text-align: center;
+ }
+ .footertdright {
+ text-align: right;
+ }
+ .h2tdleft {
+ text-align: left;
+ }
+ .h2tdcenter {
+ text-align: right;
+ }
+ .h2tdright {
+ text-align: right;
+ }
+ a.smallotherlink {
+ color: blue;
+ font-family: sans-serif;
+ font-size: small;
+ text-decoration: none;
+ }
+ a.smallotherlink:hover {
+ color: blue;
+ font-family: sans-serif;
+ font-size: small;
+ text-decoration: underline;
+ }
+ .toctable {
+ }
+ .tocrow {
+ }
+ .toctd {
+ }
+ a.toclink {
+ color: green;
+ font-family: sans-serif;
+ font-size: small;
+ text-decoration: none;
+ }
+ a.linkoutside {
+ color: blue;
+ text-decoration: none;
+ }
+ a.linkinternal {
+ color: green;
+ text-decoration: none;
+ }
+ a.toclink:hover {
+ color: green;
+ font-family: sans-serif;
+ font-size: small;
+ text-decoration: underline;
+ }
+ a.linkoutside:hover {
+ color: blue;
+ text-decoration: underline;
+ }
+ a.linkinternal:hover {
+ color: green;
+ text-decoration: underline;
+ }
+ .subtitle {
+ font-family: sans-serif;
+ font-size: small;
+ }
+ .cmdarg {
+ font-style: italic;
+ }
+ it {
+ font-style: italic;
+ }
+ b {
+ font-style: bold;
+ }
+ h6 {
+ font-size: 100%;
+ font-weight: bold;
+ }
+ h5 {
+ font-size: 120%;
+ font-weight: bold;
+ }
+ h4 {
+ font-size: 144%;
+ font-weight: bold;
+ }
+ h3 {
+ font-size: 172%;
+ font-weight: bold;
+ }
+ h2 {
+ font-size: 206%
+ font-weight: bold;
+ }
+ h1 {
+ font-size: 250%;
+ font-weight: bold;
+ }
+}
+
+@media print
+{
+ @page {
+ margin-top: 1.5cm;
+ margin-bottom: 1.5cm;
+ }
+ @page :left {
+ margin-left: 1.5cm;
+ margin-right: 2.5cm;
+ }
+ @page :right {
+ margin-left: 2.5cm;
+ margin-right: 1.5cm;
+ }
+
+ /* Choose a font suitable for larger texts. */
+ body {
+ font-family: Garamond, "Times New Roman", Times, serif;
+ }
+
+ .headertable {
+ width:100%;
+ }
+ .headertdleft {
+ text-align:left;
+ }
+ .headertdright {
+ text-align:right;
+ }
+ .navimenutable {
+ text-align: center;
+ border-style: double;
+ }
+ .navimenutd {
+ }
+ .navimenulink {
+ color: red;
+ }
+ .navimenucurrent {
+ font-weight: bold;
+ }
+ .footertable {
+ border-style: double;
+ }
+ .footertr {
+ }
+ .footertdleft {
+ text-align: left;
+ }
+ .footertdcenter {
+ text-align: center;
+ }
+ .footertdright {
+ text-align: right;
+ }
+ .h2tdleft {
+ text-align: left;
+ }
+ .h2tdright {
+ text-align: right;
+ }
+ .smallotherlink {
+ color: blue;
+ font-size: small;
+ }
+ .toctable {
+ }
+ .tocrow {
+ }
+ .toctd {
+ }
+ .toclink {
+ color: green;
+ font-size: small;
+ text-decoration: none;
+ }
+ .linkoutside {
+ color: blue;
+ }
+ .linkinternal {
+ color: green;
+ }
+ .subtitle {
+ font-size: small;
+ }
+ .cmdarg {
+ font-style: italic;
+ }
+ it {
+ font-style: italic;
+ }
+ b {
+ font-style: bold;
+ }
+}
+
diff --git a/obsolete/support/png2pdf/DOCU/usage.html b/obsolete/support/png2pdf/DOCU/usage.html
new file mode 100644
index 0000000000..15bd3916ff
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/usage.html
@@ -0,0 +1,288 @@
+<html>
+<head>
+<title>png2pdf - Convert PNG images to PDF</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div class="header">
+<p>
+<table width="100%" class="headertable">
+<tr class="headertr">
+<td class="headertdleft" rowspan="2"><img src="./png2pdf-logo.png"></td>
+<td class="headertdleft"><h1>png2pdf</h1></td>
+<td class="headertdright" rowspan="2">
+<a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+</td>
+</tr>
+<td class="headertdleft"><span class="subtitle">Convert <u>PNG</u> images <u>to</u> <u>PDF</u></span></td>
+</tr>
+</table>
+<table width="100%" class="navimenutable">
+<tr class="navimenutr">
+<td class="navimenutd">
+<a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Usage</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+</td>
+</tr>
+</table>
+</p>
+</div>
+<div class="text">
+
+<table width="100%">
+<tr>
+<td class="h2tdleft"><h2>Usage</h2></td>
+<td class="h2tdright"><a class="smallotherlink" href="png2pdf.pdf">PDF manual "png2pdf.pdf" available</a></td>
+</tr>
+</table>
+
+<table width="100%" class="toctable">
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h301">Overview</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h302">Options</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td class="toctd" colspan="6"><a class="toclink" href="#h303">Example</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td width="5%"></td>
+<td class="toctd" colspan="5"><a class="toclink" href="#h401">Original image and pdfLaTeX source</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td width="5%"></td>
+<td class="toctd" colspan="5"><a class="toclink" href="#h402">PDF image, white background</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td width="5%"></td>
+<td class="toctd" colspan="5"><a class="toclink" href="#h403">Background color</a></td>
+</tr>
+<tr class="tocrow">
+<td width="5%"></td>
+<td width="5%"></td>
+<td class="toctd" colspan="5"><a class="toclink" href="#h404">Background effects</a></td>
+</tr>
+</table>
+
+<a name="h301"><h3>Overview</h3></a>
+<p>
+The program can be invoked by typing
+<pre>
+ png2pdf [&lt;options&gt;]
+ png2pdf [&lt;options&gt;] &lt;input-file&gt; &lt;output-file&gt;
+ png2pdf [&lt;options&gt;] &lt;directory&gt;
+</pre>
+If no file name is specified the program runs on the current directory.
+When running on a directory the program checks the directory for
+PNG file and converts all PNG files to PDF.<br>
+</p>
+<a name="h302"><h3>Options</h3></a>
+<p>
+The following options can be used:
+<ul>
+<li>-p <it>pdf-level</it><br>
+--pdf=<it>pdf-level</it><br>
+specifies the PDF level to use (may be "1.2", "1.3" or "1.4"). By default
+PDF&nbsp;1.4 is produced.
+</li>
+<li>-a<br>
+-a-<br>
+--transparency=<it>boolean</it><br>
+specifies whether or not to transfer an alpha channel from the PNG
+file into the PDF file.
+</li>
+<li>-i<br>
+-i-<br>
+--image-mask=<it>boolean</it><br>
+specifies whether or not to convert the PNG alpha channel into a
+PDF image mask.<br>Note: alpha channel transfer and image mask creation
+can not be used at same time.
+</li>
+<li>-m <it>RGB-triple</it><br>
+--mix-background=<it>RGB-triple</it><br>
+mixes all pixels against the background color specified in the PNG
+file's background chunk. If there is no background chunk the <it>RGB-triple</it>
+is used.<br>Note: Mixing and alpha channel transfer (-a) can not be used
+at same time.
+</li>
+<li>-s<br>
+-s-<br>
+--mix-specified=<it>boolean</it><br>
+sets priority for -m <it>RGB-triple</it> higher than PNG file background chunk.
+The -m <it>RGB-triple</it> is used always.
+</li>
+<li>-l<br>
+-l-<br>
+--invert-levels=<it>boolean</it><br>
+inverts the trigger level used for image mask creation. By default only
+opacity=0 pixels are masked, inverting results in masking all pixels except
+those having full opacity.
+</li>
+<li>-t<br>
+-t-<br>
+--alpha-transparency=<it>boolean</it><br>
+interprets alpha channel data as transparency instead of opacity.
+</li>
+<li>-n<br>
+--interpolation<br>
+adds an entry to the image dictionary indicating that viewers should
+attempt an image interpolation on the picture (see
+<a class="linkinternal" href="interpolate.html">example</a>).<br>
+Use with care. Different software may use different algorithms.
+The representation of the image may vary depending on the software
+and output device you use.
+</li>
+<li>-f<br>
+-f-<br>
+--file-time-check=<it>boolean</it><br>
+enables/disables file time check when running on a directory.
+If file time check is enabled, a conversion is only started for PNGs
+which have have no corresponding PDF file or a PDF file older than
+the PNG file.
+</li>
+<li>-h<br>
+--help<br>
+prints a help text.
+</li>
+<li>-v<br>
+--version<br>
+prints version information.
+</li>
+<li>-c &lt;options&gt;<br>
+--configure &lt;options&gt;<br>
+sets <it>options</it> as permanent options, stored in the preferences system.
+</li>
+<li>-C<br>
+--show-configuration<br>
+prints a summary information about permanent options.
+</li>
+<li>-r &lt;options&gt;<br>
+--reset &lt;options&gt;<br>
+overrides (ignores) the permanent options for this one program invokation.
+The program starts based on compiled-in defaults and processes options
+given explicitely on the command line. This is intended for program usage
+in scripts where we want to have a well-defined startup.
+</li>
+<li>-u<br>
+--unconfigure<br>
+removes all permanent options.
+</li>
+</ul>
+</p>
+<a name="h303"><h3>Examples</h3></a>
+<a name="h401"><h4>Original image and pdfLaTeX source</h4></a>
+<p>
+In the examples the image stefan_255_rgba.png from the PNG web site
+is used.<br>
+<img width="162" height="150" src="stefan_255_rgba.png"/>
+<br>&nbsp;<br>
+If the image is included into a pdfLaTeX source
+<pre>
+ \documentclass[12pt,a4paper,titlepage]{article}
+ \usepackage{ifpdf} % LaTeX or pdfLaTeX
+ \usepackage{color} % we want to use background color
+ \usepackage{graphicx}
+ \ifpdf
+ \usepackage{background} % for the background effects, PPower4 necessary
+ \fi
+ \definecolor{bgred}{rgb}{1.0,0.501961,0.501961}
+ ...
+ \begin{document}
+ ...
+ \begin{figure}
+ {\centering
+ \includegraphics[width=5cm]{stefan_255_rgba.png}
+ \caption{Some caption}
+ \label{fig:some-label}
+ }
+ \end{figure}
+ ...
+ \end{document}
+</pre>
+the result looks like shown in image 1:<br>&nbsp;<br>
+<img width="489" height="253" src="capa01.png"/>
+<br>&nbsp;<br>
+</p>
+<a name="h402"><h4>PDF image, white background</h4></a>
+<p>
+If we create a PDF file using
+<pre>
+ png2pdf -m 255,255,255 -s stefan_255_rgba.png x1.pdf
+</pre>
+and change the pdfLaTeX source to
+<pre>
+ ...
+ \begin{figure}
+ {\centering
+ \includegraphics[width=5cm]{x1.pdf}
+ \caption{Some caption}
+ \label{fig:some-label}
+ }
+ \end{figure}
+ ...
+</pre>
+the result looks like shown in image 2:<br>&nbsp;<br>
+<img width="489" height="253" src="capa02.png"/>
+</p>
+<a name="h403"><h4>Background color</h4></a>
+<p>
+To obtain a colored background we add
+<pre>
+ \pagecolor{bgred}
+</pre>
+to the pdfLaTeX source and run the conversion
+<pre>
+ png2pdf -m 255,128,128 -s stefan_255_rgba.png x1.pdf
+</pre>
+The result is shown in image 3:<br>&nbsp;<br>
+<img width="489" height="253" src="capa03.png"/>
+</p>
+<a name="h404"><h4>Background effects</h4></a>
+<p>
+Now we use
+<pre>
+ \vpagecolor{bgred}
+</pre>
+to produce a background effect. Note: Post-processing using PPower4
+is necessary to make the effect visible.<br>
+Using the existing image x1.pdf produces output as shown in
+figure 4:<br>&nbsp;<br>
+<img width="490" height="253" src="capa04.png"/>
+<br>&nbsp;<br>A red rectangle shows the extents of the image.<br>
+Toe remove the rectange we create an image mask while converting
+the picture using
+<pre>
+ png2pdf -m 255,128,128 -s -i stefan_255_rgba.png x1.pdf
+</pre>
+Output is shown in image 5. There is still some kind of border
+around the shadow.<br>&nbsp;<br>
+<img width="489" height="253" src="capa05.png"/>
+<br>&nbsp;<br>So we decide to transfer the alpha channel from
+the PNG file into the PDF file using
+<pre>
+ png2pdf -m 255,128,128 -s -a stefan_255_rgba.png x1.pdf
+</pre>
+Output is now as expected (image 6).<br>&nbsp;<br>
+<img width="489" height="253" src="capa06.png"/>
+</p>
+</div>
+<div class="footer">
+<p>
+<table width="100%" class="footertable">
+<tr class="footertr">
+<td class="footertdleft">Dirk Krause</td>
+<td class="footertdcenter">http://png2pdf.sourceforge.net</td>
+<td class="footertdright">2005/02/01</td>
+</tr>
+</table>
+</p>
+</div>
+</body>
+</html>
+
diff --git a/obsolete/support/png2pdf/DOCU/x1.eps b/obsolete/support/png2pdf/DOCU/x1.eps
new file mode 100644
index 0000000000..7493866f41
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x1.eps
@@ -0,0 +1,95 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%BoundingBox: 0 0 128 128
+%
+% created by bmeps 1.2.5 (SCCS=1.77)
+%
+/pstr
+ 384 string
+def
+/inputf
+ currentfile
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+def
+gsave
+0 128 translate
+128 128 scale
+128 128 8 [128 0 0 -128 0 0]
+{ inputf pstr readstring pop }
+false
+3
+colorimage
+K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&
+K)^H&K)^H&K)^H&K)^H&K)^H&K)_SF$N9r'lg+T8l2U_\K)^H&NW0RAfDgbes*oOu
+It.KRL]>oTK)^H&PQ)EYj8X[]s*oOuIt.KJJ,b"Js*oOuhqs%cK)_/:(9+;5It.KJ
+J,b"Js*oOuIt.KJJ,c@AK)^H&QN%_eQiDPbs*oOuIt.KJJ,b"Js*oOuPEUUuK)_/:
+(8[l-It.KJJ,b"Js*oOuIt.KJJ,c49K)^H&QN%`Hci8KEs*oOuIt.KJJ,b"Js*oOu
+aiT/7K)aL'%F<B#V5=3WQ2db[s5DqZrtDrRs*oOuIt.KJJ,b"Js0]97rVb"@%HHLK
+WN#o_Q2dPOs3&T;s.96(\[h`iJ,b"Js*oOuIt.KNKE'ohb5Vh3kPrZGs2iC_iShrZ
+'BA-QK7j2RJ,b"Js*oOuIt.L+[=\FSrtae\s+,b$It.KJJ,b"Js*oOuIt.K^PDK5S
+Q^@`%J,b"Js*oOuIt.KJJ,b"Js5i?os/5l7bKKp8J,b"Js*oOuIt.KJJ,b"Js*oOu
+q>$'N)>X+.JV!iNJ,b"Js*oOuIt.KJJ,b"Js2iB7s/5l7bKKp8J,b"Js*oOuIt.KJ
+J,b"Js*oOuq>$'N)>X+.JV!iNJ,b"Js*oOuIt.KJJ,b"Js2iB7s/5l4kNDkpJ,b"J
+s*oOuIt.KJJ,b"Js-&Y&rt^rfs*oOuIt.KJJ,b"Js*oOuIt.LYj+@<,rtDrRs*oOu
+It.KJJ,b"Js+>t(iSfUm'BA-QK7j2RJ,b"Js*oOuIt.L+[=\FMrsd5ts.c@hQ'MBG
+V>oH1K)ZDBj8Z$Ts-&ZHTqVM.aoD><K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&K)^H&
+K)^H&K)^H&K)^H&K)^H&K)b??#Lh0%O,s=cc%>tIs+gU]O,s<jJ,b@^s7c8>s+::$
+rsIrPs3&UcaiXSEjh^s(aiXR4J,b"Js0]7ds5<nakNDlgbQ#]+s5i?rrtDrRs+,b$
+It.KJJ,b"Js0oK;rVae:%K68*Q'MB!J,b"Js5i?os5s=p\[h`kJcC4Ls*oOuIt.L-
+\,ZF*NrKm@ci8KEs*oOuIt.KJJ,b"Js*oOuaiVL$$K^CLJV!iNJ,c.5K)b*8(=1>,
+It.KJJ,b"Js*oOuIt.KJJ,dX4NrKlkV>l$ps*oOuIt.KJJ,b"Js*oOuTqT=&$EpZ5
+It.KJJ,e-PK)b3;(8[l-It.KJJ,b"Js*oOuIt.KJJ,c49NrKl]QiDPbs*oOuIt.KJ
+J,b"Js*oOuPEWi_%I`ccKn]PVJ,bFbs7c8>s6ot'Q^@`%J,b"Js*oOuIt.KJJ,b"J
+s-&Y,rt_T5s*oOuIt.KJJ,b"Js*oOuIt.KpV7us:_o)M(J,b"Js1,[ls6ot'WN#oI
+J,b"Js*oOuIt.KJJ,b"Js.uQPrtaYTs+>t(It.KJJ,b"Js*oOuK7j3_iP,=$rVcb]
+Q2c>`s+>t(naV52o)BKcj8Xaas*oOuIt.KJJ,b"Js+>t(iSf^p&EDgNQ^@`%J,b"J
+s-&ZHiSh<H$JF,4It.KJJ,cRMkl1nVn,Lqgs7>iErt+5Ns-K)PIt.KJJ,b^rs5Dpg
+rri/ns7uJorsGHns*oOuIt.LMfC&YJp%A?CMuS9Vs+cC0mHor6"Sqlnq>#XBV#Lnm
+n,J)qs*oOuOcf\BrUKmse^a\LJ,b"Js*oOucd.4CK)_eL$GF.QIt.KJJ,dX4nc''M
+fDg>Ms*oOuIt.L9_h.o?s/>r,p\4]GMuS9Vs+cC0oCMVS%H$(CIt.KJJ,b"Js1c=#
+s+:9IrsI)us*oOuIt.L!X7ZE$iSjfdJ,b"Js*oOu\[d=lK)_SF$DF0nIt.KJJ,eWl
+p\t]kn,Iles*oOuIt.L%YCce+s.]N#kNDkrJcC4Ls.,_TrseGcs*oOuIt.KJJ,cXQ
+K)^H&TDo8#XoEm#s*oOuaiXDZ%K$&&It.KJJ,b"Js.>p8s+:9CrseSks,2g8It.KT
+M?!>EqYpnPJ,b"Js*oOuT:^`8K)_A@$HpWmIt.KJJ,d-mqYpnVL&ZXPs*oOuQ'Ht$
+K)_A@%K68*PEZ#rJ,b.Rs6K"LrsFgJs*oOuIt.KZO+RC`s-`m)gY;aXJ,b"Js.,_\
+rVcbYOoKo\s*oOuMi32eK)_/:(9O_=It.KJJ,e'Ls.>q`It.KJJ,b"JK)^H&QN%im
+nc+;ss*oOuPEZ$=TDsCjs*oOuIt.LsrIY'$s-E[#]=\)mJ,b"Js-/cJIt.KJJ,b"J
+s7,W2s+:9:rtbG+s,iHDIt.KKJH(+Ks*oOuIt.Lemt1S2rse#Ks/E!tQ'MBCU&W<Z
+L&Vh>g&HPOs*oOuIt.KJJ,b"Js6&Qsrsd<#s.uRlQ'MBIVuPZ3YQ#9ffDgJUs*oOu
+It.KJJ,b"Js0]7grt(fps*oOuIt.KJJ,b"Js52^frtDrRs*oOuIt.KJJ,b"Js*oOu
+e^_)-)?'O6M2D7^J,b"Js*oOuIt.KJJ,b"Js5i?urt+;Rs+#Y"It.KJJ,b"Js4uLe
+ru("_s+,b$It.KJJ,b"Js*oOuIt.KRL]@8K\GmH4li2Has*oOuIt.KJJ,b"Js*oOu
+It.L?abBa(U8%[;J,b"Js*oOucd.FI)9^5'It.KJJ,b"Js*oOuIt.KJJ,b"Js68dX
+ru(.gs*oOuIt.KJJ,b"Js*oOuIt.KJJ,dX4L&VV,c2W9Cs*oOuIt.LIdtn#AbKKp8
+J,b"Js*oOuIt.KJJ,b"Js*oOul05_X)?'O6M2D7^J,b"Js*oOuIt.KJJ,b"Js5W-n
+rseGcs+Z:.It.KOK`CT4M#S@UkPp$]s*oOuIt.KJJ,b"Js*oOuLPPp,qmHG;f@U%R
+JcC4Ls*oOuIt.KJJ,cpaK)biM#PIcie'n?am=P?O\[h`iJ,b"Js*oOuIt.KJJ,dpD
+YQ#0oj8Z$Ts-&ZHTqVM.aoD><K)^H&oD]9Ec2XQ6s-8lLV5=4Jh1GZYs+:9&s+:9&
+s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&
+s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s5s=aq>('dq1AX-rri/ns7uJBrt+5N
+s-];TJV!iNJ,be!s5W-ks-s$"j5^0-RK%hhs*oOuQ'MC0j,<pQj5^/lKE$FNs*oOu
+It.KJJ,b.Rs5Dpgs.TH.j5^/lKE$FNs*oOuIt.KJJ,b.Rs5Dpsrt_T5s*oOuIt.KJ
+J,b"Js*oOuIt.KpV1S`@rt_T5s*oOuIt.KJJ,b"Js*oOuIt.KpV2kQkQ^@`%J,b"J
+s*oOuIt.KJJ,b"Js-&Xus.TH.Q^@`%J,b"Js*oOuIt.KJJ,b"Js-&Y,rt_H-s*oOu
+It.KJJ,b"Js*oOuIt.KlTn<<<rt_H-s*oOuIt.KJJ,b"Js*oOuIt.KlToT-gcd2W@
+J,b"Js*oOuIt.KJJ,b"Js2iB7s.TH.cd2W@J,b"Js*oOuIt.KJJ,b"Js2iB@rtDrR
+s*oOuIt.KJJ,b"Js0]97rV_?JT)TJ7\c7//s*oOuIt.KJJ,cpas8DnPrsIrPs2iC_
+aiXSAiI_)prsIrPs2iC_aiXSAiI_)]s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&
+s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s0M_7cd2WfV>lgGs/2dpiSfCg%HHLKWN#o_
+Q2dPOs3&T;s.96(\[h`iJ,b"Js*oOuIt.KNKE'ohM#S.Kj8Xaas*oOuIt.KJJ,b"J
+s0]7ds.oZ1kNDkrJcC4Ls*oOuIt.KJJ,b"Js-&Y&rt^rfs*oOuIt.KJJ,b"Js*oOu
+It.L[jb!N1ru'#'s*oOuIt.KJJ,b"Js*oOuIt.KJJ,f??NrL!mq>Z"ss*oOuIt.KJ
+J,b"Js*oOuIt.L?ab'Pjru'#'s*oOuIt.KJJ,b"Js*oOuIt.KJJ,f??NrL!mq>Z"s
+s*oOuIt.KJJ,b"Js*oOuIt.L?ab'Pjrtae\s*oOuIt.KJJ,b"Js*oOuIt.K^PDK5S
+Q^@`%J,b"Js*oOuIt.KJJ,b"Js5W-ks.oZ.\[h`iJ,b"Js*oOuIt.KNKE'ohb5Vh3
+kPr`Ks2iC_jlOYb'BA-QK7j2RJ,b"Js*oOuIt.L+[=\FMrsd5ts.c@hQ'MBGV>oH1
+b5W-c\c753s*oOuIt.KJJ,d!es8Do@rt+5Ns/2dpPEZ$?U&W6Vs8DnJs+::*rt`r,
+s*oOuIt.KJJ,b"Js*oOuIt.L?ab'PEs-E[#V5=3AJ,b"Js*oOuIt.KJJ,b"Js.Q-<
+s+:9:rt^rfs*oOuIt.KJJ,b"Js*oOuIt.K^PCigds-E[#WN#oIJ,b"Js*oOuIt.KJ
+J,b"Js.uQDs+:9:rtaYTs+,b$It.KJJ,b"Js*oOuIt.LUhh(l[s-*Hof@U%ZM>r'T
+s*oOuLPPoYdt7UOs,I$crVcc\l2U#4s82\Fs+:9&s+:9&s+:9&s+:9&s+:9&s+:9&
+s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s+:9&s.TG
+~>
+grestore
+currentdict /inputf undef
+currentdict /pstr undef
diff --git a/obsolete/support/png2pdf/DOCU/x1.pdf b/obsolete/support/png2pdf/DOCU/x1.pdf
new file mode 100644
index 0000000000..28acc5f6cd
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x1.pdf
@@ -0,0 +1,93 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.10)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 128 128 ]
+/CropBox [ 0 0 128 128 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+0 0 m 128 0 l 128 128 l 0 128 l h W n
+128 0 0 128 0 0 cm
+BI
+/W 128
+/H 128
+/BPC 8
+/CS /RGB
+/F [/A85 /Fl]
+ID
+GhVPUgJ8JK'ZU/p'bn;+'#Am>0NPQ40npKAM(q3h,"RVX$R+A2D'?h7@Ycj5`c&/P
+l*;<8DKk9&ZemG-^a5Doq7:puRCc@M&4-XGKFgHU+b]X3rk@+C<h#TT#ND,Y20Jo2
+3cRKQYqadF;A+2\gZmkA=F=%2I\\ZX\9BSX5"_qH@2s:KMFIQE.15*k4*N7Phmu6b
+*78G%oNtk!0ZRX676eSQMOKr1T0HtiA7=GIq"+(pZd;`G7h[]`YKs7NiJX>VD.H%_
+q3&"_:.IP?.%+j9*eaeDg[joCaPqEUQFp'KDI1"knRGq@#-0spn3MCup@\V-e*C-X
+#*bH-9;b"ME"B\TZKVm\4_X<FUgO*+5p9X-4?6g9k\0Z(BR#X:TE2#S.X78Geb$4D
+q._e_5oVrRGOOf:TN]m;kKb7D%gX>3&4-YB_<S%hQr*H:Q&sta7GS&/G>A,5759fq
+\#W$L()M$/[RDMBb90'J'3kG&Rq+;j((L`r5(5Uns*]B(%n]5iakHD`<^1mUZN+fQ
+-3$P=aF<E=Y34qA:W<'@lFEQV#]k',<U8s7l<gSpXKGS->%/L7++?!8`t*=TN3;H_
+"WmiOFm5%0'Lm)#csFA@CP/PXNS.HmeSk][BslBI#=_4i01E)L@T9kDj-Tc4G'_;C
+QmE`i2o`LkGR&;[akGC'X1a#_-r8B0Wh2KZX>[dO?`UN<[o^WR3^WWSJTuB?#716O
+HsD+"*feeM?iokp99o]":VQ?!aFm+s4F;6bJrQ,6k`9s_M?*IMEAAt-s63Hhs6%]W
+<T1XX<$4ZQ@J':J9aqCBLm*HXL^ln(FI>^?FM%(9d#Aufr?".p8AtXa;h=`<n%SeX
+%b:dcJo;?ZPI!'ph^)n%o[B`.?_ZBX8u4k"$3sk@WMt,=BR<t`ARZk7+$U;A]R(G&
+N^/Q,"9%6C=1BU:3"S$<g?k@@5hrTM'>&\fU87cNK#8I^^QIZF0DG/6D42STHG.u&
+-Pmr!3u0sGG(6R`dZS-6bj:9;kTe:!B]rSi]TP',H>G9Zf%/:@DR*K3PKk8H#a:<F
+C/[.8gUB3+hIk/<k+)ZW8`?G.ro_0(Z'JKNQ&h!l&X'dlJ&f-==8'^nl"MfJ^u1*P
+ibWH8Y(+.ADonJ-+mXWFs(Skdogd:`2Pus`qQsf4$3)f[9YUKRMSCSnkJJe2h-L!?
+Ml_D!P1ilqo(mM.T7Wt(g8^,0':stbc6UTVlLo(cIj,8Ks.4NJ63n`f&4-XGKFgHU
+q=!S@A.HtP"X].3h/9:ZfAh.]8k!tcd\YLGY4\o_3\S(So*9YTnAo:Bo*;A[DhsoO
++`=^/eQ:kF"NhgerAf_U-2q.tANbMoi6*@*YZbc^>&)m:r-Ts=cQBgr9$liu7mHSn
+_.Pq\X7=E#c"]QN+bUCn#U049US5`rU92StLW>k\YH-2/hL@+=AM\RuF4g5*Fuk*.
+Ir-4MkPa"M3:-WUfhK^8qXa]%2d!O=$f6AMofllgi^h&GOceuZ&AHDcV4fMm6MsP0
+i@)VBfCaH>X)dA"YOf=.b1qIeD(=`If>m5DP]5p@+0:A3JmWi_&([eb"QOa[nE1F_
+Ee5!F0Qi^F!j6@@YNrOAc!a,CX-CO[a;)1mFNO9Q.7+:`KFgHU+bUCnEo\lp0RCb
+~>
+EI
+Q
+endstream
+endobj
+6 0 obj
+1804
+endobj
+xref 0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000062 00000 n
+0000000117 00000 n
+0000000183 00000 n
+0000000365 00000 n
+0000002228 00000 n
+trailer
+<< /Size 7 /Info 1 0 R /Root 2 0 R >>
+startxref
+2251
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/x2.eps b/obsolete/support/png2pdf/DOCU/x2.eps
new file mode 100644
index 0000000000..9486d5965e
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x2.eps
@@ -0,0 +1,314 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 162 150
+/DeviceRGB setcolorspace
+%
+% created by bmeps 1.0.6 (SCCS=1.65)
+%
+gsave
+0 150 translate
+162 150 scale
+<<
+ /ImageType 3
+ /DataDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /MultipleDataSources false
+ /DataSource
+ currentfile
+ /ASCII85Decode filter
+ /FlateDecode filter
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ >>
+ /MaskDict
+ <<
+ /ImageType 1
+ /Width 162
+ /Height 150
+ /ImageMatrix [162 0 0 -150 0 0]
+ /BitsPerComponent 8
+ /Decode [ 0 1 ]
+ >>
+ /InterleaveType 1
+>>
+image
+GhVPUH`UdkH(XiTR2P.W1XkAdPe`N:AjA[3@>H(:mMAA1&-NUg#Ri$s44o(7&/`H=
+"CkU]Wg_MEX)V&^<2ikT<EmRG</%]Z.begjNeLE^C(as6%DqlI[dj;'F?e[^T!a(F
+4):HKj10DH]`*/`n*B>Hf<a?2pO5@*l,=J=FHAcm).\gp"rUs55mA3;O?j'gA<9(]
+).\gp#!&AgoY/rD*1cd2cQDP'_2Ch`i-EWh]jTU@'`#;9`D01bY\Ea9ce;9Ma1T^p
+q:qh8GjFi\%^L!/`k6DP+Y^kem%rci>(Jtb4DA54ZohM//WDZK:)[t%YJ'9_-P(#'
+ZAL`2OL`.+G>B-jp*HVYUAj1um_A.3n*H=RcQo\6)gr$NgFANqcOW]5ZYceF^^ZG8
+akZ\6qnahF4$V?Nl;fRTT)scuA,`otd$#D=>=KQ$>H=np:C]LYpj*JMj@/JNoN`P_
+Xfe-@/][-Q=bJR7#*m0-(UmH(]c:P?nH@n@D/\`Bi>f`?I.>kds7DBOGpdQtH;;3&
+#.L4ef@E^?@V_<o_r]&#euBOq<\@bVguWSDr8c%.*mWdP@"2V$=;F)`*Vi:=R^QE!
+HuH;LO2KO=C`,p9h!2a._;\q.pu@8b.PbU6):%\jT`8?ur4c=#0OBG6o-in&bcU@o
+q.k-149f$h;MV^YEP!gpi:\(i,^WH*2fsB9D-Jn5(*ES)QUXc0jiPYUE&jH_@t[#*
+?-Y=jQh174D:@-&k41\;Ikj"0rjEfD*pmGkD/nk\/m#IsX)+>hKiK\p*n]TC4nQ]H
+NZS1P58ZQ[LOV:0Cb._C%P0^Om%O#WYe8cQ5nH#nhtkF;(.OpBj21!rG:^u-Q9"-8
+_:m>ga.!kqpXrqsT`"W!Q6So;G<T-fJ)!'`m+oGNH_Yp@]PquMn,NCN_)7T"GW`S8
+Tj(F0E$#S[^Fh`nj63ar)b5DWa"*od^1-t5m$bMio`b4pCq7d1kl]'Lo'C"+>/es^
+f=Y_fNK8L(Y$?2=\YK1GhKbmrqsf`.rnf(e;<44=qUF_5TDis.r:b[7G=UQjguh.N
+m+F2k_$(X6mKk3^))I[C%efb?qL.k"gnfF'XuR!q%NiE2j631T4KG^]`qQ(;WZKT/
+fOpOT]dS5HVr,U?Js3qfEs,;=l^W#cs5Tjr*F4*E=el#j>JE&lY93a_OoKIaRA7Op
+d"dL+4bUkgLA5(=b:u!-[D2[pjk0(u\*'Aj\GXY@r(b;n&''"e8&=6GK5NfG$tbI?
+/[js:N=4ik@ZMnN'O2B$\:7rZkdS![meZ@p8,rQm0CI(L-^R$KVuQNcd<B*o&@bBq
+j:/9kqu\#X?2=KoO8e2:hH/dq^%]48J,>i3'_s]VIWpp(r>WN!$'0KTiVe/lMX`D\
+(<;Zas*==kjmSp&s5oN;*8NSd&j:O;k<E<u6pK[$5$E*h^uF<_E:5mF?N$s^%E@hM
+GOn.0:#W?Nb2H.!T5o`)@rMfo`Y(mJ6fF?o8ptudo<>:ma1=k1csQh;N&(eoE!&IH
+oriiCf11>ac?G<JjfeX:kjl3tI<=0;)F?'%lW_u*9C)KKN^(GEq#&b#or`=/fn<#j
+-\!3bZ/sVVH+\4"+7UKr**>>i23:D%^bieVKA=1gEHB6;E5/WeAYJ<?@[*M_c*KG8
+O[$SHPaOXVp*+&&@b_E>`8RqEbubdUPQ'Qo+"Xuu*=$Z-)a+)@l)0UAnXJDuqP.Er
+e^6TBmBk9[DgG?E0>6<R#8H%8B+U*>YrLn&asDOu^C-61"+2J@`,=U.@^"1=pC&So
+<XuOHM`$R3@s+HU&#PN7SMgHEh9._&E/:-"rD(pIdFZ;0EIMKfMTQtu'O:rfkV&?f
+2d#q9lX)mQ_WtMe\mVU(5QC"M(]!Eu?F;EE^$&`cO!L4m*LYtMn6Ot7mt]0M4/3a5
+Xt6:`Z-gKC:C\?c;GM1XQW)X8Eb[[+;`hW:3(+;>oB8-C,A)\NLV>[WIES\#c,@$@
+2mg2e9C+8h(E8b.EW4o^m_8Ur2g3F8=]tUNWM^O-jR1j!:]/A=N6Zdh.uKkOLsPZ6
+`Qs"qQ*9PaKP18o9R^QsAFbP*j?)p<Z.6cLpl420lt;69`a=,'`\)m=HtjY<`a[3W
+Rb*hBe9sEF(M<S6Cc/X:%Y++H2Kf.[4SP";QTDkl%V63B!e8p0cLL"]4o/RKa\,Z8
+MYPi6kNl,BR4IH"q:Nkt?KBmL&q9^[<'S5D2ZHS0Er$3&fP1<iD"J0H)biFhcLJ_:
+-U))G3Nq0U>ptKcGhkbC:.^"(mC*Lu(QDSe'/TVQO(`mtGfoW89h2tXGGahcp`-If
+r4P;Q3%;u;>5TOXVe%Q)U)`/3i&>DGnK[O9Z-VXP].UUdkX=u%eP@1[3X?5%2_XhI
+k>r/V$(RC+-ARud_#sOtj%se_GTXE73P;f,g@dG^X`'W4G2$BVp39_E`a<ETKLpJE
+i*YBGjUV=[/(I.C^Cn:\#$YFHI?%Z-Y48C8I&>s@Il,g?6fN&>F<P,-7c*S2oZ#bb
+E-9UK$!6\Q?O2/&NbZaG/G"U5:M][HfW/R*p$17MJ'Ueq&'`\(rGZSVMpkupaaKbo
+He4Lk)D@T/\NFmnn:s`(6/uVN+n<^jiM#A7gKM_-=u2I)D=&Qt2Y$[SY79W:c=ukC
+r9%mfWKijoL9p!hVQL/C0m^*.eu%>;TbANGhG3LmkPO,FV=l\r<?81?Kh"*IJ!`66
+F,?=N`ij&s3('cfkk4!'_+!'f(djHNCbN2[a0(jnk'?NQY\)1"-?h8SLZB_emmWf`
+S*(Pg0fZ5cVQsX-NtqWH^*[dIpMT3k+-rAUY#Hai)8MWI5O3b(IP#S7Xg8Qh;eMft
+LJ>Lj`[MFGi<r!onIU(8itQ"a)-o46N]]2l@r@pODP>iUi"?OIFaQpgAXMZ-QV6XP
+D4W";b9?QqC<)6^=R4=N%iRcQReP(+dj)\A3#9!ACbTHS`*_&D#^[c^MoaU.%+5OR
+UKZh"ioR)XiD`$Xk^5_iTF>!g7]bS=*#r:,ad-re5-'][I7P2WT$b0NRD`]5DC=>`
+4t_+bWICH3(h4EBNf9%HCYj!q`i7G\=5I>ER"`lV4h2jT6iHH-@pO:W'mr9VUS`7Y
+=Ps]oI.pHQ5%G.e%H?!j-[bKR8^.b0335/<)iafMOW?=*6Ok&4-h87jM9F;UZaE<T
+/_(nkHQ.#XF3@_KQnPN9P`-jFO'"aGH?I,3p3`Rgi9o?b2)um/Gh_CG?g8rU+EpjP
+pX/.h4V&Qh/[dn6nS'Z/^t1mIL:L>53J>5C$a6`Rem#XWRqrPq(OgPE&''cA3CMeE
+>@i8olFH:j<tT;GH"qRKk@]g9r!IQ]E[o#9Qe%Oi=P!6K#-[B%0`/GaX*n8-83Q%'
+<VP>)kdij-]=TS;p;YrRAriJT6TtC(K.]92%^jF#+EeJ_LsAp8WWV4Af<iZR@:Kpk
+GJr5ua78)PqrDhV[Iqr*Nph#.0E'>_K.hZ;kek#UNR%C^?S8m%o$&p\I]neuoq8Rl
+*"m>6i]MSCV\?JOkX0INS[Io_r?m5s!s]#@Xd6H0g-C$FIDWj.eUQ<3jKQSF2-t0A
+39I3b:W(kGjb9++g]tj3oa)UeB[#F*?M:[&O&Hk_WAWRkX"?65S/c-Z@HLarXSsAJ
+IQc]K4ta7nl:@=25Md/<U(^s4Io$W1[8_nsUL]r#^=7cjW*bq':^5=$aeA\V1%NW4
++1eUdmenea8WeB1?'lV'f>D$rYslBPDj+s+kTbaTojmW]3n%>ACVQ'+f*fCTpStp@
+X0*+L=WGuu4>dTbC[Ol%#Zp6+)1-c0oR<8g7!H*;W=N8j1692&iK+s_p)VePV/AuK
+5$%ngj],>m2"dd?r%EDCZIP.+:\M.soe=Y+kjjGsPBfLd1?f`iSgO>LgAFY/"^>;8
+(P=;pg1C3"ZYP%!4ULbtltPb#`%-Z:i'+Ede[h=,[^A2>W3Hh;?4fk?_pO[d3:M`Q
+]K,P;pGI66B)mj$%FVjAfm6b0PgkD@_eOC"^Tb&fqkj&"5!>8QY"'#*`?@;4SE_=3
+X(5S'r<XqHZ7>@DaR*'[k[Cu;:>D'/+7pd4\*I%qUS&FlYIU-85i/B>aZTTd/YfeF
+n_D"pUWiLeqkeh9ED#@$H(9$q(6MW>C6Rg83%ma`6Yu@^Ps]\g]io:1C>2rEUO*n;
+kHUC814@CLZ+.R"oW0S#&aNC_-_?]On<E*qhK.YQdDc-4$b]2gANemDN-rme.Y"\1
+c,E2cC0Fu1_dj>hbA<6!$\e8+AMEf9g!RRgp/#DZ@-Yk@h^s>[*_[Nd\#6F,oc)jD
+f1`S5OaM?E*hI%+Z1ru+Lb:gaT<5oi@F9ca=R(,-(M<4qD>g:'&_F>7`6%.oi:0V]
+4KmK$"8/d.n#H>eI6M'Y@iJeL`@Vs+lR/\CqeYjK-Z6-4kV_i*48=K*Nr-E6S:&ES
+E2i\f0N8mjot/d>9_#ZV6`g+$Q:"f.nX3S&`e=NcG@nbM\RCEnHM4[`F[j^-S<!ST
+lF8amQtr%P3TF[\B(LuVL7-AuU"X'uMg(fGqQTT&J,6ou.3/>FrIr.3Is0,m[%aIW
+Oib@?5O%1h`\+ao\]Z($[5sAND732UDaNbGT$cV5W1TSYF#Cr`oD8+6Fe4"97c,-[
+2OA8E>LonSm>l^cm'UQnJBiE_T6Q<u@ii>VXKA7)4D!KNjB=U:n2IOQ.Cp'#?[C;?
+HJ.Ur;ml5pLhX2M>\\L`&'?)W>J$DFN4iT2^Wkf3CT4)]01-h@p#C>fLiG.qmt/Vb
+YJjbYmer##EmrT6Y)SlVbF%rckM0U_NP.76^T@80TJH;XYoPJ6IdlYurQVV)^3e<p
+q1LFq>_4U+&)Z#;o\pe'@E75g<M$/^VC.i/-_-F8euNESL=VUD*h+%<Gl>R9/3[ON
+cdl(D2H+C70%dVP7^r'&[Vh8oLG+]Gm28"XolJ6E]aWUjCEdUK=8$VSW5f*.migA&
+F'nRo4Eg)RZ9(2R:R/tCII8\"4L]]-?21&lqH8Nm*kaV0s7dVE-F"*V.`u6u#DGNI
+bMKBsU6`[p)1?bS1mTjs.J&gV6Z96S/%)iu>LQXUMrq%A+eo.E]C9GTQb%&UF8B\*
+YFmM[.JaeGT1QJS-[TRoVkKHnSsi\$#dN"?310_GF;R-V,/W@Bkf)Np_JIVR(TnHX
+#`!?2G\O<%jStQ2IN*a2r9^"M<VcemS]2Q4`M*I<?g)C>pc3T[\XD;Af*UeJboqSs
+kI4/'e37fO4Q80N:P0`;KBPPpbI'lD?Yc(9?OM4KrE=7(*5c;;3I7V2^Y-MEh=<WW
+O&bFkY,Bn6=H$$F([U&9YpbZSo\*!Q>$VDpE/=/)aYO>h;Yf?3kP,!B>k@eGjD=%r
+K"!@5^2@AEn!DAB?hS)IQeOQ.p0uKDQ5o%hIFZ7\`$*(2HRja45Q!TbT!_l$n<:E;
+Wd_R\ktA_)iU#NXX^jt:rKi/!j'ZbE@1X2_$F\l,NHh5:-6N'=<#>,^^\HRNUHe_C
+<V`(`%.`.o0!IG$Kj1#FFnEq!c.R47QT6&2oK1S"Ku`MKhQNuW0t2<iF,;n)4njtU
+N]"'L\r\n)fH\uO>I1iMp0M0/k:tTZQCP@1rHO?5N-CA(bi`8fG@@c;?M87$=QFJ`
+C<""u%`eB&[Xgs80f"3-DbT^i0Sg3,8"_N>=#X+9r2/2S6qnO'd"h,?q1h[\de;F;
+IG*4BY5A'LR3';2[*:\,fAG?EC7FVjkBdf)&HAI4nc-sgkWjO.gM1YbI=DdQ@IAuD
+g$1_J4X5<SG+>qM0Vr)4%g\5+Ir?[RjYnGS-8'jVitLL]s);CH:?IDu&'?#@&*>j$
+fWsl0,Y#0@3ocH0S)!jo?*8/H1kqE$41]@1&%hU^heXp-SG#Q\"1>h!=hM^;UCZ>1
+Go^j[0')l>X0.0"RD<U^o,i8YkHMICf0ZAKOn15o`[o%R`ji+j5R13!K1Gl,hFen;
+Irk&L*-N;BMGSL?5D3ttnMT0Io&=0h](<!Z#Mmp/)I;!t"h8I8,H=+p_nI+NF%>"e
+5b#E$X_6I"N#79DR!JtA0X8]ClC<Mc:]0:XQc)h&&&Xb($MG>Qd<G*R=H.=^&7*AZ
+*:eRO!6=s3(JZsMZb@5IH]ISVidEg4V]nLjr!J5V,&Y,4RS3:eIUT8f48Z[?@AZPa
+j#SQ(\]H/[=t/Lp[*>^J,i6]?mB@r*cu^HO>,RQ'fHR5$rT*Vnh-:ds(SW_AY7CQi
+lCuG+N6,DLUk4UiH$R7MENIBOCGC"`(S'IRRb?>hbM-8:\XTXs3?214I2'm]_cYZ`
+/8D(]-^$P:AgUm;2qMo6QZ.1aI-,@oEV@b@ZfZRh6f*H$<>Y3Ir'#"TS)quo\0A8.
+Y4(lg?F6Q]7J)db6L;8II)Y=8lF<n&B:me:KY'Ef9dtQZ%X5q(puPo0]e<Wo9`>7n
+9^P4`nT2h*$nNI6Sd"`7Lc1N&I6E!?RH&R7.IT!HA*fp8CZ`:?j_q(RGO:jcq_Z\d
+)nI"uY&ikf]INP`lG;\<ctD]]o_p;/Y&D<EFI"*?b)TT9]Ii]1Xe3*=Mmp^=bCRW"
+lf"!om'ASb>m6"r:@CE[_(BeZhXdbn:$ao`NTBQ&n-;`NCS?Y\3$*8<Us5*P5\=si
+1W.n`A]B5%eR^<XH`^B2AAT^Y5t)!iff*9-c8j,I"XZ%8BD2FL?Es;oC<S8ff2NO-
+8)73YUCX\A%W:\kHo_4h\H]9IS:[>b1S046oG3MXkP5"$^;ML2J!+%r3g#pjSA>r1
++nSbHLQjedj'*@JhK(%A+flP11PP+1/G)kDT8.==2iUm:2pUM>oVD?03=d*jk?P'N
+ZX%.i](>We*"Es/m3R\_E:I./?ZG3S3UL8+i;,He*<_C[>e!\kO;GT=F(#BEC[B5S
+3.t.8BE!IjQIkXUa[)XOGob`K>F!*rCZY/,a^`7lW`ruHBOU*#=e43NBYC3On>`H0
+alg!;QH(S0W=u\cgVZ4aI1YI"A^Qr&/CMj5S],u:o*4SF*VT&qc_3@7CWkE&!)qsa
+j\NQl@[Ag%]SG[kdpQtKr26$BD<?-;Ck?B]CW62pSC7.f/lYV-B5P3)"l)sXFG<lZ
+'DlBZG-T3hfm+)8naS^Gdneb%B/2JkBm[`BC[^N,:)<*/0t0[q+gqQjhV]pD8"XtM
+Zh](UmWpiL=.&fIbh4E,qM\olc$VFNnJO;S\&+jsBAVP1g)e)6PY67U_sMTDl:SJ1
+AZ!^2R_JfMX7]l$qbd[]qW3!S5#`otXSaYn4>(_uBR2Dsc%\Z6EO,SflrKK@Zn#CF
+XI0plF$GEthf:s#gkpBEbdF5f[5O$4/2ht7,^*eVAKE4[-/\8!e*md4S@bCrR`mkK
+)0<#j0);fE-\(QD,+$T@3tQmi[Wrdt/BmHflE0B=m0f[JRliY.Y]*.gJe!GuC^@c`
+*"F\r5DR?fRr<!ENmM(U=+qN,e&4*[<?4Yj)$Wn8lD@<(_BPV;S\3i-EdL[N&]\4q
+"cVM9m*pIO,:Z?hREp,&4oD_aE(B-/[*e)Of*p$$BV-i(g3]m(LnCCOKL9X&X;p5'
+ZJOB?3EtN:^;FsMPKn-ul9h2]^7qh#kO@T#;8iK,rhdWP@oi(8MuP_J&/JP%O=[i'
+bZR:Y0#AEYDsitic<1+^`p"FTfh(%VGMT<1^$O"MaiWO_Qf$XZdi4$Y5-rP,_ZqIE
+5e`jp"R_FA"?XkT%cco@)$X:g='#@XERFO2qL\E$^gC_u0:_,8IZ.?a2)mO+%f]WY
+_BQH1#7gS-m`H@A)Y,`?2fGXf@sOWX%Y)Y>_!X/0ZIm4F;rQ*9NQ7-uPti]EkZDrq
+4`]8(=+6Jk:F5X=ad8$uK0OEcAUWt@26Q1S<]S8#_:"D"ekCA5GMs=L<M)A83@qc)
+P_n%b+G4]J>f("D<n?qOd9L(942*b\bunO"Icbcn2+nlHQC8,PiGZl33C`H.)Rhik
+r@;qkD"i1;V5L$qrESY5l5ubpq2VO(?s`$!>uT]#K*uSU^jJBCSG0mpYoZ5,5PmRE
+>O`OWkO_YrFo5cGmUQmfS1)&50`(l@A0qcZ_n8V,61Qqhf1tLXS_@9(cYq+t%qkZZ
+l9q$#3#mSFUE@j8nc`gk]+I6Qot^*BYI]Gbr3j8X3Akt?&5t@<a(jN/>9@j?IG"uA
+rOoQ&E;bN%/:EB9PNR<7-Hpo.^[.uHn^uIS;>l@@=Kt@Aqj%*Xq2IA+#W@TFeg7%,
+H/C>mT=`qupd*NJN'4H1/*\@VhUaF35''IY2fP_J=3E>N^B@i*Fr2:ZO5mc/J\Qp<
+6sB;0NoTX.G0de%M59"pgDb&P]<*]=5?UA'KB;VPZ^e!2ofrAE%-ILoot&s"T@mLk
+Zne&DY1+MloAl"jh7nO15PQ7,P1TPHs.$gmVephh]]]`D.gKWlc1le^GI'3OIInEW
+Vq3c?,C\HAc^Jmaqm2d([0@V3SBQrkgT`H]>EScgh7).m,(GelS\N?d4L=d+pih.4
+chDaX>P=4hT:_[^f>h%5Sl;K9Dn?qEnp.AsUch3<C-=@[9Dbl0e%WtDZAu*J4l#50
+i&9bFF3AXg76(3bce@o7CDMpSO+fkf(>r$$$o@8M_>h@?7GJ0$k+0&d+6W*D^\<?9
+RgOY&F26:^pfMouj2/Poi5RXR$b;ONHR#$oRrNPn>T\m+%a7*.fOmh6PjcZm>?H2[
+E-06e7q;A3g^C$+Ed)r5s,fG7SGZL0j>m7+I!O!*g9oYkb8RkDFaeO[ephhg8G<>J
+2'1r7ES$qnCUeCZ_bnjCK`TeTEXRNb7s,XJ"$R@33r^SR/,TTjM;N0pNq7crPXGCE
+3;he8T.;I4>X"Xb'l8mbN<4a/p:!03[GH+GP9!YY-'+J38Oe,EDNK9BfO'\&:q/C6
+dMC#eIc0X";\lp9^7j`Ia"-hl=pb)?;YTtHIJ/kI]Pj8\QWpU!rLDFD9gR*jpMZFh
+-ZValDdgaN&?%CrDO_aVH@kRFFo&6oFK^VCO5:o[*BUEh6>tOe#X=n"\5=&SXp;S@
+DloZC>Fh.mNn663a5V#>(Gt$:$kcpb^OJKHb06X%@[mC]e")a3qc_2@_oa'IWUO$g
+%J<q@S(1+,,!;bEo6Vd=fgD7\1&&qJo='^o[IH=omns($?T2$F<a3OeG2K=NhE&,r
+hHXN,eeQV_6#YI/F^E2a@U;XOGX%(l8;c9`S8'.Fc1u_?@fnC8SD3^9f&JM%JY%O%
+NicXKGraqGor?VpF[P15@UrSl6[iZb1ABW%(n^6WjltPQREIQk+$^de@s`XbcXU\h
+3Tl44W.&RZK\/^7o/G`lq`CkG?)]hSnl'uJDNU2:5JEiWo?P,8^+DG3ri!j%WN0T8
+/n$<o4ljfqeo9#4%qdT:g.9fFYYNXB3o%KDY/PQRfT0(ZeNT`,Tfg,V4YZS3CU]Kl
+L!O@YTmoYK"$/+&1UlX;Nb?*9[k_\nZE.%D?Q8.7[DeY'FP-C2qa06GT+6V:9,gqr
+>P$c:mq^#]kE=kE%!XV$@P63s;:.<q?,\Prqg:W"j*:?3c@O%X7H]aTfMM.tl:glP
+G2BnTjfRU)7[(Nhp`8G!h,!=m3X\I67uoWXBQ+/sb]oj0LjmH]@X_e3H&(!5l[I)K
+TqAf`)i(U$6_0e'[qTI2M"-Ea`Kn8dNmF[<\Q(;orl)VsLUi]sHYAD\NJGkhr;Q1U
+C]QW_O&Cmm^2Ds6j+3coZ$HZ6>j$S,*3[;PQ,?KMfeI7QeUd#!e?:tF>A*^&im8M(
+hKi8S\XM<O=3Q,%^?;Z?laV/-_Y<-g\LoIHRH-K7n(1\[bUZNa_&&WX*7k8*P$Ag)
+4`jF5F"2Fj)$,-aY.EN+&Y@l_IW+D&a9^!(+)cQ+99$=4CgmfUm,QR8]GDU01!jXu
+g6^AMLA,X,39PGM2[XhGHaQf!D:gT0'`&BqN%X/c`jrCUIaU-DLGfp0?$.(pEa1Tb
+pJA6;l9/VcHol2PHJ<koqYD;t`IZ"A0oH_(rn_k3^!&p"3W6q&fCFit\JF&>qdC7h
+h5eEG:-$'!ql7>`4`hc]XjOn2NmDbdXpMj1c=pg4Pk-B_(S4oNEs-Vp\IR"cg0/SC
+\uN]Qq_iT1g%$8TY)0WBDd9BY#@l>AobBIs[M]R5m=*HKR5KSPEH.sDO3]JR^*n9%
+WjgbZT'qh"5l&lA`5grQ3`02(hhER^1Z-2,c+foqA@gh02Ga:sV0XYEoCc6oDBa.j
+@$+UYAZr(F?_=Nlp80&+e&%h!m]=,G/>=53Y<9C',W[LNoYJhM^_<of(@UF-0ZWk%
+>d\_j4A>;ehXB/Oo][Aj?hk<''?bM/Hc.;]iOBC'4R^uO"J8DSG`DH:%SD2Pg=MKd
+gc^X`[AEZZg1Xq5FJf&4GtVsp3UYo!f\W&Y['!17&qT5o[sR)VbShC:V&XXD@]Bs9
+Ng$a=2sY9h3A's6Y2RefF8cgFDL69tp7+0"p/gM5k6E?)g[6*aoQG_3r*K"F4S""!
+^[N7P&ROR=hX"$TrY8l9d<.nPNqq`,>S#%SG-<(`k`nS#K8mm+r+96(mCKJG[+;,<
+YqkpTSnlV#\r(P/#I";kkLZ/pk8k^#F+egGiH*e?[49]k1H$k2SQuV/J!/$m5k_&D
+pKC-qT_2O\3tcW+5Ih!A4J$i-m.je`I15C3Su3C6X;tSQkk<n>Xu_kN\<"P8AfA.*
+=hlE2_&n7\5GueX7plt%d-k[c%Na0&kVDn>5gX_2O*Q`Z^`!*5Gn&hW;>*R%+4$;]
+S`j5rI*WlU=kd1rDk'2^0$NN(EaEuc>DoWWI$9%/Ibsi[j,fQq3L!J@/f:k=@]a_n
+GP[fn2ln;Cb9rM+DsatoOiQ`TF3_eW`ZA^kmgZW#dVG?2Ui4S;4r2u7![d$3jmVOI
+hp:W.?.SbK?*t+&hIm8BaWBu8m,]9i*^d)=<t;M&Y5'7g-O4pm35c'_I),rE^`dN6
+rm4eQs5m[Mi]G_6H0QIS*Er;HCHltmesj)Gl7dM,IaM3"-Ke\K\_\eXgGaeXiEB9l
+Zp+U5NI/kE*DLYF9$qjjhf6OZpBQJTf30*;hO=IKC]C$@4]gj8:!V#jhHFW=`A]K[
+agFM)DnD'6hk"P&[jT,g]"`fC\=bpgp"4?`:A#cMZQ)/TKK-?1$pXT4S57G&2)t7S
+k8,bPWMJD04EEaa@.bhND[?(tB$N$6VT3W!GqX?Fp>F"oT>"#HgXfk>?0qIX9>/'d
+O'Z<HQ,BHFGKXuUCWK,LiFDiMJbGgQpKqW[PWAJ,bIrG]QUTjflNE4%?kL)>TBY*+
+D;JT"mN\N5a"K9QA=Sf;o9$K)k#(dF3'Z[rkJS9[kURjV)d>DFH&"I!L,%QR)CkL?
+j0>e'Qan\+[*F!]Nj3r[%%!q@dgn\S(>W6I&'DG&(rH<qha7)6G?XDMX6rWqd%'Z9
+Xb4F.JN-=BrS_?q55,(M<ndKp'm(;]iP#!gYXiX:Ih@^eX89/`96FXchrSdKNPBOq
+5&uYH6>$ATH\CDnfRX9;i=`=nSHq#j`AuFt[*KKGH!&SIb%"SdI*#o+(>"`GHLX'U
+:NRi*Q2#`HRbNB@rC$!#Z%aulIG1u2H@'BJa`q)qh:cX][O`W*'BHiI\.fo8Kmqeh
+og3f]H8nUQS9k:Y?b7,t>(.N9'IMe$]J_e_Ik`t]GdGGUHYqsK-@b/&^Y\=JRsUlX
+^Y':f#j&?RB"GWJjcKADAe0oAL:k<g/94Ka2eq[S/6oa"*_*QdYfGXO2cqk;UqYl6
+)7R\_F_6!+b["FCYm,"!CCS8UqW<Lur@Z^VKbL#L3`-*jeb/iC\!G;3E0q'6"6C&r
+8t:5(A3Wrc@PR"6Ya7Jm]K=sT9/$a7c@gb\G(79fcWD%]b;&,)qMG+>[<pZcf'F]3
+,kK[^*GBY.d!?Z?),HXG2RfX@9,;S#4eFGfaYA#Ls2GroIuAR)Qj?1>/G30)]@q(B
+L@XPs.s$0jKC/JPH`;;'eEFJ\[J("T]D+A^&@,YUB;Z8!'HsBget1hBC`%9_HM7Jm
+X33"4\\C*!BuN1WYG8ufYB^t0KJ@`,e&3DV_?OXZ&HD3V>*#q;-[X,eG@-=O7,Nt4
+*m)!"l,.hpQ7bt!*3'[3WSqNr^3sM#-;#'@q19PMA#s/^O8>pC=W%/jc@<i%q&T,-
+]Pe4[Ng.T6HeuVKWQ-R9p7*$/3L_2&oWe#MFuBcSE]DI-I2o\@Rq+5I!_V;0*^KE=
+.+Ui6?#[p_jY:i)`lBAYIG0q#X9i(:gL'gqg^!E$g0`lH0()$u:sAf#_S'=4q6qHk
+>"Ip(r?ue4/93r%7G?df`K&?7j+4V@?F![[(;^kfGGbBfIi8!$X)BAHekte1[`2r5
+QF.E5F'h(W>a-8f"7BD][*-ZViA\Y4p2T<1B^P^0k;'$+gkY"FY`8(Ea/sJnF;OCu
+eWr_t,>@76c1%&SnCL#4VXN[hORr0+GiIrZ_KJ(Ejh*-?ohUHm_.&7nC]B=U>#phU
+`0a"u%5W$:09&.En)8Cu=SiQ^I[sM(-BHeslQ8cpl+SQW:04!/7r:RuCsHWUm-SWe
+_r]&"dMs?+?&1Wj&(if[bk[gLV<B9#3J3AsX4T?u?]@3Qn-Hf&/D./AZ/O"g6jDnX
+\N1S?\aHkFGE"g.W\[$*mH&@&ecp6p=P1YLBC<*q]A-cY`%DfCTC:4K&FjN/jn,gV
+DNnXP@-NkecB?5<=7R$$^:\gA.MgQqZ=lp<FQrAeN24`c32Z;Z;AZKk6Y@X4cU#;m
+LZoVH?0C,'Y@0NiAnulPp.3a^F.Y78pNcc3g;>D$nD!Z`^c1VjYAWdA7aDNiou9$W
+fbh6d\UL"@f-hWK-FVto^0:,a&MLqelVDoRoh_g5Zen&$jO&8,qMf(bhq67BGJRb?
+)c:aP4=*)_3qVZ+Nm6HW(5X2u]2mkESDh<J7!5307a*CZ?!Ef"?Uua,Cc_;t\ZX5%
+^ErS\8Y<*OX6+QW\\7E`A5D1`as6`pk,sYLLO&\\kLCV@Z]bc,EX3bi'2VaVHh*m`
+/@CaH\'+WQ[>WUK[,,E`%P6\G1M=hq/N`RjF;J$1gj<IX*@tAQl..Vl6PhAoS=;)f
+DUp_T*,:]-$h<3&Kl-k*%r.a$_p/0F\]3^8]"Uo\q$]/#qjK[Ng$8fkmd]X-J:/CY
+,BK'lq3T!WlC:r-KqqJ.4oN!'cre5X6@8^j""%8OQ$1m\Lc.H+n$1s"HWW<?O06B,
+O']b:01EToHXis0GJ2GSqt*8)2Tqf.+h;/sdUA?EQ*:9&f[k:inWQ+Z1"R@/(2KMs
+VssQmNuZn6485sLruT?'\j"%MKrtk>#*FtL07%o;Zes&pZ_lp`=Q3EF@di#.?/K:U
+=0e4i[YrIIcA1$7jb_ANp1:T^\mCiO@l+"&bXu5:D^jhlW<9L+]GNNgXnBC,S`J-W
+);fCOh2;X=KO4uqGLaBV%a[;AMFZP':gF/LO4a2r@LW=m>oW[q'8mNRb@0gQE3+"l
+:S@#@N.oHDg_u*\<iP;nb$`KqZ.FPsT)DIkINZ\;VX+^dmBh0omBc+g;CBcMLn7JX
+T04%RG[us6CN7F>h,\0*cLs+HFA+;EofdfBQ!/fHXE!hoIFrQG'0"NL.Ws0#r3I7^
+*tKF]X8<1[hQ4aRkMq$<`oOW'qhIs/LR]meP\WZHVrmd@IBh\FIN$g7-%kh%-A+*o
+_8^2;g@_Ap@9OF&B1[Kb(5MSrPaS2B9]HmkFNrB?T2d6kc1F!>lGpm-G?>7qEN/)>
+ki#>;:_*"+dk7[3iUF#6l!#M?X7js-o,V*YMXL@Bh:L3M<4CA"GkW7hG1lJQ3`4Y5
+D:MAt]@S`M5AZ`*f#(m&SEa@`_V)Xt?&gXVZuHSr7d$o(7pmtNa4FA8U;q!8F++o'
+-&]s?)],P]>\\R+[Pdq>gQT_9==[-t6h2e\8TY_1h#GlM97(M5^8&.5Y0(7d<h>bN
+2.L-k@td9k0CFb=\OXEq4@0pmIl1kgE:,`YSDU_6CjG*OAZsLd?F5JX(:Dg3eMr#k
+]mY]!l8(I3rf!]j.sk6T=dGNu6u.&%Wr8L6L7RJM\(4k>Cic)TU$m[T2RR(9bN+o0
+[@j;!O77)o52%JjX_teTjrRq@-5"iihcKR94bi[Bl?X64e(6MD,F73^(JaXr3mdQB
+gqq0:*3SCmBs4jtm%./$qa5;mhR.[#cYiUE&bf^t7=<G2T5?4shds(I4(Ue3kNOPM
+S<^c%H0mA&B6g2OVf6I4S,#G:amSmj>m(%YI=/Qu;a!Pbk1XQt8*iFp.1\O(o4upb
+kH-emI73&@rYK]c12,PrI\+54o/Ku*7S#feS\.(U-\ehf>frcSa%WVcdq<$o4a>cF
+3G`9XK6Wo7dB3Li9c\!NQ5[@t)kTe@[816Xib!%K>>K6n]6S5`b/=eNUX</j?[>9+
+Z7jPQcM#DK?H3>(h=p*&_]c\#*0spqg2DTT%qj_D=c%1)?3\_hHo/cE9'.7eWJ_U/
+SC+Z$ZgI]jm*!;]KLL6:Z7l7<9g>:3EB.KlN)=V4^pZ#5Atep3:O<`+P=$V!U5sO9
+f,s\J*R0B6brIn@p<Y5>Y]](!K0t#ScCOq5n58%HF+WiGUMWa9fA\I^](GBo]t8G^
+B::n(eJZ_HoW2%W2gUt\]?<&uXpp[cY-hMiU`Q==$JW[H?OkYQB&_t_?#5\0'!X7k
+B!%,-XFcL(9gp.dgraIkQi5"!g#b/;m$">]md%IT2fP^VBUtp"Tt53kRm?ER^LO63
+N1%W83=>m1mQ_c;>H<nPfB=5sm[^\iiK3Mi^7Cm5opP,!m%rmMrUb&8p4%ql)ggl5
+Gea3OI)!cSq1YuL5o-r[I<jY@G9qQ^Q5\MZ^.oc4j4!HcXi&lLh1s<7YK>kS3-Y.j
+iY=JleeWU[a^djB\q41>*0Ps4S3#Q`=Wup/k,mnH:p[%N55FPZkIB_AG]A1h[[H/'
+_sZ\u?^:3mi9@NsV)N=oLN3k"WkRS^P@1SYp#k]u3UR>^4^(Dmc0t-b^##9i[&<bV
+Qd;Y3*5T&!a5-a(`lu_PJ-2r_r0Wd;FGM`;pe7s;i?QXsK=Oap*p$XRbPfqI3Cf_5
+CMkJGmF/5TTJJM@*bR_9bY4!W)^/j/\9;@;[pc_JkIuF[P?SNRRh+$;E"m-[EQ_hC
+can&#:CYo(I^C)XK10.g+a2+USbC.3*;9'H]2m"\gpp1>><]5cSFI33SEJZ0I7$$=
+=[^P_;4KAjp+LW*aIE0SoT_IWV;X,gjHdp,g@sP*I>lh@j,ucG/N2TR*4hFO<oAX;
+l?W)*>FbT0\lL6BZT+-P?0c>)jR<g?-Za02/(nt,S3bFV3lh4Im^N/<HY`Y%c7R1]
+*;$?m-VE(GYaGE`rJB0AIDc6@AnoSCD-e6`^`du73TTqnG9YAKq*_D3L[[R3U?hu2
+iQA159]$gJoE+49d^iK#hI/iRgq1Bc7'OkeET\8h`Z"%ZR*+*_jG[AcAA>)/4.H>m
+GK;uEjH/[YfC1@]r?U")UlE[tc$F3t%>/M(V%:t-fOX=N[3'-LeAo+;3Nnr_r."9G
+r3!8(p,[Tk_G!YXk*jbcF,sGKJ+g$dmTl=%F67Gam-Skc>rZomY-SQm?\;'3eo3O%
+l]9++F)/Ohl]'t3am\8[95AtoZRgkA9FdW,aCj)hboU]mg)L`tr4(<-q+\s)PP=6&
+_?f<3]7N6,r*sZlF^4sb2<G%$-Sd=BgV4c"E)#hRfZT+gP='FLT/"nN(R&jB3Yi36
+m$bKi`;.);p5@(g1O?7+CPR2**0rWYoJeCVIjg5X^#D'H$?+Or%(:H[CBUk/eg[R#
+EK,"@Em:=cckl0O$ZNm=%VP^bkWN\r=_l2`Pf0KfQd'f2D/;E/<n?bf]Cm_j:3)//
+aPZF:mZ.6<fBkU\M"@+VG,D8)FR;5*qj2A`YeB\_Ac%kR.XSjl60Di@Vh2Jk^LR!/
+%(>u)E]7:\o82255olQ)&9,I26!n"qiIH!qmg<^jep?bpc0VI;S`Yj<SX]f6C:Kk$
+*YeL:i3;R=Z$TF6D:b*5)fRBr(Z`*gY_cAaGq]V!E9J2t@P2at?U$^MR.'&4I+[3r
+ZX.mK//k;1O+bg=Hg!,(h/OI0"5CKc4PT4m_8/%5cG*j*W/&is6-gH1MK;2r&Iu$p
+SG*D+h(33>A53\:3Ci5sN+q&"\)47Pem(.ZGO8Hu&&J_+!P/S,i0Vc*Vd[t57<s:4
+`PJ7]n@9Srqrp,TqD!?]m:59Ar"%)47GjZLHWTC.[.XOgc3tK?A".gkA"V0=MKML#
+k)<<e1"p6BC&PCH@^at&fi@2!S>Y>7+jMl)f6,of7h7ND03l-4G<gYn@d6DJGU6t)
+CXpN_>oP[4^?p8nYc",m`p,e^m;6>TWUGIB^'FMfgck`sf:Y;`m!U9uF0;R!Bg/:t
+\G#Fb,b@g`Aul%A[o=Hsh]<jJS`ou#fn4p#B!_/hbF<d<k^hgA)10Z9aRqg:9>'H-
+as+Ql$omQ!kF07reh#P858sLmm=%]IL]0sGYR+PFGLUD[mu4F2J&pqR?fg(37l[i\
+f\0rt[D&6NHOd_:nV#>IqM<cYY#Bdr\3Z1LcX?%d3Y)\1/8AqFY;.boZNdM%ol6Aj
+"mf<:Uoouq]<[6!9Et9=QdpL$]EZU9i:CAuZfa1BTA$\kGLb@Q[oLQ'=74P5Ice0;
+_cPMqo*EtP=<gkq5%e0WSj]a?,M\K-_YAqTcUL.g>H*O^Q18(qUjKr=^)jHAL'_Lk
+3GX0*37m*>L6LBt=C*&IH4^A.*Q0Qai&(Ones?ociKLMgBD0fd+5K([ErOUA[D/-m
+i7$QcT9]Gups#0pq[@u-?^*``]:O-6&_FJ9kb;9J#Jen*0it2i[Ni?nfcU**_5E6$
+Mm0JDWc:FIP3^5$&QW9@I>$EMq[@\oXL)=8]*t_lLJKbIJ$PuE?6?T2Roj!*Pjch?
+kC;RmR2<3NU:oUSbaVjETBiBZ+*##3^+j(#oc+r2gXb&(S9smuqc`P.pD.l>UNQjJ
+ZONArZlP(hYJM$pp6n7m>,TjLb]mB@gQS+2e\CH%%jcRj+7IV%r"%qs11o3<m5)Ic
+k#:+)9RW9Jo)%8uE&]e+UM\R/B)_Pi3]kb-.aGGEcbZ-@B"\=eDbFEOF7$ZIB"lIe
+[JrS*B`+AX]$-<"$kJBUF)G(P00e.2O*g6'3N[4$h/"\EIB7iDIa5L?jR[F.@UG.0
+i,F/E7QlE2iHKJ]?fp(V=m#rJ6d<<i1N.Y.eW8jIH1'6E#L33-k/<*tFWu>8lC(ee
+1A9"H:H7HSXOGbnoe*G2-f[."r=rfXluV<sg3lVuh:Q91pD$R&\S8:kF+)"!c.%S/
+f%QU=2KTFTmIlq9pct,A@V-PA$s&L\M7\drIX?2]a5K*>J'HWe)->tAF8q:go_iE3
+Vu*NcpeL$brDi0Eju1J`g?W@C#Q?K-lquJ(m'sOLqWE(P3X!4rc'9a@<SUMo`VT7g
+`f)D=FF=)]aGJ]a^0,isIU_ST\DqtRUikXclTCN(X*(r'B0KX;nFoDr6Hn3H'?Zir
+.ddPWCX,U4?FqrO[3N1_a`5S!5#G[YXl\f0-:c\M7:>-3aGE%3XQs3QGG!:/pX`Tp
+/QG$In$"UFF8q<=]I2<iI=AEo-1O-%59]Wrk#6?I''HX=n1Ac(ir.i.4N$cG]s2+n
+hm5e!:W$,C7_;sXD-l:saGCnT]'c!Pih8D;Lhd(K^/O>?Lc.K\>TQB5Z7;JgJ&H?2
+LjgRlbIO#6n[(FnhlbR(qcsGr4T@?I/'%AIlM:"Oeoa46j@(+S\96U`ho/cT1OJSl
+p)`2lh+)W!R[IsNiUEJicfPK%&^ZZmChLQFSgF6_mHgUa-Ehjs+-2g)O#B,F=egD\
+SB+!tX6jK'ce^n51PbmIn&L^e=VcK(]bC1=kW?;-48/lf/Zoh$@iqP\8re6.;m5<,
+MM'i$?7t<Ckidf>k,5mWP5?B0I`itp[lA0HreNY:+"_j5(-N;:Ym3GeeE9go%<DSs
+kI<Y2aO/^oVJf51F8fV=r[QKtS[\9*^L&`MGjrKJ0m?p1ooGki?@2Y/a.e(NdAB\6
+6kd`Qr1-r9qIuP]ZL7SIEA20?O;%BB(k.f;"rUs55mA3;O?j'gA<9(]).\gp"rUs5
+5mA3;O?j'gA<9(]).\gp"rZK0jo5G)m9`'
+~>
+grestore
+showpage
diff --git a/obsolete/support/png2pdf/DOCU/x2.pdf b/obsolete/support/png2pdf/DOCU/x2.pdf
new file mode 100644
index 0000000000..cf23e669ba
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x2.pdf
@@ -0,0 +1,189 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.10)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 128 128 ]
+/CropBox [ 0 0 128 128 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+0 0 m 128 0 l 128 128 l 0 128 l h W n
+128 0 0 128 0 0 cm
+BI
+/W 128
+/H 128
+/BPC 8
+/CS /RGB
+/F [/A85 /Fl]
+ID
+GhVOjq-+QR(B)_Bnm:=YJ7=])#%@^7`%;R&e>S=BmRpAA5]M_AJtN_PSXS"I/lb'P
+!&N)ViVW$Rb#D/<T6'J3pK%#f8#oZZ/%/p_D=qXVCXtIL]657U0HRM$h4aoteGo?*
+ZiC$VfoJ?Yqrt#(N5KlG%jreVF;0`qd3bINej\oV456t_[Z)5IR`=h.*%OoX`sNW>
+YZo<X\=h]cak>h$cF.P/[WQ@\irBSOJKdO)Ll6a=&L$MZg]C6L[r%&'Wgm'ja&Z-&
+dklf7i)l0%d=HB;CPfil;Ii,HJW^6t+Pjcffo@(MD/F)NGNL`A_0@"l;CijL_BXZ\
+oR4&2jQZ.JR1OOM/uX:!g"A$n3;`AMBE.j9:?)<ak(+_qEo@TrBjs&LQRiDfau^X#
+_G8>>jM[R%"4CJeSF,2#CsO/8HhZYZ%cC_985_t`\R9+/N0Xa(!u&WI`'T9m*1l"^
+fL*l>2B^hbcWOPEZheu\qtK81%cC_985`!6`s%<-6ms%h-Pi(XWA[*"3]t*HY^;`N
+D5,b2&03agm'klB*B]_<3.QX$PXlr<Q4">ALp5iG=^YRO<@gYL\&_KbKY2GPpnS/,
+!#O.ENDWW<Zf^E&%NS.qIEKAc8u.7QNsM93L4a&'MF85G;'<Y_-ofGT;B(P,*'T$]
+J.(Y[LSH(aS@,`BG4aut9C(o`F"\#pa$9'#BDRjFEKj!+*?c"%#EK&M"kH5SU<3uL
+WkB,eeDAXL&G]S8>JL8UCTFdOa.hV7C%ppT2lrSJiJ.^4j6EiBlFWc(-hOAWa[8UV
+kf?1\aF`sak&9@[Ou!0ihRYiORE.a*KffFo3]t?sK3aiX9E9G1UpF!tU>LHU%6%Wu
+[;)/gbPE/6r6uTRndppm\ZeK[lo#h;2mL02JGDiu(^QCp&YqG<m3Oa?H25)mSdIj;
+jlF@MJH,.0FS^+/ee[#.1JQCQ4Rcba[_7RDT#IV6,B4EX'cl@eTg9m$:'q4F$d8uZ
+NYDa6W(!dAWB!q)lh5UcVo-^4!Ki-tn-#cSc:-pBa*-E.m=pZFr\a#^nW>Ve`)1!^
+E^:ld&IO:u/D*3q7\CO%3isgH\!ePNQf+MBPhH[ol3nYqhG2]db^nrrMpC&2SR&f0
+CT.4o`4rJ??$,lt#K27?+;qFhO9e;Yc;%XX$WJCq<cY!$YZb!4ks.Za"^d^^kk6(g
+PSuPE]j7iMF+=QrY?Zq`r6s?LX0A0_I3JTX`r>2U2%GEIj!ZZ,/joge6K'%aZ7I7*
+K!^?u+N;dYJo:f7PEaeEm1J'nG?LL*h;-nkq8JA:*tE181"b7n41ntq0F*t1p%n?[
+UVg4]j6XdF[^o<Dri*RaV_Xh<HTZh2E>08s\KDJsc3t`]BW;uiAEl(dlJ-e<<[>m&
+Zc/FL#g*F=!aKkO'R8QB]OupIc&p^![r:"Ua*$"8RX3]9'oNK^&a[@sMg!V'l)^p9
+lL'\7Vs!lp#FQgSYc$[`_LJ-@;iKc\A40[YLb&qOX^.<ES^5FF"+D@@,?QP7Q*N\H
+Kn9k`Q1kERRR=KTEI1sBBOcBk2nHXnLSqTpG%+4^!Gl\XZ^WnK>IU-Y^7E_4!$cap
+8Kf,L:(kC!\9rSb`e6H<dW?e\c3a\d"DX'qJ/Poq'JSL#i1k+ci(J-mg7L@P\bAjD
+]s,UO=m)Ti$[)O\<:AU^G5#lrn"-l_pN%5X?mH7+,G[[pA0^*WPt^BMY`?Ekj.p&b
+6!D3KJ1F?iTF;Q4Idef]X=uAGes:9QCjFK4G:sR.07Vi7*M2,*@2IW.*^gM\7ZSTN
+qs1GU`W6p5nRBEL_2.=AS@mF<N.:dnQ]bGn@HPc>U]B#CFH?h5CpI/X1?!Q;>J\X#
+Nk5G(;mroXhV&QJDtSk21%KF2$Tg'jY^LrIj2]Q2-aE@=-^[*:8;u__i^-&WKYu*[
+j5GBI'O5BbR>RD*MekHD-r<@N^7[lr=lJ;b#_$#bU=)D_P:^]Jmi&VN]6<ksi0d(F
+%6,^ML9T.KKfQ@X(l/A$SNVB>%1VDUI*,k7:I`8+^6:r]SSm7%3r]I!Qr?NBHKLA&
+$REq61RAk3*Mc+)F"Wdqd"&@MAASelT+V"2YXcCOg+o..]:'hnf=]kCl19J[Z2QP-
+1%KF2HFmQ4jog'V3#WZkSir#!q==a<V\k9\U'':_M838+_I<4KhetTsC,SiRX+&sR
+2"9ntFf+;g!mI0OK$lqU!Ric];Kg)c,:[R`L9(]/oRNt5=m]&W6h&c,TtFoQamoX6
+O$#t(LDnP&M7ePu@Ld3E8#$kRS@s:f]m>smn0s-$4;e_IQ3aaGZVuu?+3Y(5@tDQ:
+'f0L/Q:M&*0e4IA"mh7@5nOb2U<1Th"bI7.`?cY$;0Con=BJJdl1Q:koQJ)HbR+(1
+f?p'HcMmgtg"WtB`fE(fj$a3eLI<g?65HkI'\>l,;__M#))K>2R19Rt^rs\c;'El?
+Q$oh&E-["/Q:akc^;*5Q'7?+4bd2D<KKjT#RNU\MW:G,K:;DGJ]6DQ?`hN4rUCSGY
+mGl5Is2ClQ_nfjdh`rA"&NG\N^tG+l0HUKc[Q8H8`LKL#Y/6r!'bU<Ei4oL'XqB>T
+Y]LWNA=klKb6s#ScXmq=2`2t)HXo_E4HYE2db=pe!=-oS:S4BOEG(n.-Q#(b(_.l5
+,(^DXmjAL%"e7^a"DSP2ba,dN$Fi?p>\k'>Z'<;O^2biP_ZIZPk"tI,p=+@9K93"K
+e("ad0aG?)'@GlOo];";Y?qs%+(5RIOq)M`mpT$@*680r$$/oc0I'DP$D`2&FiqZq
+"A;f>ei]Ys=P62kNXh1G(/%@Kg^nk1>"#rEHO:7I5sA)"-gVW?J,XH]m9;D)(#/BQ
+*7Ne"L4_&o,_G!J=C>I.*%;FQ6RLoV!iBHCV/4Cqm6JH6Jl%.:>mmpf%@'GhYFHP`
+:X-B,;t()WZr_,UAPPX"YS2'gm6XKOOGH:?E-;BdAgIeO%P.cUa-Heg@[dWc'j=j@
+Ct#PhH)*Q'p<fn8>@`qOZ7QZ9$GJ>eD@]$`5*(]Z^+lm8o2KqS=,.O/AC7XE,3%q?
+3@mFXE*g[!"$p,/FHB#oY)]V%Xqt/V'7m&JXG%F\Li't(k@`%,jl+''U<gurROjbn
+q8&u_e*XJ&^La`UNEO#6HK%lnOO(fGo)]#F)'M3J/5"H]fgJ(?![^kiej<[e?;LpK
+q3?-2c7i=F7N:)DpYO$Y]0C<m1C&;lE3+5Yq#m=AO,Kjs^^5Po''7&"k1[:h&`D_l
+n\M[c:m$hUE*`_M[>5N)L8'4/J/&ZSdOYRJO*>d8It4SKf)004$>Ed4M0P^;i&SPH
+];F_)gX0Z#&HCB?o'ORnLPmWC&U`.i\CdnF`8G83BBl*<S;1JECo!:0O9Gi?.):4$
+!G7]i!F)nrfA$"XfW5"b[X[T+YrT4R9uMqqJR$LH[*)MEnDW6[h8qTa#sK7Ff(i"L
+<d"a4;_<*A8N&(YJ/p#Xp[$^7@f1'c:l@"L;'7#k3bD`\D9[BeoI!o:mQ5D?`28oY
+GgR\mPs'/:Rs&">)E&s*KMtr82Cn[+o2Y1&i3UM@j[54@/4WoRf6VDNoG#)[G#Ekd
+KG:X7@UG3k":&\^_Q2P&q6dhe%i)C,3"1@)$6`XF,COp]5NDZ43]kq>bbSk26nJ5Z
+\S,_S=!rS1q$k,p]mDgM2o/SSr"G^G8-.k:8-.k6X'dQoFfT]WkCd%V5CK%r`!QO7
+"]PcPgC't=[:PD`J&_:MGLO"`#nN`[NlB-cfgfh1lC+QH&oNlqbH>*16_Ngg=n&mt
+TQJDP'Jmf-PmHg5C&I'uGh!7-?b(?q$NXf>'gdV]_d)R8COVO3lul0p(clcpH[&rc
+l7)HUJlNlRgk*@t9mrLC,"AfN+%qk#jl.-m)K(&kh6M$]E#cUNg&ZkWZ@E9*Y8>9p
+,/h^+eK-T\F3>Up2!Agm)a;uT7ffYLI!0_>=S$d[K,t\C%Ou<r4*eZ?4aIs#^nKn\
+A"ZfqmS890:i$J@&Ri,81M6'Sd+u=O(]/=7Z?lKE?u&QN0#S=j$6cgp=qSo@Kdf2D
+o;^bLc(B--f6X(pbUtbH?FoQBTVFV=g/ZC-Q%uZ+Ar!30Wf@/-W8!Xl&W_F1L,\'i
+37Qi(MFR^0`hF0RAKpVCLp^&tmpnqL]5"GU!=cJI^dl(gg0lWBkE6r<5%3-$(/Lt?
+Vbb?kS7oFZR&f.Xg/ZDX.1^G=Wp[`M>:!`P*/`g*$I>%?o_'!20>K\5'iHV?PDJ7B
+!8#MV(h`m_X[mD.c7;<S92I$#M4#1ISlQfagRSGNgC9]\2%Pt-ZG2KTL%FJ:O>@pV
+7gKI\O*k6o^-IMT1KQ.BKL"<)!s("]ECGKHE+0U.01#2eO&gUhCX/NB?#@YnieEB6
+:Zo3$QN_$<as0:P.?X.BI\;0+s,.\NSVsI6/4XP$<X@VUH)D)&Y!jLA_CVcTF?pPX
+2$[@]K]4eOH!Rq"Sb)^NGc?I0O6?F5]5X["Q,afM,r#ur*Lt*`pgkpT80NMa#X\UD
+b=*Qs^i`L-$[WNI<C(%<`jX'n3N2N=`/![&]YhU/:=]7j&j59Bo?UM0baXFUU(FV_
+n41Z,P&`Af!G2@;A%!1m=3YkbAmqi8-V=rN+M/EJV#W%F[dCB[_og#WO-b,lo;h4\
+Re+utT>ujVLuUo$NuTe*!hIR;/;2L\,\CIVODP--(;WHk0a2g]DqhF"Q&ijRX$%.=
+ebgtFQKJ*%+RCE6J%j4f?`M(+K`DK(o`A0GR"ZtTH)_uE@_#Be(7]ZB=5qP1/Sr%D
+PL6FY6Ld@5ibAR2re6\%Tcs4e&]8Uq-rb6b<=#iGi/.ZDE2!K7$KA0Z2.FAJV>q_Y
+/k:\^Iie.C*F;`0[d9pefZ]7WH@]X'U35=K!C(oXrX6=?(b1GA/P9F5liiW-,sesO
+?km2kYrjHXYm[eXf8;f_=5+[OIq%M,nQBnpobN68G:j69Ic^Q\lQH3%7gTucC_ilN
+KiLsP'EHq$j_/c;2?an[I.N0/g+G#QYk$1n_ihu/f(W5c!`2hBJXQ)Dn>6iTUZ%)l
+,`#G3Y1.7*&lV&H.9Q@lSQD2+F1&]QptNrh(uc2Uid5mI+o=k4-!V8*r4OT$9*'m/
+E39nV0$N<nM]Zl^3UFDqjK#_uAE#7h58MF+[)h5K/eF9s"gAS69Yk$OB%Ncj&kMf\
+.Xo$AT.p)8*p+Jd[Co#/4@;L8-0>JEiEsIV"L\Y;,L!dk[L5n=%Ms_;PsE39hVrV5
+ieR;Uag\5.0DdLB.mG@5r6^Oi49^Be3"c1p"Ice&[4=JPMpLAECJE>4G&6qQ=7tuN
+e!%<5%6H3q3tsdP-Jk;UTgp_*$KaZCfS*n/MeK&7]7%SpK/Kh;%X/XkJeirf[eRLB
+hmmp\[lHZQhXb2OnJN*,93ZS\DcZdE"8sNp;TO#i?3t`NG$DZ[.*15!*kqh`!rc+M
+Xm=Pc$1Br?]C9cgr(@.8Z]St&5>N>eo%%bdr(!s_Kth-rC!G7ZNh%X8ri[9e-2qd@
+F(@6^r*dt%P2$+C+T=<'7hWX`g"`/Gr`]"H)(aTLZX.k=G3SP;'r?S50)ZYKs!U>9
+8'QYn%b!Zb?eWP"k0oq6RH!KBo<5'4VtRhU.0#V(Tq1^Le+!9E56%j+r.2ZJqNi9&
+2tu2Z@fFm[=2.bKXB@cJqD6UQn+PL-YPouC'i=o1LT\MsqeP&^rbSNZoCu.+_@kXu
+n[JH5IpQ[SI&0^?QQ,r+lMoN`;#W^o&bZ/Zl$lXL^NBGCZ<I8W\!:D#BDJWYVI3t;
+s'.bRs68HKlLk0gErRZOjBK4m?d%F-Dp%'Hdegf&iVA7$'`T@@s%qCps.h)-ja$j'
+ZCcV>^[`rKo5>BAr+F0q%cr!8Z\"g!Y)(;+lK=cip%eWFE;oDjs'L&dIn@!5.KAjD
+.e!+=.@32/rr(GXJ,f<*8nRWt=4)NtR&9EgnGC8JbY<<37K!,E_LMSIgtMGEV@U<m
+[U[d!G<<*T^].#,H1Lt6GI[VAcWeELX55g"I(Z@j^].T\n)&m1G9lN>E8be6IfH!C
+bqn8GhhNiW-gX(EdT)gp^Fs-tLSh*!KUjN+a-OI>6^lrZ\,ShEY@G\X^+.;)%h%(j
+UitSkjS`_W]`1R"J=j4K8`K_*2=!F@D?#fOp]!7X-"6hMIF[eQ\Go?>i"rj%:IES0
+96FIq'Q*lBK(m%Fh:%SWnqa/o-168JRcbKqs&JO8JV<45p=q7Rr`99lrs#Se?2N9$
+H%F^7IgQ"eQ+PONq#54"eQ;X>c+3,n_/I@i(3BMbK(hJt`'&%Qgp-U&8,^?'8%[dr
+TuHGL=B5cpYl>lLnbL;09Z&*!e]f+UG$uuFreCm7s)[n2J@;4Um/EVg$A;mTs#I\-
+GN(6n9Afb*NW!eU4eIYEoC+Nks#,l8TBGRR]s@\0b5USgmXMsVs*s>2s0'*8,2N!#
+XM"QZp%Q5&]`0DQpE-NMs!uq"IhhkZG<JIm&(HVVht6a&cXVSDT;;A`]:hmr9tu_U
+fK?FBk!S<oV\T(-]AgO(Z#.fX_C_7AhZ"F1k'Uq<BSF2#Yo)poI=AgbiVh@I-dm>@
+C#WV$aGK=WI/dn8hZ)?@s$?5QY<.'Qs8Lotbg"*#04u1E<Ts=0=5JFtqYRI_pAXg6
+6WXn,*jL/VmLdV=rcam;G2oKR+-dqZ?IA4k="[7D5SXn.!\TZd*?7<#[e#@Mn:97X
++(\dPe]dOkJm"t.#^@oI'-1WEp?g6XI5b>"19Jlo?0^HW@^H:uN8@=^=]huBaX5^"
+j#u6D*2dNVA%.f_F((8T^8d_ln4Smb$`?8#J/#4FZftjE&A%Vmg:ub"p2qGq[_D#k
+e/@ud89q:6;0=Z78-F=*>_nEA[FN$Zo+J"5QW)_RqD8DHR+'g[D/<hSrN%Sj`X<T;
+O*8)VQ*:'a\)g=rcWt`BbIY@iT1tUT+4lttpk]\=*NLjO!X7$R[7GiK76PfF/rd/^
+fi8quJMep=@5s>Spo:hH*LTU\9;">7#@k+I\1jhi'6\aZOiP"O7\!P*(A#ADW:k=[
+Bat:g=/7mL#rb<B6OHd)OTI.30HDhY&B/\m@?q)*$#J0\7*#Pr\9bQVk&%u1(KFs"
+g&sOV>d1Q2@UUqN4h'US)E!<.j,,D_\DD>D(BmLQ/5"S9F,e7UOTN@/6*ZM'OClBr
+6r9>n"mNO=C$3Ksaa'Ci'6%B?D\28UGa:;ZGn522^""+*mBFK>WQBg_,5ASj@UHq=
+=;a+R&6PK\"Y(-H"bd%$@RO<NBGW9XDL[r@kZu^X#;so+=j6DQKUiV!$qmu?nuOMY
+h-Sd#*A6[Unl.[YC<a7R@FKc/+V+t)$PF`u!WVf%TUe)!e8ccbh;,5X6CVRAVmk]U
+,rO3J4NP_5Xl+8GU!uffU+,"=&^u<<8:c;s=`QnGUe&RN$4#i/,=5XkNiYB'd(Onq
+(N">;HiM>-C)R*hk43]4:5?k-V)C_JJqJ>P\!Q78]"#1IJ`)=J^]oB/"L2?E!=1(n
+/.n0UKuONMW"iYt\&6ur;nuO4bK2?u*pdun+]"^Hnga+1gK0Wt(T9b0"?$OK,EE!I
+%NZ3]-VF[R^kS^^"ZR5D([O,"LqEkGC+m'"9[0!71h@e#N]\)A(D-?b&J,0i-9B'N
+8I8+`E\INLiHmoDECT3*LV*a[DP(g/\\sG7jiFaC]YNm8E3Ma'#R"V2K8bVN7,n7W
+-K$S*Ns@`eSf*hTDiqM\;orc]GXe>G=Vdr,bR6<K!"42&j+;B7&Wr5i*5KBQcsi#R
+-L>btkrdKcaA[&DL"\2?"m#n,%KM.oiGh.Ea9YAZAK8M%4OCtchbVndnC%.$')=p2
+W(>.X$3q1EDj3)8$dq=184kMp!"S.B`*=KRD\qb"4#8G<k'KN\A:]#W2%mgC,JnJp
+ck%Y:9Om;I(@r)\S<pVmFoK!ChID,iRGm'95qYu\HZ[U7BeIjO$TPkUR"qp+m*)^6
+*ouK1K$jdd4?COh8]bN`^qge*@SV2UJNXMUPU:An3lD:qa^lC.6O:3@*8eL4qgu=#
+*FqR6j=q/)+Zt,Uo;0o%7S$.#j"MNPnX&s!);<CB~>
+EI
+Q
+endstream
+endobj
+6 0 obj
+8277
+endobj
+xref 0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000062 00000 n
+0000000117 00000 n
+0000000183 00000 n
+0000000365 00000 n
+0000008701 00000 n
+trailer
+<< /Size 7 /Info 1 0 R /Root 2 0 R >>
+startxref
+8724
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/x3.eps b/obsolete/support/png2pdf/DOCU/x3.eps
new file mode 100644
index 0000000000..7c619e533e
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x3.eps
@@ -0,0 +1,50 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 128 128
+/DeviceRGB setcolorspace
+%
+% created by bmeps 1.2.5 (SCCS=1.77)
+%
+/pstr
+ 384 string
+def
+/inputf
+ currentfile
+ /ASCII85Decode filter
+ /FlateDecode filter
+def
+gsave
+0 128 translate
+128 128 scale
+<<
+ /ImageType 3
+ /DataDict
+ <<
+ /ImageType 1
+ /Width 128
+ /Height 128
+ /ImageMatrix [128 0 0 -128 0 0]
+ /MultipleDataSources false
+ /DataSource
+ currentfile
+ /ASCII85Decode filter
+ /FlateDecode filter
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ >>
+ /MaskDict
+ <<
+ /ImageType 1
+ /Width 128
+ /Height 128
+ /ImageMatrix [128 0 0 -128 0 0]
+ /BitsPerComponent 8
+ /Decode [ 0 1 ]
+ >>
+ /InterleaveType 1
+>>
+image
+GhN
+~>
+grestore
+currentdict /inputf undef
+currentdict /pstr undef
diff --git a/obsolete/support/png2pdf/DOCU/x3.pdf b/obsolete/support/png2pdf/DOCU/x3.pdf
new file mode 100644
index 0000000000..de0563390c
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x3.pdf
@@ -0,0 +1,233 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.10)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 128 128 ]
+/CropBox [ 0 0 128 128 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+ /XObject 7 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+0 0 m 128 0 l 128 128 l 0 128 l h W n
+128 0 0 128 0 0 cm
+/R8 Do
+Q
+endstream
+endobj
+6 0 obj
+73
+endobj
+7 0 obj
+<<
+/R8 8 0 R
+/R10 10 0 R
+>>
+endobj
+8 0 obj
+<<
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 128
+/Height 128
+/BitsPerComponent 8
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 9 0 R
+/Mask 10 0 R
+>>
+stream
+GhVOjq-+QR(B)_Bnm:=YJ7=])#%@^7`%;R&e>S=BmRpAA5]M_AJtN_PSXS"I/lb'P
+!&N)ViVW$Rb#D/<T6'J3pK%#f8#oZZ/%/p_D=qXVCXtIL]657U0HRM$h4aoteGo?*
+ZiC$VfoJ?Yqrt#(N5KlG%jreVF;0`qd3bINej\oV456t_[Z)5IR`=h.*%OoX`sNW>
+YZo<X\=h]cak>h$cF.P/[WQ@\irBSOJKdO)Ll6a=&L$MZg]C6L[r%&'Wgm'ja&Z-&
+dklf7i)l0%d=HB;CPfil;Ii,HJW^6t+Pjcffo@(MD/F)NGNL`A_0@"l;CijL_BXZ\
+oR4&2jQZ.JR1OOM/uX:!g"A$n3;`AMBE.j9:?)<ak(+_qEo@TrBjs&LQRiDfau^X#
+_G8>>jM[R%"4CJeSF,2#CsO/8HhZYZ%cC_985_t`\R9+/N0Xa(!u&WI`'T9m*1l"^
+fL*l>2B^hbcWOPEZheu\qtK81%cC_985`!6`s%<-6ms%h-Pi(XWA[*"3]t*HY^;`N
+D5,b2&03agm'klB*B]_<3.QX$PXlr<Q4">ALp5iG=^YRO<@gYL\&_KbKY2GPpnS/,
+!#O.ENDWW<Zf^E&%NS.qIEKAc8u.7QNsM93L4a&'MF85G;'<Y_-ofGT;B(P,*'T$]
+J.(Y[LSH(aS@,`BG4aut9C(o`F"\#pa$9'#BDRjFEKj!+*?c"%#EK&M"kH5SU<3uL
+WkB,eeDAXL&G]S8>JL8UCTFdOa.hV7C%ppT2lrSJiJ.^4j6EiBlFWc(-hOAWa[8UV
+kf?1\aF`sak&9@[Ou!0ihRYiORE.a*KffFo3]t?sK3aiX9E9G1UpF!tU>LHU%6%Wu
+[;)/gbPE/6r6uTRndppm\ZeK[lo#h;2mL02JGDiu(^QCp&YqG<m3Oa?H25)mSdIj;
+jlF@MJH,.0FS^+/ee[#.1JQCQ4Rcba[_7RDT#IV6,B4EX'cl@eTg9m$:'q4F$d8uZ
+NYDa6W(!dAWB!q)lh5UcVo-^4!Ki-tn-#cSc:-pBa*-E.m=pZFr\a#^nW>Ve`)1!^
+E^:ld&IO:u/D*3q7\CO%3isgH\!ePNQf+MBPhH[ol3nYqhG2]db^nrrMpC&2SR&f0
+CT.4o`4rJ??$,lt#K27?+;qFhO9e;Yc;%XX$WJCq<cY!$YZb!4ks.Za"^d^^kk6(g
+PSuPE]j7iMF+=QrY?Zq`r6s?LX0A0_I3JTX`r>2U2%GEIj!ZZ,/joge6K'%aZ7I7*
+K!^?u+N;dYJo:f7PEaeEm1J'nG?LL*h;-nkq8JA:*tE181"b7n41ntq0F*t1p%n?[
+UVg4]j6XdF[^o<Dri*RaV_Xh<HTZh2E>08s\KDJsc3t`]BW;uiAEl(dlJ-e<<[>m&
+Zc/FL#g*F=!aKkO'R8QB]OupIc&p^![r:"Ua*$"8RX3]9'oNK^&a[@sMg!V'l)^p9
+lL'\7Vs!lp#FQgSYc$[`_LJ-@;iKc\A40[YLb&qOX^.<ES^5FF"+D@@,?QP7Q*N\H
+Kn9k`Q1kERRR=KTEI1sBBOcBk2nHXnLSqTpG%+4^!Gl\XZ^WnK>IU-Y^7E_4!$cap
+8Kf,L:(kC!\9rSb`e6H<dW?e\c3a\d"DX'qJ/Poq'JSL#i1k+ci(J-mg7L@P\bAjD
+]s,UO=m)Ti$[)O\<:AU^G5#lrn"-l_pN%5X?mH7+,G[[pA0^*WPt^BMY`?Ekj.p&b
+6!D3KJ1F?iTF;Q4Idef]X=uAGes:9QCjFK4G:sR.07Vi7*M2,*@2IW.*^gM\7ZSTN
+qs1GU`W6p5nRBEL_2.=AS@mF<N.:dnQ]bGn@HPc>U]B#CFH?h5CpI/X1?!Q;>J\X#
+Nk5G(;mroXhV&QJDtSk21%KF2$Tg'jY^LrIj2]Q2-aE@=-^[*:8;u__i^-&WKYu*[
+j5GBI'O5BbR>RD*MekHD-r<@N^7[lr=lJ;b#_$#bU=)D_P:^]Jmi&VN]6<ksi0d(F
+%6,^ML9T.KKfQ@X(l/A$SNVB>%1VDUI*,k7:I`8+^6:r]SSm7%3r]I!Qr?NBHKLA&
+$REq61RAk3*Mc+)F"Wdqd"&@MAASelT+V"2YXcCOg+o..]:'hnf=]kCl19J[Z2QP-
+1%KF2HFmQ4jog'V3#WZkSir#!q==a<V\k9\U'':_M838+_I<4KhetTsC,SiRX+&sR
+2"9ntFf+;g!mI0OK$lqU!Ric];Kg)c,:[R`L9(]/oRNt5=m]&W6h&c,TtFoQamoX6
+O$#t(LDnP&M7ePu@Ld3E8#$kRS@s:f]m>smn0s-$4;e_IQ3aaGZVuu?+3Y(5@tDQ:
+'f0L/Q:M&*0e4IA"mh7@5nOb2U<1Th"bI7.`?cY$;0Con=BJJdl1Q:koQJ)HbR+(1
+f?p'HcMmgtg"WtB`fE(fj$a3eLI<g?65HkI'\>l,;__M#))K>2R19Rt^rs\c;'El?
+Q$oh&E-["/Q:akc^;*5Q'7?+4bd2D<KKjT#RNU\MW:G,K:;DGJ]6DQ?`hN4rUCSGY
+mGl5Is2ClQ_nfjdh`rA"&NG\N^tG+l0HUKc[Q8H8`LKL#Y/6r!'bU<Ei4oL'XqB>T
+Y]LWNA=klKb6s#ScXmq=2`2t)HXo_E4HYE2db=pe!=-oS:S4BOEG(n.-Q#(b(_.l5
+,(^DXmjAL%"e7^a"DSP2ba,dN$Fi?p>\k'>Z'<;O^2biP_ZIZPk"tI,p=+@9K93"K
+e("ad0aG?)'@GlOo];";Y?qs%+(5RIOq)M`mpT$@*680r$$/oc0I'DP$D`2&FiqZq
+"A;f>ei]Ys=P62kNXh1G(/%@Kg^nk1>"#rEHO:7I5sA)"-gVW?J,XH]m9;D)(#/BQ
+*7Ne"L4_&o,_G!J=C>I.*%;FQ6RLoV!iBHCV/4Cqm6JH6Jl%.:>mmpf%@'GhYFHP`
+:X-B,;t()WZr_,UAPPX"YS2'gm6XKOOGH:?E-;BdAgIeO%P.cUa-Heg@[dWc'j=j@
+Ct#PhH)*Q'p<fn8>@`qOZ7QZ9$GJ>eD@]$`5*(]Z^+lm8o2KqS=,.O/AC7XE,3%q?
+3@mFXE*g[!"$p,/FHB#oY)]V%Xqt/V'7m&JXG%F\Li't(k@`%,jl+''U<gurROjbn
+q8&u_e*XJ&^La`UNEO#6HK%lnOO(fGo)]#F)'M3J/5"H]fgJ(?![^kiej<[e?;LpK
+q3?-2c7i=F7N:)DpYO$Y]0C<m1C&;lE3+5Yq#m=AO,Kjs^^5Po''7&"k1[:h&`D_l
+n\M[c:m$hUE*`_M[>5N)L8'4/J/&ZSdOYRJO*>d8It4SKf)004$>Ed4M0P^;i&SPH
+];F_)gX0Z#&HCB?o'ORnLPmWC&U`.i\CdnF`8G83BBl*<S;1JECo!:0O9Gi?.):4$
+!G7]i!F)nrfA$"XfW5"b[X[T+YrT4R9uMqqJR$LH[*)MEnDW6[h8qTa#sK7Ff(i"L
+<d"a4;_<*A8N&(YJ/p#Xp[$^7@f1'c:l@"L;'7#k3bD`\D9[BeoI!o:mQ5D?`28oY
+GgR\mPs'/:Rs&">)E&s*KMtr82Cn[+o2Y1&i3UM@j[54@/4WoRf6VDNoG#)[G#Ekd
+KG:X7@UG3k":&\^_Q2P&q6dhe%i)C,3"1@)$6`XF,COp]5NDZ43]kq>bbSk26nJ5Z
+\S,_S=!rS1q$k,p]mDgM2o/SSr"G^G8-.k:8-.k6X'dQoFfT]WkCd%V5CK%r`!QO7
+"]PcPgC't=[:PD`J&_:MGLO"`#nN`[NlB-cfgfh1lC+QH&oNlqbH>*16_Ngg=n&mt
+TQJDP'Jmf-PmHg5C&I'uGh!7-?b(?q$NXf>'gdV]_d)R8COVO3lul0p(clcpH[&rc
+l7)HUJlNlRgk*@t9mrLC,"AfN+%qk#jl.-m)K(&kh6M$]E#cUNg&ZkWZ@E9*Y8>9p
+,/h^+eK-T\F3>Up2!Agm)a;uT7ffYLI!0_>=S$d[K,t\C%Ou<r4*eZ?4aIs#^nKn\
+A"ZfqmS890:i$J@&Ri,81M6'Sd+u=O(]/=7Z?lKE?u&QN0#S=j$6cgp=qSo@Kdf2D
+o;^bLc(B--f6X(pbUtbH?FoQBTVFV=g/ZC-Q%uZ+Ar!30Wf@/-W8!Xl&W_F1L,\'i
+37Qi(MFR^0`hF0RAKpVCLp^&tmpnqL]5"GU!=cJI^dl(gg0lWBkE6r<5%3-$(/Lt?
+Vbb?kS7oFZR&f.Xg/ZDX.1^G=Wp[`M>:!`P*/`g*$I>%?o_'!20>K\5'iHV?PDJ7B
+!8#MV(h`m_X[mD.c7;<S92I$#M4#1ISlQfagRSGNgC9]\2%Pt-ZG2KTL%FJ:O>@pV
+7gKI\O*k6o^-IMT1KQ.BKL"<)!s("]ECGKHE+0U.01#2eO&gUhCX/NB?#@YnieEB6
+:Zo3$QN_$<as0:P.?X.BI\;0+s,.\NSVsI6/4XP$<X@VUH)D)&Y!jLA_CVcTF?pPX
+2$[@]K]4eOH!Rq"Sb)^NGc?I0O6?F5]5X["Q,afM,r#ur*Lt*`pgkpT80NMa#X\UD
+b=*Qs^i`L-$[WNI<C(%<`jX'n3N2N=`/![&]YhU/:=]7j&j59Bo?UM0baXFUU(FV_
+n41Z,P&`Af!G2@;A%!1m=3YkbAmqi8-V=rN+M/EJV#W%F[dCB[_og#WO-b,lo;h4\
+Re+utT>ujVLuUo$NuTe*!hIR;/;2L\,\CIVODP--(;WHk0a2g]DqhF"Q&ijRX$%.=
+ebgtFQKJ*%+RCE6J%j4f?`M(+K`DK(o`A0GR"ZtTH)_uE@_#Be(7]ZB=5qP1/Sr%D
+PL6FY6Ld@5ibAR2re6\%Tcs4e&]8Uq-rb6b<=#iGi/.ZDE2!K7$KA0Z2.FAJV>q_Y
+/k:\^Iie.C*F;`0[d9pefZ]7WH@]X'U35=K!C(oXrX6=?(b1GA/P9F5liiW-,sesO
+?km2kYrjHXYm[eXf8;f_=5+[OIq%M,nQBnpobN68G:j69Ic^Q\lQH3%7gTucC_ilN
+KiLsP'EHq$j_/c;2?an[I.N0/g+G#QYk$1n_ihu/f(W5c!`2hBJXQ)Dn>6iTUZ%)l
+,`#G3Y1.7*&lV&H.9Q@lSQD2+F1&]QptNrh(uc2Uid5mI+o=k4-!V8*r4OT$9*'m/
+E39nV0$N<nM]Zl^3UFDqjK#_uAE#7h58MF+[)h5K/eF9s"gAS69Yk$OB%Ncj&kMf\
+.Xo$AT.p)8*p+Jd[Co#/4@;L8-0>JEiEsIV"L\Y;,L!dk[L5n=%Ms_;PsE39hVrV5
+ieR;Uag\5.0DdLB.mG@5r6^Oi49^Be3"c1p"Ice&[4=JPMpLAECJE>4G&6qQ=7tuN
+e!%<5%6H3q3tsdP-Jk;UTgp_*$KaZCfS*n/MeK&7]7%SpK/Kh;%X/XkJeirf[eRLB
+hmmp\[lHZQhXb2OnJN*,93ZS\DcZdE"8sNp;TO#i?3t`NG$DZ[.*15!*kqh`!rc+M
+Xm=Pc$1Br?]C9cgr(@.8Z]St&5>N>eo%%bdr(!s_Kth-rC!G7ZNh%X8ri[9e-2qd@
+F(@6^r*dt%P2$+C+T=<'7hWX`g"`/Gr`]"H)(aTLZX.k=G3SP;'r?S50)ZYKs!U>9
+8'QYn%b!Zb?eWP"k0oq6RH!KBo<5'4VtRhU.0#V(Tq1^Le+!9E56%j+r.2ZJqNi9&
+2tu2Z@fFm[=2.bKXB@cJqD6UQn+PL-YPouC'i=o1LT\MsqeP&^rbSNZoCu.+_@kXu
+n[JH5IpQ[SI&0^?QQ,r+lMoN`;#W^o&bZ/Zl$lXL^NBGCZ<I8W\!:D#BDJWYVI3t;
+s'.bRs68HKlLk0gErRZOjBK4m?d%F-Dp%'Hdegf&iVA7$'`T@@s%qCps.h)-ja$j'
+ZCcV>^[`rKo5>BAr+F0q%cr!8Z\"g!Y)(;+lK=cip%eWFE;oDjs'L&dIn@!5.KAjD
+.e!+=.@32/rr(GXJ,f<*8nRWt=4)NtR&9EgnGC8JbY<<37K!,E_LMSIgtMGEV@U<m
+[U[d!G<<*T^].#,H1Lt6GI[VAcWeELX55g"I(Z@j^].T\n)&m1G9lN>E8be6IfH!C
+bqn8GhhNiW-gX(EdT)gp^Fs-tLSh*!KUjN+a-OI>6^lrZ\,ShEY@G\X^+.;)%h%(j
+UitSkjS`_W]`1R"J=j4K8`K_*2=!F@D?#fOp]!7X-"6hMIF[eQ\Go?>i"rj%:IES0
+96FIq'Q*lBK(m%Fh:%SWnqa/o-168JRcbKqs&JO8JV<45p=q7Rr`99lrs#Se?2N9$
+H%F^7IgQ"eQ+PONq#54"eQ;X>c+3,n_/I@i(3BMbK(hJt`'&%Qgp-U&8,^?'8%[dr
+TuHGL=B5cpYl>lLnbL;09Z&*!e]f+UG$uuFreCm7s)[n2J@;4Um/EVg$A;mTs#I\-
+GN(6n9Afb*NW!eU4eIYEoC+Nks#,l8TBGRR]s@\0b5USgmXMsVs*s>2s0'*8,2N!#
+XM"QZp%Q5&]`0DQpE-NMs!uq"IhhkZG<JIm&(HVVht6a&cXVSDT;;A`]:hmr9tu_U
+fK?FBk!S<oV\T(-]AgO(Z#.fX_C_7AhZ"F1k'Uq<BSF2#Yo)poI=AgbiVh@I-dm>@
+C#WV$aGK=WI/dn8hZ)?@s$?5QY<.'Qs8Lotbg"*#04u1E<Ts=0=5JFtqYRI_pAXg6
+6WXn,*jL/VmLdV=rcam;G2oKR+-dqZ?IA4k="[7D5SXn.!\TZd*?7<#[e#@Mn:97X
++(\dPe]dOkJm"t.#^@oI'-1WEp?g6XI5b>"19Jlo?0^HW@^H:uN8@=^=]huBaX5^"
+j#u6D*2dNVA%.f_F((8T^8d_ln4Smb$`?8#J/#4FZftjE&A%Vmg:ub"p2qGq[_D#k
+e/@ud89q:6;0=Z78-F=*>_nEA[FN$Zo+J"5QW)_RqD8DHR+'g[D/<hSrN%Sj`X<T;
+O*8)VQ*:'a\)g=rcWt`BbIY@iT1tUT+4lttpk]\=*NLjO!X7$R[7GiK76PfF/rd/^
+fi8quJMep=@5s>Spo:hH*LTU\9;">7#@k+I\1jhi'6\aZOiP"O7\!P*(A#ADW:k=[
+Bat:g=/7mL#rb<B6OHd)OTI.30HDhY&B/\m@?q)*$#J0\7*#Pr\9bQVk&%u1(KFs"
+g&sOV>d1Q2@UUqN4h'US)E!<.j,,D_\DD>D(BmLQ/5"S9F,e7UOTN@/6*ZM'OClBr
+6r9>n"mNO=C$3Ksaa'Ci'6%B?D\28UGa:;ZGn522^""+*mBFK>WQBg_,5ASj@UHq=
+=;a+R&6PK\"Y(-H"bd%$@RO<NBGW9XDL[r@kZu^X#;so+=j6DQKUiV!$qmu?nuOMY
+h-Sd#*A6[Unl.[YC<a7R@FKc/+V+t)$PF`u!WVf%TUe)!e8ccbh;,5X6CVRAVmk]U
+,rO3J4NP_5Xl+8GU!uffU+,"=&^u<<8:c;s=`QnGUe&RN$4#i/,=5XkNiYB'd(Onq
+(N">;HiM>-C)R*hk43]4:5?k-V)C_JJqJ>P\!Q78]"#1IJ`)=J^]oB/"L2?E!=1(n
+/.n0UKuONMW"iYt\&6ur;nuO4bK2?u*pdun+]"^Hnga+1gK0Wt(T9b0"?$OK,EE!I
+%NZ3]-VF[R^kS^^"ZR5D([O,"LqEkGC+m'"9[0!71h@e#N]\)A(D-?b&J,0i-9B'N
+8I8+`E\INLiHmoDECT3*LV*a[DP(g/\\sG7jiFaC]YNm8E3Ma'#R"V2K8bVN7,n7W
+-K$S*Ns@`eSf*hTDiqM\;orc]GXe>G=Vdr,bR6<K!"42&j+;B7&Wr5i*5KBQcsi#R
+-L>btkrdKcaA[&DL"\2?"m#n,%KM.oiGh.Ea9YAZAK8M%4OCtchbVndnC%.$')=p2
+W(>.X$3q1EDj3)8$dq=184kMp!"S.B`*=KRD\qb"4#8G<k'KN\A:]#W2%mgC,JnJp
+ck%Y:9Om;I(@r)\S<pVmFoK!ChID,iRGm'95qYu\HZ[U7BeIjO$TPkUR"qp+m*)^6
+*ouK1K$jdd4?COh8]bN`^qge*@SV2UJNXMUPU:An3lD:qa^lC.6O:3@*8eL4qgu=#
+*FqR6j=q/)+Zt,Uo;0o%7S$.#j"MNPnX&s!);<CB~>
+endstream
+endobj
+9 0 obj
+8151
+endobj
+10 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Width 128
+/Height 128
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 11 0 R
+/ImageMask true
+/BitsPerComponent 1
+>>
+stream
+GhVPM9+HUt&4G9W@-J7cMFZ-jGnc:SP(h;?pn=aUUdNAm`ncPLh'cR:n)']^dVGFC
+"CK&ujl!;GjCa)+C-su6_0.+I!Wq]4"3<WWiFW=8O5PEWH%bQN)+"6OO:(.PZ*9"(
+=2C_PLZQg5$BGj;R`Cjublb>:)iC)4bsA[gp2Yf0]%s,iAjDbBjH4^V*\:(-4`a$b
+('eC%apW7Ab4td#rqouLqnM"EQe)%Jh=oLrZ0%23f:7'.0A'V_5@XY%J$]'7rNl&r
+p0[N+p2BYKp4(?mcAsG^3.Eo[357H1Wr1n)jS\(dXn%hMRIaYEqZf/p`YJ~>
+endstream
+endobj
+11 0 obj
+330
+endobj
+xref 0 12
+0000000000 65535 f
+0000000010 00000 n
+0000000062 00000 n
+0000000117 00000 n
+0000000183 00000 n
+0000000383 00000 n
+0000000515 00000 n
+0000000536 00000 n
+0000000585 00000 n
+0000008937 00000 n
+0000008960 00000 n
+0000009488 00000 n
+trailer
+<< /Size 12 /Info 1 0 R /Root 2 0 R >>
+startxref
+9511
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/x4.pdf b/obsolete/support/png2pdf/DOCU/x4.pdf
new file mode 100644
index 0000000000..2cdbd5d198
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x4.pdf
@@ -0,0 +1,241 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.10)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 128 128 ]
+/CropBox [ 0 0 128 128 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+ /XObject 7 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+0 0 m 128 0 l 128 128 l 0 128 l h W n
+128 0 0 128 0 0 cm
+/R8 Do
+Q
+endstream
+endobj
+6 0 obj
+73
+endobj
+7 0 obj
+<<
+/R8 8 0 R
+/R10 10 0 R
+>>
+endobj
+8 0 obj
+<<
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 128
+/Height 128
+/BitsPerComponent 8
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 9 0 R
+/SMask 10 0 R
+>>
+stream
+GhVPUlVA0[&A\18X0k,p>I7F!U>gg'(b#_[Kj$\0_$:__nu<4V+,D"t0gs@oRWUO%
+>heR:me2s;\\"8G%"[K0q9@a@m`t6:.`K9q?P+W<1"p9c^7`B6I6e3%4+[t<Uj56o
+6'sc]+lVp#irTg@@Iic=KYrk4$`q`84;@,I@V&"-^g=5RIr8"l1?-e4g!XU)r&MC)
+*rK29S3H>UGMC<-a`W0rI^lT-$Qn*1CC,t+p8uX'(&W-`,R.foPHS>ko)@[\!6a4k
+7D]#gdprn^[8icd'#gTdB&t!/k)JLj*^&Y:5;FG^r6]f8dZXNs5aff^`Pb/T>bJ4[
+^d&.61M>cV7Sc3s'XP-O_(7iI@.""%[-Mf!<Wl[#X^8]D(cPpC9oq\-d>u*[6.lEM
+FISe"fF)PG*s)AWJ`:6k<\Dj\"X+V-r)h2c:se/3iJDA1%]L1beD9h)\qJZ75g8WH
+#D*"Or^KR&*pt^?SJH!VB`'eJV#p&\$k<mjOW(SF7P$7SK@nf5032/:Q^"tf`6Fcl
+6J^BHB+RR''IO'9"k<d8&Wo:67!&IY_fZ!T6fcSKE*^9+&Gb)4Y[/,/4^rDn?%DP/
+"+6JeB!^LKYGAcQcq?G\.9lS8m&O45,/BBie1kiWLm],pp%#D6rr/NJ0[R(X3&D=a
+rr2Yq>Qe_(C3Q!sr6`n%WrYP[%:H(.:JI6Q_?0FC6L)i:U@>3`L"25*+n.-#'q2oG
+*)apjk>@_<'`%Lt/$-I*`>F+)ccP8_RcO'K%K-32S3,op"UG<AA]irj7:T31s$PSU
+]"PrG&RH4gS>TNHe`fSAhc<ib.[f6;kTR@&GOn'\XhPT:)2QV1'mk;7pbs,JPRTm&
+qprtV<+Er/D?Y^]_I+\ub\TK:iPX]%.WG-C+1>IZ[FOPrTG,o204AhR[D.28$1rT=
+NXNep5D$r7Y88gIDr2*i"Ag5"eaupigcu8M/a/<Zd[nSl3XMN@(FH*>M\cl^f<;l;
+Jrde1&+Q+aT7k#Te*U[.rVXr9MuW];o04[T^-roq5C[S@-TFd/b+Gu2DBNh('S>OV
+E5s*4$RdP$jbkqBJ@U`(J"Ym>k-#pnfFs(%N`uA&0%S!r56TkU+E#NN`.iae<*`aN
+B[=p`^M1t'N%DR"\f_W3_A'(NEYaACI[.Zf(BNG!k&3OLHuOU'+9m&"#meHim"s`Z
+*f/G"A[h,_!9S2ip@b"o+8V^TrnRrMbl<>!iid^eg>u*^9b:h6^OJ=.J,:PqR#].W
+J#t%*?U1iJ([p$59V(#+N8%a#N%<GY!sef7FK!tBJ,&:lfuDuZ9RGMUIqUo*R*(AK
+Hf#'PP%'+EiLq66GNYOS^IL)*GIO@Iq=FtfPO35+3EErgo;=>Bb&a?)AnNjU])24n
+Uqkb2Of/$!L.@Rp`$8?IGOOP8s*stXmM7Yso:/#ue];8Ta.L`YFH\H6s"rc>VjA>?
+_&p<1*6:&\AcK[<n^me)fKeKChHmbQ"id2(I(ahfEKs-b*\)s8-Qiaq$'<INnbeaL
+ZS6mkcbfUJ57@'Y'Rt9,/pug-r0]bW,(Fb:/pug-r0b<kKKP)/;$h/`p`l^f/$`hd
+1G;cW&?V=.>T+&SE2.,i5-J,a./`o,V'SS/JW5Za_sa`mTQ,ZRGlGiYE/`<(TIc]3
+41)3j+^9GN\1$[hA@#n+#NC7+lA="t+th%79?!V[rr-2r]Z^HO&h",C5Hh:Pd)AQ\
+lgK*W_%$qnY+JKg`l:'@`i?f:%RJ9L=c4ro[6`1Q(hlcA9<0qM`H('K3ceWi:Qn#T
+!#Ii2!$+8p8*A2N^kL,4dJ:*VE8e,2d,>r,?`hINX?o3ZG)W"GBJecO6;NYI:A96O
+f.qi./f5TTPd9OKV@3o2KQ#!:J@bWV11JBk\X7<8MD`4#BP1p$E<#M$1f=$qs"uk;
+O=jX@<S3eaU%LW(#3aW.,FNEYIWu[a^$FK:TUe'phNhgS.hu2':A]J/CuKoL&97L(
+>lYskYpa\EV37RW\PF(bn)upS`\c"ofBY2)%Ea2n',/2;=]k1@-Y:FnTQ!Oj=b`"'
+K"aE)RrBP\+4187\;;'C;lF0_hA\BZD*:K'&BcCR0.VeFJZ@SG#sO4_+9Z=4X^Xfo
+YJ<\k'Uo55XLP\cS'O]*Z%ns5A3h[P_W9AR8VS<70;P<q9V,OOAGFRC67N#Qf\$X(
+-;VGiN8;3$(pA?p:c@ebfYS?E~>
+endstream
+endobj
+9 0 obj
+2240
+endobj
+10 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Width 128
+/Height 128
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 11 0 R
+/BitsPerComponent 8
+/ColorSpace /DeviceGray
+>>
+stream
+GhU\PGs%@+qgU,!ZR*5Zlsu#*iF<<?980[r@;m^8'Z2=s1b'A8a`]Ak1(5n',`*:#
++eb"6.)qEm.VU-BlZo(#$-.<Hom2,^+6Tj!\\Hbp]tW*@hp6FPpOE26s)9Ml\r:5]
+/KGip2X'@<Qd[Ki]&^VX]p+8;Ne*=,"Z$N:.iUBK=]q+n0JP?0dF'TE[d0faV.X&L
+bf[AW@hg@-(H48`1:Xm*\2[Q0XCPgP?GT0.9=*]KJMSu7Za+XkEq/YinI)E6>U+o]
+21hk4q"]/[\2ZM$=dbZp^4cm:!1\b&K9Mdk:I%`iXg!V[W0k*)\:fM<r/->gM?pC#
+&es9ajlYW3@f[7/IGLaK0erhj&"gWUJ//fbP`h>pQ'IPs7u!P(XK7AfPbbf+(pQP\
+NsA?dAu,<=,V5X_B4>:V`Q]bQZqa"_6:s^J?=AJ\dRId_'ieeCW$lR`;V[of0.S7n
++XXKi8:ZbJ'fud:rR\:ScrjFjo'ihc-R(1R?<2N-P-V+A-?Tbl9e@r6A8#[kC20\c
+;H$Rrg)r&\?;b$=h&:_`cBYJ=_8#_+*M@KD$4$rr8ZnCY:fLKOUop\nUT:<-ftbt]
+#T8AO#+P;YFEOrIeMjHW.k8WBQP:)K'&_jQ$g@S\%[PNuZ68@H7Du$5jV='2e2=XV
+oema-)4R"22)@0M\$3)e?aHl3-H8N0S+Um22:^6A($0#'`'r6$(9fL@rem"+_naLA
+ab-6ZbAC'R7DSR*\!Uth\$4Z%_og]e"rl.E<]d`o>*s4cfj^n@R%UId5u&?'J;9>Z
+R=StdMe?M\i8thBd?W6=Zuku#N(qPK[p*#(['d5aE,ba#g$c.$iB'O7#CAPeS^pir
+/^7"LNV%A$1t7ae$\\;c3EV[b7KEr]1HQDFTWjdtMQX'o\-9Zl=RWQ%G9f..]=>G_
+76d91H5T@tF)uJDFs8p"g[2<'!@DV;eC-l=O:i3BjPs]^?AK)X1U;$$oqIVT$6.MP
+F^XHG!,`1scE;''4aZ#ZH\>0i+lf)Ja+!crH\cRBc<u8VQs^+Dk\-u5<03@Z"Xe8n
+1+rUTR&=M)j5^ph(1/_uUoL,jDe*=kc"a/IUXSsT`4c%14:c[^Hi#Xon5ITG52P.&
+#<Y0Cm3T>ln)S/kdqYA_M35N\L8pF7H?!@Z?;<C*g+USP9BfK]F7BXSi]!g7CZu]<
+3\6i[m'b[)_t0P1O0@GLJ,b$_%"Ib;JA;+m5Hs.?Vhb.e2eN2R!#?F:BrS.L!"+DS
+\_(!1I=VZid5.ue(0Dq2/[(tIWG>mX#3ZO"(ZO<M5C!.jHcSDo0JFn'pima4h\gGs
+3%-1/0Ym^MmuLd>m,(HX+ZOuUB#Y%dRVGIcdUMMF\5tH7j%]d$(g&bB<XXi/.&a'H
+oij#MFu_Om&D]JZGQW3Kd@fMC-VfAe%P,QgbC0aZ*I@!=aRPpuJRF*(!=sCKMj)%2
+/'G'Q"EbF_)0+Wc4<,m\bAbA&iY</iOB#91cnR44hdL"jC?T@klfI0i+*]=rj@&4r
+n;+E5kKZTR8)PIW8"Dj\Gr?lEFQeRCi+%?;IQine4j>DYH^c&<`WeIBWf"(p,(dJ.
+E#O8DY7Zn]"7Gi@9J*A`*RTSTM[]q#$99"#917jOW9BVYGS2GK\#QG^0nD`MO,JjT
+3Yr\(9BaKZTYS']aT$0<45*kBRMtFA&*,!)f&/@bK,9f9=5'IH^Vt$$NP/7%(2&99
++e`<VO\sN2nHhe%-E!Z:V55C]/M/h+q:DEqpt4f/aG@(IOFGD,-XE;0D75pNdF[*J
+,VLI$c[_kaAGD/Lg7+)HX_]#KM3kIBVTsje4Wb\79"LCQFt"XllhB`cCh3R;Q'lV@
+/`gFS.5(JpflNOk;q^S,TYS_*GdFjT7^<'e<2*b,*A[p-YH4m:?t*P]7r[;EnN.Wg
+6<$X+il0F>N3)B9gq<Q:_BNe1(?FZ?k%&+9Uo.NmN/rf?j6(]5lu=?(=^.71kbp#,
+#&l9Fc(>5S=01Hp'LC[e9e<F6S_W!`]d'fX7Uen[a_;Vq3OsVR():2i<a'g_$lRYi
+9<VVQ/h6cD2^^+#/NJYEK`+-\ceHq)c,nhrd_l\S5X^]HjU0^eP:dM1pM(:3+CE19
+e.Q"^gipQsE*sD9h*c]ib,*>Kh#*o+P1$Z,MOV*D<+=n5m@+jPAYg]l7JXLIR?peY
+-BS8Z"pZ4C3O"PM,-Wm-"#e:pMQGrPB::1_dkJ(I#ma2F.:M]UcG]YdIJo6+**VoX
+prSec93F9#K`GFcEP&OADG<jm]fK]ZX0&A3>?,s\U)ZiTbfe,>FQLVXGPRZRT9&jG
+*o'P5G/+M_P*6Fmi*p2lTr^CX:B#CqZ:^Un%87?.h&]le"U'OL4qe[#OIVo1P?2k6
+oL?fjWp6%aqM*"F9he@,c->bTYd'n9Y,8eq:;r4@X$q:oRH_g"Yu,./LBIeYjQ3Wc
+0u1^mH]sVopc<k!<f.fk"mlVQaXF0'D>jP(G9lrO=QG22Ust@i]Y^_GjgQ`.f%t=i
+d+$M?B7"tqa'X>pe^;e$rb$">dt<DP[<F->Q'Yf/bfe:&9o?[s)0R5!Lu/F>2J]9@
+b(p@T"t<)nL5DHk:fLUa<E%f-_V-'h^&8"b:PMBZOHS)!/f,3(H53OZ@<63g8*Ap8
+m[g$,hS.k'St>AQa.45fXj%B-Kds="\DVC.H86or1Ak[%TV".[?uKmjXKSV'+>#(a
+_p1*:#F7-LK(C;M<Aa?VR"OsdYkl/n;rQnL'2r</73uNS.Vn;fRNAkZ4RVY%lQ6r`
+)BM2anBg)YIpZ"Gj,UQ<9au5&Q++n.ML^;C`7X\?Vn`9c%hPGBq%c+&'mWB4!%Yt8
+\_6.M$dMi*0f$)@F!C$"_oF("rg&aT>Zt!-%Hsq]SR&pW"%+=54F]*ZEZ>rMa'Ln.
+B4P\KYICR=]bN)sY,j$'cHl;<2(=Q%^j`#ASX#TTBM_`W/`3'>=N8G-/L\2ZK:96"
+l#p9_gV/;)*Pp[_1+sGM/\>"_>Mo(OrUJcn"2gn[a'QH.qefkP&fD>rn(td-2>2E>
+GbFNoa6eqVl>*G<Q!GuSS=,*LE9*pLqqMIcgJ&-aeMaKF($&t>S=PH"=?-*gp;-Qj
+2NFs.#CHWhpBZ.IDGa"$Sa*ck/a]+bI01_?`a6?tOJe.r\$*fCN=>H%GIFtCW2mX2
+?;d#WKc4nc35G9=];q]d,tJ%+!'_h=h/)V`j:N",p2uA1q9F=LIJe^m@.8G1f.&7c
+lC1s=\je&R4s,81)k:`]S+5ZL6!$Ql;ghAO`O2F&b^^?mr]Zp#5_J2g]&3TD+eFrT
+-+JUL`$Zb*TW2S-Fb_P^chm4ZOKcf.'HULdgX+a,g!`/Goq!?gB#2Z'_u2`hD9WNt
++9L&CfZ::YUPHNKK=3kM)JH*"8;Vj"l'KV!54;Zp\W%MR#l?oSEm=phHoa#00f:a'
+i2^T3>M>_A%?A/jRX.1Yn!J>_2EKLbUqNV0[L*GabtLijM*1`XFDfAQe,t"8)s,#i
+o$/?X>J;qMcd9nY^)5P=mY7:C5YCk>16>jcYOPI[=5VB2ETCL^8S,ORIl7EnGgpuA
+$=%QG[hR8E1Y'R*AM3[WAqhEokue.NQ`mKiDmF3rM0uC_MGMO=.4bMj!PZ0qjMbo-
+SgjaH"YW@A]>4Jd5tPK[7WSELCrT,$?/&'F23hef!9-M8Y63d*BYaW''q:GZSU\$e
+K7>p;p'-r_4UqQ@hi*OW`=+00R\-.BoE:ZROc'<4:^8<)ZOhZ>k7N=-CV]LXS[u%T
+O!^Z7jV=-<WG-#HpsH@Uf\AGK0KJrPC_R:kBrJR@<h,MA3fM>9%h]!H1k5QLT'87c
+Q?a4[YS;=(=h[NLp?sBN)4-7RDcPCJ[s.M+I"97-!#RE<hppRg?[\u^k]4[QCrRfG
+PQ4O1PVE-;:J#L3!uptQLj]j72Hp5;!^47m'W#FYPZ1W4275U3qZMtD!5sE%-Z)S#
+<>?e`fd5j5jP9u8,/JFAKE1(`2;E!V90TA:K5[<V]W)_kIM[43B_\eMa\U"]p+'o#
+[!)-P]m0-_k0F=+9Z<J;6[bN-%r*W2".<6K82c]OaNGS5!A.;sa`VtN*u.>)W,KAD
+]'^?WSHP[B:I+E;$Sb5>EXEEP><7'7T=pg[o/$R3j5Ta<_4HZ&_uk]RQ]_t6KE_\V
+GRt0C/[srD/$;AV8GeNu<.153VE=.7pE&f3$jht=V.A\=p?S0_q4luBkIckS?jUC!
+9T5$a"IeTu#4f&t85\=hJURjt3ns$U770n-kCWjjq@uj"3P+VPp(%KnM_#sg=4?Z;
+ZYt*Th<-SD,[asVa`h74I@ZE;C-[A95g7p.+FikYDN:Xs'rF!AQC1F]Z)+SOmN6fY
+6c.-h-YL<e6%&(U".unaSUgP+_#jeq5X6%qOI7)<4tIu+pP7R"[[+pD#EU0\SeY*e
+9#(?!mTt[/SW&A"9Zo%VQJ_PKDrg#]*TnXJoA`WZ*9hh*M@`UOSX(*5EUjqpn9]N3
+!D!?td\GtX7X!Xr'(W'VL'[`!5PbV?7`J`Xa=Y,WGlR5`kAOtYr16Ttr:lIoSe(aY
+.,[R7DT9Z*aO">p+$C/?(i$+o9<@5dB11$R1b1Q\+SfgTp$X(94b<T>U.D7dq'?c"
+lbWHCj)](IA.MMQT,8XN"k;G3.*9e-,t7b6%Y,7t$R/slU`_j]'f7#f0;G>GB<iQ-
+J+1h4'+rV`l(GaP[1D$'#+iMrCM'jWW8LIcGrF%"p9=6#-nme53o\**6O+b9[[ZK[
+/'3/M!$*SV+QECF>HR6tpEAg_N()q`YI`WHd5sHKpNZicJ/\F*fPkb!oDP\0_u[-*
+8-J:#[C=l$)%hBA(G"<skXUdXl@,@Uj/:5BVe#a';GiFPDtMT81LgP];+np47M,f)
+=-WWFPnJT7oPmDfVuRqDOu'mO7bIP\qK7`JG%0kMO%M[eJ%Oi/>PGr)[hNFDOf@?T
+I6Q$6p7UP+&ci;0$:4m"dfMF9"\CZVJ,kojOl_?druO^[M#/@kP_&ZmHA9Ef*VYZJ
+ViEtr2Up1V&Q"4X+:nOK^cc?8^]_`c%-50\?US([/3g>U6)W#Jr//)#^'3$dMW3-A
+#MrD8$su:'[+(iPpbh4#WM%.8A-"/PMt!p%!*Ba%(R7kG5dHH/4"A!),l(Hq"o%ck
+o:#7"M"mq.^](,Q"E:gO8V(l[!+?Ck%&BRB,74IU*&^$aeY9>g&c"Mu6LkXVjd1Ja
+Akh<X?'O/@p&J*?&4"j>NAWYujeDkcL+U3k!==:9ZD+D1?jllDIKjE8%]K<CcBD.U
+0*(f2D!rEmnSWAR!iY+nHSO1/rX]37n9ZYLHl*b%%b>4r*s7T7ZG3o>$5S*LNDDX>
+7?J/Whl1I-T1=@&#ahD;_"K+r5S*pklQ$'ZZ/bmaOV<KjJF5YoCtq>o^<LlLDik>F
+'@LoYY#jH^q%(61%j*T8rmTfDb@([,H^33@Emh1<Gp;c?)[p)0RuJKYdI[O1^Q%gm
+N6sl<al1i51-Ya'W8g[6O7\S;n-\<^nU1NZ3!*Io#fB/U59gOT5B<<u$H$f]lRUro
+eVrKhPG^W7Yd$I_-)fht;8[mE#JUd&rWiGoEN^J)@JnUNY=sB*Ig/*is+G'Mcj,E;
+rBK0?I$Xf]+/&BX`#8RSUjljl_njX(B\`I)0rF8$iC;uqCV8inqYr,G4a`;5V]VH!
+NsgG`r5/j)M!p;trtkJAc_-a,(7tPG%BB5RiVO_"6$<33nG\Je:u2-fHN(`6^\Q2?
+$U+OKG!D8`hZD-=Gj2,Pra"IX+#!Rlci4CMrkUVaI/bb]q[_l\nU1?gjSKb^o'q,-
+0&ZUKpYLPcqgSY>&%oF`?iB#ClT]X'*h;nq3U0u7io[:ki>(8BqU`\GMY4/UotS#n
+af45#MY03hm!l&8PmgD_%44uOs37Wp7Ul&BWtaikGdTc<rcoNb^W'0MJ'P"mes#Fg
+'^EFm'E@_$0=dh69VMGIU]0(DY.r:gs2GL4Xo;%t^H\Pks.3*f-ash5cX$Rk$3+0,
+T=k/(9(i51mlqGiJ!\K,s+/Mj1[[JF?o)Cm])VR'reF=%[L\mroDStji6Ak5M5j!V
+]X`gWrQj[$?d9hJH)0BF\aI6%Un'O6^I$rfnfmfh;nW.!EW>4emc?CjrSJGl$7O^0
+"o<MTcZB,Ap\o7/fun;Ts,$@H[r5[8gYDf]qYg/_hu>?Qs21T*Ik5dCbG+b2bgZT6
+rQ.U^2>mDKf=OM!DLHg1'?0sSC@"3;\,QiJm_/Y>rEkfchlsE9e0s2Q2tD,fqVqK5
+$N5IbjMG1(^Abm*jMH#TQhUM3HN3#qrLYIAq1_6+om_]\`VpsaJH!kTqd3X4TuYc<
+g&8*UWb[N*pV/&L#O%Y((Xi=EBE,/V8lKY,bb82<^PrNJ&!LW!rrtkUI+k%"B4:bR
+F7qg3>_qg>Zhg<9D)F7bofmeK\eA?bgAd,Hs1<p=W:H5N^N'"_PP^l*^39N<hZ!O%
+o!/1pp]'9$rt'kfHL075s+'S:LBhO0C23[@k;RYcJa`OFER1n"qhX.lr<oe&56PME
+U\@!2rr-X%hg[6SqmXOos0qdl*uFnSkMj7+r?$:a]D1iers.D1ItRLars)XG*52
+~>
+endstream
+endobj
+11 0 obj
+6702
+endobj
+xref 0 12
+0000000000 65535 f
+0000000010 00000 n
+0000000062 00000 n
+0000000117 00000 n
+0000000183 00000 n
+0000000383 00000 n
+0000000515 00000 n
+0000000536 00000 n
+0000000585 00000 n
+0000003027 00000 n
+0000003050 00000 n
+0000009958 00000 n
+trailer
+<< /Size 12 /Info 1 0 R /Root 2 0 R >>
+startxref
+9982
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/x5-u.pdf b/obsolete/support/png2pdf/DOCU/x5-u.pdf
new file mode 100644
index 0000000000..1565ad65ef
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x5-u.pdf
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/x5.pdf b/obsolete/support/png2pdf/DOCU/x5.pdf
new file mode 100644
index 0000000000..b68c9e7623
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/x5.pdf
@@ -0,0 +1,376 @@
+%PDF-1.4
+1 0 obj
+<<
+/Producer (png2pdf1.0.8)
+>>
+endobj
+2 0 obj
+<<
+/Type /Catalog
+/Pages 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type /Pages
+/Kids [ 4 0 R ]
+/Count 1
+>>
+endobj
+4 0 obj
+<<
+/Type /Page
+/MediaBox [ 0 0 162 150 ]
+/Rotate 0
+/Parent 3 0 R
+/Resources <<
+ /ProcSet [ /PDF /ImageC ]
+ /XObject 7 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+5 0 obj
+<<
+/Length 6 0 R
+>>
+stream
+q
+162 0 0 150 0 0 cm
+/R8 Do
+Q
+endstream
+endobj
+6 0 obj
+34
+endobj
+7 0 obj
+<<
+/R8 8 0 R
+/R10 10 0 R
+>>
+endobj
+8 0 obj
+<<
+/Subtype /Image
+/ColorSpace /DeviceRGB
+/Width 162
+/Height 150
+/BitsPerComponent 8
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 9 0 R
+/Interpolate true
+/SMask 10 0 R
+>>
+stream
+GhVPU98FnGH%9hhHb63EUNK(dX;SE_a_hE</DOh_7^=TlK>;N?Z,)R=9.>O=,?l!P
+(m;i\"S*b(!=KO6i:VW,0R+2NDPCr&+Dh7)(0YDkYHi.WK/*2Iq5XF@m^""ao5Jmo
+%Ro4=Wk,\*49+n7WmbZT>M@Mk[^;k_D.uXIg<u:q[&#?kC!0X.Q_&Za_*RP\@o%R4
+Oc,9[+/F@/33_gMr<qdHWU+\rF#\5'm^3Sm4teT&,o(fDJK$KG<)sRRqL#J*lL]h%
+meP-t3]Po.U#/p^_'.CUIHp_<:LCCW^Dp\F)_ZY]Y0NRRD1J)uj+&1`i`(rF\F6OL
+((d:?JP</Ks39Gd<O/3!.e$?1iG4/<Usn/f+Pkku::6>j*9h?Dh_iN0YDa`B7:t`(
+Q3+[#b>t=X$Q>I7&6fBBU:51)">4CkhmlX-3We;<_Zc(e]CV5qhm#L+UfEGKU<D#%
+"/Y],FK)NtngK.IaqDCQM8+"Le:PD%qABi*`c)5dnd5gG$=(<:&9&F7Q_q;]*9t*L
+jNRo$TETblo".nE^nD8I!i$f*07k>?K5W3OMhk$?+n?pd[c9i7\$H/PE#[/h')dg7
+ILH!qMEWg,SEJ,f^GrBe,-f,t'ttkueB]H&OSUuUTr:VZ4N\3?\Sb,WY6<+BBFN\&
+KltmsfT)uS.#&('CuVL&l@&\)n#>,L0TEG/W+ZoaBkeG)lo>f_#g:h<*&XE'5N=G_
+T=WY=[a^>[(Ej,G@L('.a+&K>qth>g?iG<@r3P/:%#5slL3O2M8Nc^a":LRmd(+VI
+XubRgDTa1T078CgkfH[3>GtBthgb+op4IF:^@KEAREI'/cY;`DU4itX/N[=kd^dPW
+_j+ek!dqQ5gWNJWb(^FY8X=;fIeWC-2kN5(o8fN6bARN'5L.A(V^7buor+q4<m-M&
+CJSWe&J0.Jfbu1PNFmWNUBaUGqr3q4+$ZbS;g"qh_GnRt>,Jsbne"$8fN)dU<elFn
+Blgb!)o."RXP>m6k8?\3p6i`$&ILT+oO\VB`:`ueYKr&mqY!";,5Vrm%H30.R0+6Y
+I4<F)jWa>sW,3uA3dHg^')!&KKbo+;I4sb*55FG4:rYPccP1%qQQ"Xo/`NOGWE.2e
+$[ONIhQFcBMXY\j;etXRL,)XH8!$Zjib$+)[m*O?YCC+'*jU'kV4+rteVr^_X@--2
+MP=iO:CBu'3PAgT6-:@`H_Xp"BG<E5)9W!N%p^]Yq=sT'6S34K@MFX]PimbZ`aX@p
+f;#p\kB:=EX&c1b_@mt,Jh6!o?;*5hYGb8uT8OPCed]MXLOU%_rq,6?W-@k6Q9C0g
+eW1]ZEmM;=<DfMG**&NlFN#,q*1aM]b<0Dd037;((a3E"^9BlZ\a%]uV9Bd+AZN;[
+_7cr2bFFDY4<3pt+1^`Q1l73O.(P!-daJ`RIS)b1/Mkk`'XtC':`_HF9JqQfl$r`+
+41>=.8N.6G0,>G>eD74Y5oGf*3BSEFR-[([eAlB'HG5k_Y01O[8\T0X>LZ;AVVqE(
+mG<D6=\Cbd\r$XB32`apW^?^"Inl;r*E=r:H+^uc1CnClK$2(<1e4+N?,2)iUTamT
+HrnYZIV=le>9940lXoRS(hOMVIXlS,@]`H(DDssM=+cYSHr82(^X`5[c*Ye/iamWY
+-;T8nM^-++kW+g^T_LL65s1FZVH,E$!-p4.b-X1&ZN"B9ggQ@ccc+p]=Z"9I?b4fe
+6,)%Nj0-f-p4IF&s6sHX*@f"$N50J2Li!cP7)k"_JM,O32/9/iaD1BYQZJJ)m,FgI
+*;A8DrUS=GrqYnDT$NFC$Zm-F7P618Yu3,^o@6f=RXBeZ[Hj;e`Q=!\BsL#YRVIQp
+go0bU9j_P:U.crfg6sP@-,[%r^D[DAN.YEtOIpH0-$jj4gd&[t0$Wo.hG7iZC/$^H
+Z`4uC%%>ulD12!(%BAF3a/=*-US]DSCK=huGt=!ee1iYhUq%hGh:gZ=1s.O</gu?3
+$1^TSEo',@e?pa/cX05U\AVDkAL`qb\_2qIZu.f@3/sq<_<1)S8DII2_d)c=oo2b)
+ZKaI^UOeP:`)]0)KV?UUe[8RaGKXA0T:CsI$[m2SX_7emVK50Rj8,^PV0mlOc0_T!
+0r^W%`&GlC=un&Z#<Vh8AOpD+_n642G=U+MjWT8dC+b.D6C.(:#M,;`]cqcSUJ`XP
+/TM-&L_8^@X=_H"hTL;-3o6W8.aAD^a]?E"ZOClYW?=P>.A#hiO6W8k;F];3^<3b!
+Zu3WkTi:Y<<(i2C>h?kkfg!Ge4?hoW0OnX<7<E@a'Lk*WVs&[]j/1<<3U5E1iq]1"
+C8J))+^WDu>:h7Y;i1Co.m)Y&^3'k9.g.k0cC2;NaL0%%;<Kt&Uc9cp<2+NK@UIhr
+]VsdbWtBj\g$RCpDnc#&SR]09;i?$u[`Ec%&L4V()B7&Q;O1>7G9XH/e8R'mXpWO6
+b5Bb>rq,6?IsJI%k'q8THMW2f5"T"_WGDH]YI)9FdS?\8At?u.Ee&mb)PQ!SNN29^
+.9A#(I`t?&2;R_k;@a4@$t9A8He0Y=[iSP27@`q:[sAWRQ2.T21b[D6Gh9rEYWc4:
+93>9e'&?]Q69.cOqQ&M"!-<MsFoB>*;.Y$?/MbB[ige=Gm;c/jVN<gYb9^^cdo7O-
+Fdo&),>.]58:cBc#QM%8jaXk,-m/,&UefU2prIham:-qN]@>SX]R4cI/#(HM4)Ln5
+;9e_Od9GXCs65iaG\ucG98<t41rnML`<8J]neYXpZ4Pt98'3lh1p[l(Rf-,oLKA*N
+,Nk:g'aip:\P;sg7\.9hlJp"Q=ibX!$OcjeGC#<UmN6,&BbGYq#kG`XY_baieL4@h
+P=>i5S4:YuYKO)IWAoBl9Qi29=`9f/$Dj;jLM(TJY>sE/+f<8L"j0@^lt!fl9S+Td
+;iq%H=6Et>N0FU4!?.MfF_qaulqD!drRs!T!DE%B)Tlqpg6::u2(j3J:=^:E2$K+q
+*MBCuYEESC1!LgIo$n%u%-9!X%ZfT3U`"#.Rk[-1BrCT8hU_[L_jZY8c=KKNh3an[
+XWAM7Lt18?bSi:n3Q'!bC&-LfgObaa.LCP&fkgm1eki4be[m_uqW3bc0WcA^%st/C
+NK<Xi5pL.21><ZK7:+i@;N@k(5fs4P><iU1n,X,E978;Vn#J[Q"dp&'otRrmrRK1J
+nfabJ7b.%V!p+-g7G^V;5:S]9Dq8g:g-,T$=PY8=CN<F:E5l)&'RXLXVr6c.?dS/c
+&UaGciTo/gK/L6/auRL5?\8>]L0\Y_$`C&lPH%-3I+0E853bQQF4=%?]?PjJ\"g%3
+*WOU65`]qoP-S1^Zr&NYkA2cR2'*S$6,/?S_HX]`:c9VopD&=`98d$[aL>oNCcY\m
+7P2fk^O9T13'T4?PMeM#mD9<R>O(Ua>i+oucICILf5=]Ho7MZ:,5f.?'3K%43FU3V
+o+A*baA]kMXU"@GWU*GEaBs,qBo'B:K1(Tlc@$FZ>Rpu6YVsa`Hr-CBWLR,O$::cY
+R/sdf,Kt0ho`[g(e-A?Z!udS]Bh91.Ah.H<M$kDR4ON5#:S<G[VfJ<mNg'j"6tY)@
+.,S]#m18Nufc;Yb.Ef-U^=A.8,M^,gOeX+>NWFUprTuBkc;6EG.4GGOI+P"he],#_
+[3-^VY(6md#[Y]V6Bo>=EEc9D4/51]Y?4I&6os'@i[O!`VbU;68_n37WLJ$$-0S-R
+Rc_H"gbj'=#ACMh/'^ddS]4TaWa/Bn*CH5ZTn*qhrhRkpV_)9I.TW$iB?om/p;H)9
+%hWf)N87C>JSocNCU,t2m1HHYAETu1GIa!'pR2]eUB[lZ7l^dcFg`+X*`UZC>7I`)
+<id9,nG/7kQ-PaSJ=8B)bH2KMrVa+o?5Be,A<,&`2<C<e>_a"P*>t=1>'8`&TfZ!g
+]BmIHI'DF=0_W#5RMW)I$bDP6'W$cF<rF4m;!.P<=*@tD9;o/GJ,)T+_uK/bEU^Zm
+f]&6(lfiM2/R&#K7d:B\bekA9a*ebj85&pB"D/pb@R/".\C?mU&R.\/:S.Dc4^0qt
+&^!b29NT&Q%16V.1Ho(Gk6d6p^OBoV!Rgj3>+s&.!$R3c@p<dVaT9#fopoHc%*?,r
+g4:RRTh0[r>TYULbpFD%5lA^@M(^^qR6K5H;B^(I`bcoq2ejEcKR*sj7_4jlB3T=,
+*ut=sM[TmFbkCaH8>X`ubCU-R.b%A03l0!cim0O`LK`8SAfo0gkP3ZD10,Q>*:lm\
+NIZ'iV?p_/*&@^\!cdq5:Aj!a`onaO+&0_b"Ds1"7XVPNg706p%+m3FLH)?D[i<"d
+p0qi<LDAlK\N6m-&<kboD#q@$D[tm06phj1r/$J&:FP;-]t8jDk/bk5IZiie+)WrB
+LAk,<Ot8->c3DPZH<%QpZr7kfG+P1h?9;Q(VK4Akpsk:Y_`I8Jl#P(.gFcUKjO6QE
+-o%`#W'L:/?U)JI5%TrfO<`V=0Zn.GX&fL%F!C\H1ao+%!,Yo/F)$C_>I!*!Ven\E
+4&>mKAA+P27t"3mr4+O,`MN'Y#fh2V`JQ2sc?kuJTOr$Dh-D!*kiW2Z'3;+ON95GF
+!AO7t#sXiKW!5OW8J)Mfe=6)"fTW>MOdtgrI.Bs9'c5S!A52ZgD*XVHq;<sO=l*pp
+&HQZd1q+o@(\Ns$P?:oVSQ"7%)qKr?Ghk">5]M&\6l<Y:/H2DC8NHR30i;)IL+n)V
+8rB2m9_s!If<T))n5^(<cb7q3S,pmV_MXnpC.l(&LF]%8+Te*7:*bME<HA?,0`1@9
+fC1A'\P_(o:u.=HlW5Uo=<BsKb&#b?*i!Ln0(X"6kIL*tpX\+)bu0l+L`T"iZ)nko
+Q_$liM5QLuh<SLEPPop5%ql1R"mE5r<`>l?F;T>X#s0T]Wqnu+\N>K[9_"NVJ87='
+7<KWD7s1E!)kE.cZn]B.I.=hJo/,jIYnNe0BQ*llm)_PE\?#h#hX_f^4I1`Sh?s&/
+Rec651;*7qE)(XkBpG:!H@TVn<D_iUbF'S0'[[RU7`r-.4m@$X#`BY5"GCQ*Q([<=
+*Km^jPa=pd;N#V0TXp&&?5RSL"8Ir*gn.&J;iD7?2g,TTdl?Eh':O,%"7'A:k4?o:
+QYBe"q'*7\69j<Wb"9)qV/!btLo%2n`P.KP),<F9#Uds`]qi"['o'KJE<<(IKd]rk
+`be.\.*W5,e*A@c4jKHHJ1d2B'AO`7feZ:MXBeT%]:A1O3pqFq6II,[RNb/P6G]0&
+\qLdtXi!_Yl*Xji[[7A3Ijo9Aq>j[',,Xq@XSh=+XMF3;r`SlY&Pu"QOVBllmo[J.
+L!2P>(7l$n0s?Hj\@IJi3!ZuZMWG+?F!al3V_)m?-R_CLn.7S#j4,#OKhq>^%:JUo
+dPUDR@\f@_a^/!s>)GQ_L*O5"d3IR'GiXYIkE"tV:tEcNQ$o]=1XQHjoAO':fht\"
+CgX\36DF;A4ji#-6GX%\"d?h1_E_n*6hBM=W4.%W4>\Hj*J)!PDng?"_$M\&C\VqP
+K9!GbnkLbU%j/?>F38&M,FoR45.@KQ@Ugei)860K.`H-%dZgUAXaT_5&]`1GDTS67
+dk9h5J[hI)i9EAB<m!NBDaib8q%_iMi&q\8(aYn"Ah+&Co!A9j9hMaED";@YhYbu-
+fIss>;ni1I%0mSe/`G,WIWp.d#nlf8Y%2D_Q.saF\MK:U](gP\BBLPl'AR$^M^nF@
+LR/BFpirp;SF.1eis9Lb>$_hY^t``G$pCeUWeYF(d9mMfrko<HLp,!ASJ/GZ7&',V
+AIqcD!G+,HQp18DoDC*;7m'c_S(V1>X6T_:c$er!+21cg5q:0I6;HPNZlb'rkb3\Q
+ZaK>UWT!+FiH:Jhk<P@X*(t2KjR%.JqKss2q9_=;Tr*"4B!#R8YWcAdpZ9&kI0nJP
+Pa>NU5'fRVg?eS.B6:jQfrF"V1:@Yj!LIMC;)f'B.p7&n/R&c:f*W`ea`e3`CH5kc
+?[t,-M.oYT'&kHR/N]3srmk_+ntY7+8:mPdFO.$2:<CgZ;@)^#8Cq_pa^?,4<M4Qn
+T_JnU>l;U"hgB8<+BojQ't(]]_O("4d-QE_pA)<baoC:pdIWR7e0faRn$6gej8'7%
+Bhhj4d_nXE>15K3H?sX*]t&gD0d`^OIM%kJr/a=YP2YLiK9Us-!>h20-cClnQf8td
+b<`;m6>g@(e<i9.j+l*4]RO&QLjB20`kTsZb=!<n0^8;lMo6pmfqp0qV:&E"1c0SZ
+.fIA[*((41<O60fKq%D#X6TG"k??Zrj#VF$<IjuU<s$$aH:*c^*j9n_b*tcuGIsSW
+A6QSbqe*&e!Y(rpp:sCeBT>WOO(nZ!OdT*13a?G#6(+XE\n9"%X"ge>UO"8^=Mn@o
+"K5MW\&1kQ?E!kdYu<OPH3I`;dAZDQ.k.g2Q^)WPX=N9o^W!Yo:$TA`j_0jfXXf7q
+k&l)pi'W(J<$Zq-F_mbGAH>32O;nV%-4dgk:(BK\48uX32\=`jgM@U;Y-h&_Xlp5'
+df?U<ch*$NRR`6+qK?/g/'-eMWoW6sS42t(#D4632I<n0lsnsl>IA3&6NF[8qt%LK
+9Q'u<4YR;04/sdL>]$.BG9L"TVKf5,((]K@\.AC)mL(3U:ls5]ogV1.eEEA>5*pZW
+,A/LOCmA\SO*NZ5a2"nrEhL%I08E*hI!dL[Y`osLfkj3GkT/mqmH&aBMol-_[Hk@]
+3ObDs8oX/mFf?RdjG"`6aO2A4(Y=[dN!/%PhaCR!p1WRBq-HQRhRC054;2AJL^$Pp
+e39!!=0'>\V$&s%h0i$`KXh6U6m6q4HY*,3X(X()2kO^\p=5!%8>7<(BLT9MZL#1_
+\W>UQNBt*RBq+52&[F,>UqWlAb5<nnFg[C5.ts*cFfS*b9Y6[!%4:giJ5mQ5(SMfW
+M"oHh<Y;<3/8K4f7^LH6OZjL86B(slQhX&-5pNZH]#3c,l0D2^F$XM`=p*#L-uC@[
+AcBV[$k9&u;0*Z%RAu4A81dK/CY//HOTLfOAf=T3c7eA:)qBPac+sW]@o=p<5!lPk
+*[sS2W%Im#Dah>,q,\$hW83IjdgD2)ZA\)P)S*"H3#n^4f9\$oC?uGP12ucq^AOb5
+!sO]EG`R_"'c[JS'9=Q\Tiho(nG.+lA#jio=&e!8Ar+"kg.33[SaJ21DrT>UfaL(g
+2O1_57P\5>`/lbiXOQMIA_BI$WhN1rc&5=f5O%>nUemiNr4$1c/\@hh"L2LB^AK2,
+`-Tl+L[in$FLQ,rSJ>qV/\,p[Z[Wc,(IBV#[,q5$H+XD*NsH*.K(\FimHMO/A4L;Q
+4''X;Rg+CS];\`",-:a7rGFLq&4DQipFL(sK$k<gYJr0Wk;brWW7K$H]"KH$=$k;0
+Ja+pDji;0pY89dR7Wk^uXrLFnY/m%rFINVTbd$&Cd^#`T9t/<R`2li"P\Uida`l=K
+n5b]62)CUVbrd^EWfU*95',_YA8SMgl"--QV(@$H,A>;URG_?rX%a*tZ*]6q+1T_]
+C3%:]IDsmHL46YX<EfF8R]^n=dQ[R[aMh^N(JiC61sc!r/%s6F)sGk'SnV'Pb[9fA
+AP=f(&0.?o1(\`&L`u0CpkYAtFWRfeHr1LO1k$R.'e-1DD3_j[.F[LU0/Z#%(7S6]
+$&j:Zb-33&%#2:j)R.e6:=$J7<5^&sPU,p)="3ouZL8H`XmtjO4g\l&(^5P6)V_<"
+l7FVO[+*&u]#*VNI;,@bCNsQ+H+#h2;j9m5cP[q(^I#5Ng?ca+!Y%)7P0+9$a(-1=
+Rlh%LI+"b"Mb94T3[&I/a([4W$NH"&[iH[E2T87b4Ij-^@cm&'>LVO6C&%XtG^sLB
+mR`tP;5..&e"%4(nLgulIH&5E8"7\C;k.-a5ds>f9b!dK[4"flZ8N"cEfNNd>c!X4
+O/oP=-C(&J>h#*FmK`9Dm]Za`EDd^#]Vqr$09OBf:;]*Kf^Whe0+t:nMAL_9niK[2
+LNXUiMcp)X\$?&_aGS9!`>:A7>)`2./F!Kl=Qi:'+"W=+QlsHpeQt=@JBAHhX,pn`
+#%M"9.u$''fAjuYD^;"\C\$3bFcZbgXYX,sLJ!oWd3CQ(eB*uN2LTfbGcAS\j+=-h
+3g:<;'gc-Dqnbf_6#%[A:`kbh+eSdefh&tKchVCJAabVlb:@anWK)omATe&g(R<jA
+N8Q*t*cD=l$D3M*kW!t:X1a)-X^DK4"#OSTCVpf!\(PT0$VcACoeJt;kA8;a1&OLO
+%R*I$nnM&a+jM8QkHXuJ#oEHCAbhGVCN_beEfFALTYJYXNnLb3AeqY^8s&:!R2[l:
+<c\K/(jOA@#2NP$60sgb6uIgAXZHb+BSL?#G*:Cc@BusT(22?90%s_]jhME#LP<O(
+F6=[UCVRIFAV`OO]ip`NqqW;45BsL)gK@W4^U*W6#kr'k\^X:I`2:pn:fa*/^S-t6
+a`ecN-YU+4+m!E!D"_TmO**D"jZ_!Tgq!1emB8U_d#,956ZV"[Nqc2:c*fi-8'X[>
+6%%1p3m*K+]d8o,>i-]a>qMmXB#_FVP-WEk^/PbK+`:IH`>R#b>6IZ+?%T6,k>2PZ
+FcL7!]-/([YHWf\Q#ComCc/N(2XBJ?%o]$B'UngVTIY!8<Fjp&9^poEWlEo^U_ho.
+rZuI4Z.d*)!qY:>[Fdp8T%L!-YGcIEFRln^s,diI"q[H,\n<L30M0`R-d=f(i]&Qq
+IEH+C<[lY:)J*gcC=oLeo\/`_'4sK'WUhSH_l,G3pBnP!Mk5\/RHE6,0s@+ZpWL/3
+p(a<'dqmSWDA`;+37j2AeOf%kBRJb%Z'kcs:tmH.+iE)*)"%`m.3UfFHD:VF>RO_Z
+S]aN''t"`C/g!%@oihrQ\!b`^Cpdm>h32;f+24?Q$4\FYEQWVgC2SDE:cc>6O,i=C
+\>FZi&s9S;O(bNAps1mS#U?#.:5pgMZ3scX=Nh(/2rX`:HI]MDg508/J`<aRa89;u
+\N=`d]WYX\!(n]X`R-sY@)/%iJt/!33Kk?VC6MMkR5QF,B,2WL-4u!!.mO/O;1$n9
+GYZPcH"d?3Rd$gWk,fE[@5D+;^FZuX0V1=RWtt4&V0jku2W0Cm&80s:B*5E!QJKRk
+qgf,7*<$c.gO>.1Dn"mJcu\,GZ$)B,)MpqC&"=D]]?oDs%%.eicZg8qJa9/)^>cXR
+V]IoJ9,C5Ron\W*:OVXn<n!P@=+EO%MB_rpof,aZ)?Y*FK\C@j@Frr::a'<AR$=6a
+j3@D#eEgFdF4e]HSM[P3*>Br?(H,FXBih3V!F?lI[:ZG6NcZ2BS/j0di$E*^Lgq3Z
+*>X=;d?fV'k$$6c:/P)>/(('"*ETZtc;V2eQrJ`E,_fKS?M4!pI_`I<^NQcnXlAHc
+>7G%iE]!JtKr9@1.J!P%5)3b?GR\f_4L.c!^*e^6"l_&9m*'V(VO,#>lb'^eHd._=
+THalcDdW+:dWG7W[3m;7LCp[$k@*lrorTFg\^`+q;5:KWo162DV6PH3+jMQSQ*At(
+C!Hdb@gVYX<qXQ"rAl/YdCdjcPRc6G\&M.nYFWa_<8`B%WqC["hTqePp4c#F`OK#;
+g[=2[oo=A4)E^Sme4^C&17`23@`JShj;/m:J[^n%GG%)Ad<941=uCcrqW;5CM'-TY
+Ztn'jEPk77(UGR8ERrI\U',V!-&_[6:\tj@Oje1R8+3C`29fj>c/Z2G/&I=_Apa;3
+<eLsDPdS^23Th2M5NE@r=,@X`W]+__7>#okYH$")og/ed^rWb%OJE1cUGF1=j)Nn'
+m&ITm[f8la%`FAa^tRL>Fjt=qeojOUgdqpW1VW[roi&cN/m8s*jPo<dD=eDKX/T%"
+%lTeQY3au31nODD;qa?W.)WEfS-F6!4t.tqFC[.ti-^K?HVSrE`-1q[l;ECPZ)^%C
+Da<(E2:E1M`OXCK;qEN("c^uYW8=>DIlg"fro=D\g'm]@%:r3h&(<6tE(MG<E7bo^
+Nhj$TmCg8A0@/XjI[AtPA9tI05Y"d21U(#Yd/Y1^rU"@3=dd`"Bq4Q\a(O`";g'R)
+Ra"m0+b*Q@j\,erUG/6piQA2k/YBdS^ZiN;7\IC2:X-QWG;8DSCFS.Y[Q"@803lsF
+2&\RR?tl3mlS_P-:9NPjV0uP!AOQhr)24T&p%:/LTiq_W?"_.`1<3KaSi\(60QK@;
+8pg(ldr)d4fhe2R=U/<]NGEuiH^ZF`b]R+lZuO[P[o[3-Bq'LSA$K4"X>&srU`XMM
+I>DsG]!IoI[H)bG9?rrr\e:q&R2"*YV^m7O\h5G(.8S^6g"qB^$^9/E>+WVqf<o^r
+U,[pB?>M3OUF]Gli/7\U)Po0':eEa\lOrr"FjEL!W[X^)fDj$/h6c8$6*$/L$U1oo
+-j1@:3KS8op#*q0^>1(Zn*E1&<WP8JZMi&snG0T\Zo_YlIcTI?-'SBTXb)#p?jCMu
+CTLf8aX+9ZC@"\MU1VZpf=^5#Q]qql!imf*MM:=ZC[mX;pP57RpsPA>23b.o541?;
+knAoW_Un#lTX!+%?"M_GgosX#_ElksdB!9.lBG2dmlI7\df/d`%O5G`S38;SAjr^7
+P>.(22c;Q8l)GRWG$30%%clZ="k$1X=jtW;U_9^b</7-J;-o3,:MLo)1b>kfNWZOB
+c(4fQEI>3$qK\I(DKQ60fdW0QRdWk,9jR0/E4>*8`(JCf?4WUm+19(Z[Ba,?VPDDJ
+/)B6k*%'IDWY9X,gr,HbOBLIJE$W0bMoMbs!n]Z(kAtQskaY0_4#O<+'+UY]+QU'Z
+FRE<_4lbgR($KCT6rVpu_k1.3jUR,^>E7+Vf4:J6d?]e):S"._<R,Aq6/PP9E=\t>
+<2Y$ffR4B;gs&D[eNk6C>Q1EI[fk$;hH1j=[cK>mOtGV@9"\ot[K><O[^;k_D.uXI
+g<u:q[&#?kBhM[ad[%>KV(HOu93^,uQF=/s/T#2p>M@Mk[^;k_D.uXIg<u:qX=O;]
+1)o9N~>
+endstream
+endobj
+9 0 obj
+11064
+endobj
+10 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Width 162
+/Height 150
+/Filter [ /ASCII85Decode /FlateDecode ]
+/Length 11 0 R
+/BitsPerComponent 8
+/ColorSpace /DeviceGray
+>>
+stream
+GhVOigIn:,pYQuRjnW"^;HbE$+AS)QOrtq`+U)0X@NZhG64pjQLfaq+Ob&28PSD(n
+2>ntTG?shW6l4\HlXjIQCH\kujWSK2fjFN^0%sf<n&KQs53q_)J,]8.:\g5Nq3:o_
+E`XgB8s/rl_FBfZaM\#Z9WD30/cRED]D(5<Rf'?C;KntGjhJU@=mAPVT"f1#;MRU3
+p@e.V240lBV9Xd(p%KWP57ar"qOe8d3,AZeO2AMWl2]7LXZVkZ&eU`:g%4+]UCgGU
+b/fO\Cbck;\(]e,KiH"R!ldH8lclm-4l(Rlc8hCI\(e6nYdh3Qi:4>5:<2/V(\<l"
+Cj8c/k&X[T7ZC)fTj-7d^q&6YhA)[/*s`"%CMR_%5To"ZXa1f>::o%34eWmZMZu0>
+IfNrZC;M=?bM!pgcgn(hYSIR9U)P%UA_Gjp73h,6I\1i#AY1\OBN5]E++W!o*;lml
+=1$5aQWF$8&7F7eiecaiG.JmPa^gpqMFBi4hm2#9`Afb$r<!U8]:RR@?<[",_pM1.
+T%m(RG5(_)F"ahkh;&7%nZ>nQkZ`(29tDLi!5#GtD^E5tXOZ;"!kd/d4Lp[/c/s'B
+r8H&nnHm;,n^5`]5(A[KhohfoJ2--Z\n7j1<?`Kb]1RHc!RU(6nV<iC%u`V75!5'%
+B8i@P(()G07u%6,DE=&U!91<UbN,mdhd%Nl2F[qCpuGU^]l-6K*ZiK!ni6i?6%k_i
+T[.I2N@IBPrn]m,Kg4>OL3NCh=[]`i8g`QI-G#qlDUo>U]5-Q<ci)B@^9UuG2FomV
+BI"Q)69O!r\h55_/H)_VLXmSfqgFR;QS@B?4&g)^B]@`\ASD0?5I\fnDkFF2kqt4^
+=#8k)C(O17a'%`P(Q67K2Snpb;2DiR&3GVg%rkj%GehcFP\.7NaVIOgabb#N?8n`%
+dAUU35+:5]L<(JlDaY]l<gPtb(2R"o?W30K3pk"mH>$-O;TP\D!KY.`V@))<r/VB-
+PC.7l-V8/E_eT;1$3C@]2.JO=)^bWYAl,=c8L5Q(It69b*rA.<a4op\Ds)hlghrP\
+$jHT[E62%e0i?qtG'HO]q@`qXAp'MT5IFDE_[dsCh_38Mo%D61S0.r<#cVCS]=_68
+Be`C&a2^[!._.r,!!p2@;RK=AK"JRE03<\n(_J);2Zk-1LY"ne?k@D;MK]Bo%4Frj
+ENM\Z7>QAA"!Lsi=+bH6fKh86Va,dCDJmI'd4gqMJ2Ub"P&9Ugael"[&\\7X+]eSc
+<]E.]_?ml]Z^i;'KThc`m_\:*!WVHUK$,la2X3++&S/ci6S+MV%?qY<Q4[GnSf@gT
+b3jiIJn-We2T65^%2(gcJ"1SGBtZtgjF'#BPY1ta)(7<Dn4,K:XtDBQ$HIh%,-B_J
+!i+F[+NBPm]Kii,N2)"<TSFU6?U4;Pg8,7nSn\:X%aRlX8>u-5pk-6l+)2?s-W85T
+*[mm^M$!+c4;$j)qS)o5oBS!Dito-2F>_$V/e%)h-<_Oj>n.f`B(!^<%6jKgK-Thd
+"Ws-,o]1fOqnQ60F'BSS#M2M`=TraP:tX+Kk9/q]NiHY4e0/P:<F7N;[+;=4!I/U5
+H@0tQ0`<6ta5iUfP-WmrkIb<MAt8s;K.#U0Yd3)Bq+YdlWAgjHH@)odp<J60`5p&/
+DD/>%#)Cb+.[-as[TP,$/sC"lBE2qF)]OLK:E^=W)9]3``Y@fO2sferlg"f?l[9#s
+YNtan!qgLhK&JsSQbu!K@kjC1P6@2[6>TUn-#afcJB)QRaJDrLs/gI76%Aha%[Y@M
+ZhiQh%DTWnJ\7>0Da`1S%(J=Y$:]XhW?AtX9JWSH+r1J^"9JUrf671p<"&6!k#G2!
+Mo4SmTAt"IW)3nWqrr?I%8%m*f+?_jDA9UH;B\D0J7r>@a5_2#*"JH4^(>&.e,Fnk
+e\8OD"6B$l15/%I&[^#M44m9GelFpDX*Mhfi7*BOA6FGAa!H7</G,8IBtISSW_qN!
+'d3Vm86))ji9TpAfP?o_6PXDll:-LFE/9L5^^pqgENc0*dW1+l=%*K\a;)eGUD&iT
+H>S$,qK?Y&eRb9i;ZlpW'6"du%'JK^<R9b35i>ZE!g?;B7j-:EVp)q;a4otW;sQWV
+eYlK*q-8*RkMI9]=A`NlX2m+M.JVqO<4*<ZheiT4oe4OW`We.2pN;Za=8J5!?Fg$S
+AQ'[$M8@E76j9*ih/*R$N$MksFn^&[8(6pml=D8ZXEdCh:!i:q.eEE7<A4\9+)!!c
+,nUT4SJFTe+dR8j\/t;^SWAO]7#e;&4mJJt\BB#*i\sKR+N/QKKNd*KQ;$iJXsR7b
+D\X0rGrjb>`#M#NGTCDp:`!>g9cqP$Uc\.cgKZ'H%4p1,@k&)"TDGl"S(R8%cH$S_
+N;+3*p\.*?<F7M1(a8hfR!0*B(&`6#[#aDA2=n,_kO7VrIMZMeV\c7dqqG>KlZnX+
+qYgW7k7;Z9CRk(gU6+8*`WDu7%?YGFpGtW3J']2:@+EJfkJb&_n&cOAhZiJ5aoh[?
+\eusCAI*D<'Nt$eVh`kg!O-cl[=#4@LYY3d^XX@\+H=iM*B(=B*CHf5TD3V[YfHe'
+Gr5=U:"(1F,cQe9ddPISITD$M_Yk=e&i"n)]/r!3i6h#;nE@1On3?QcM8igSQK(ZD
+d.8tBs.gV/,u)u>Om__cWP&014n9**E?5Vu/lo%$\Rdgq)ePA%':Wk\?S*uK_7"d-
+V>*B^<$m7/E1kbH8@p5h?2oL'"4FUjkc<UT8)&'/!_TUnO(br=C8Fn^U.*KKiQJ9/
+oGco=DbcMi:NME6jmr15M*e<b2boi9e!%@O--l:3Ij<^pGT,"K("gC=&%b@Hh+hVQ
+l-6ghS4Q;JEg:6QdPPHTbg5$Vbsnh8q&&[4'hJeb"hb\tOQ&Z[^6KG*T6\UIYunpo
+D9@CH^#>+$EMIf&hS%uU?1iO+X]*G95u/j6T:=b`DWP<f%CarB5AX9'E$uE\h(T)m
+>qG&D=`E&r(9m,3aZMBB>ZgM$6eH*XG$0eL:%pEsM%!5(oCEo#^RG)?1G`)m51nU]
+i7'->b*:4e.M`Bd]F/VT"2s;-p''#WS(N<'#F:pHn\Jga)6a!oIVp.;cccoKriG8#
+`WYjh%&Y^2:<DR0-^2YaF'ii-aQH2n0rFo[ZEiceYD$Ic,.4b@MJn7J*h..O3mbCD
+H,TsNL0ACY@HmVI1Q!Iab=uId=WHM;IP%(\SWVdT>q1Dp<KZtI8;,Y:b.soG;UN:c
+h5$;p0ln;=d53T,0Ap0$H@,6=q`-6uHj(shi`]1;/,:n$9#O".aW4X!g4O;hW(:=L
+@2`&M5(KlFr+r%qo)+7O=3beol*Ptm=IFJXT?O9"H$`[6=f#&:n5%qnh)),CE*=H]
+S(C/P#PmP[$Ln``((+S\.=Z;UOFKZ*4tP%0R#tAu5uuO%SIj#9=da_+FdejBoNT?6
+=@!4IrcW9^36IGm3L%5U*-gN"naT\41:r>:U:BXSER($F6^!atnrA`DZmaaj)BWb=
+I"$C3-R4q_kG<Cs+_q1sY6Y[Z&FfKs(0ur'bHu_#/o6]Vha^fEdK!f@kSJmPY],i]
+,<HDI]^+Ot#*mit/`,Z1m[(m(Nii1[4S(Hd[TCX@c&TK'("DQ&o!9?T/.]X<.3lU"
+JP<?jn?7/OhGmo*'\uCJlt0*MQj&,C$hID_;6SLY.\so^G4SXnIYT"'o"jL$+[clN
+[K1pCp]d[2d62EWgDqo-f,ol:P0RSl9B-YZb@[=ceL4uAOT:_PRaA6>ph75j#1\T6
+(C@tI(YBgd7t[i`n1rIWEQVh#3o#O2Mi(FI#4UWb(#2SfSfBTED(3/p<?6%K7__2.
+n`o]CKXAS.&>bS#g0otQACP"UET!j03#[^0a>3+h:+[];/N@e8l05iUTrS=Zk4TPA
+Gle"Xh)mVQ1OA$5@5^R.g;[!t67NS*V2?Fu_).('-4gUF7e*!o!Wj4\FmHS-CLtmn
+gXW%/^L?2hDId?9EZr1:O8.KdP9W[S3#T#:Z$^67BXToab:>(n9Fb%2Zgq@9%jJli
+q>Lc?7V5,C-b8m#)Y*o_LkjHYIMSEr(Fq='+KduC4<CuL8eA_o9n''.>0"__)a"jk
+%>L$rnFHL%IsWEuYo9iPN';t@0/cTK<=K%"X5,N!R%*=?@=>*(-Q"0D<u6aPjTUV>
+cW3Ge8,K9Qhu-!I'NXDt@cRq'V5b-@d6'3HCUHk#eM9=d4WV6_I()$nDkDDah?eJ+
+>m:A0\+:i>6UYV8.JW6G56Hiqc@AGD">udmCka'F<q"d4p^/.2o[dlRQP!P25M&67
+^8;jN4a]IYc@M8:?Z\m@]=2CSUUQl*UKX]W9H&!t.S77$pmRr4ejO8t9WZGDY.ido
+m0kX$lQ?tdOV1d#NiRi:+:qKCKMj*FjTjlY7Vu>>p&r,+EHBSWRoF+Z"bZ@ARLn#\
+@!T\,F-*(^9=Dqcd2PSC;fhaYWEcE%a@,F>Y3KNel=ChCh<\51+s4.XKL2P(<t*'J
+/,Od#I63.1\F+K5%nh0GY9>Ts*Y=,qGT+&2eV@mknAgGLPneRO-@H%?GfKt-obN*I
+(VUr$lcb<#b$Hj_F.,V\^e<QIP%5VMHZ;&_h*n>N;m'D]"%TtL[J4h>Q*C&]+U0g.
+r3*m:J(9stOq;9G<=S4<OraGA$:Hs#QXZ4SPt0as.KIl^_!NTXjVgeb';V6<]Rg1r
+TgCf]m_j&/(@8jLF(oB+a_"M1\c)1LQt<5QNqQTUjPnl&ZcDaUjK[3bHECY*>U)\.
+V%SVq._U15JpJZ2:2GY<lcaa-NYl)n2ecjrB!/4O[C^-Lri8-3`O2gP-Ef*l05eZB
+YYlu%nGrW^*p,4,C3*lpMh6PNY[o:"oY&B$%p,*18(hF;S19-J*oo)bNK5=$oJ>N`
+N!?!(aR;KA]2sIL"U%:9XL]8UKgHC0o[qXn'gfJ$X3SqB4#Ag9a+L]GJSNuO&DTl"
+0TK6^njg4hSVSX18%UuK_gUhk]LLuRq#]m'QfI.)Oo(+NYM1aPB*d0*KNQZg.dPt^
+3@KSjO[p`e!pT^JpuE8(7Y7[6*mYJij]F&L_2?-*^N%2LR4[5K1I7thcZfMAnDk/n
+?8EV1h;m^E!7^*@&M*;ljR`1`3Z\ZRh%%'QM:]p;lZd!]A\Y?/<m#$Gm"1YAa=P%l
+B5n/7[WBLP(po[!_<&,7eq(!9>b5NdWnY/_3QO(7=E)qRCGB%*Tf2K;rI2C)BRP$u
+4dB`)Qcr\aos+e_ULoiWR`lhD4dI]R0//:*]R=LCembo<0q9FlM):I/RH.u,49&m7
+?nc'g[cC`1>=I-0CP6Z.FO/1-gYRCN9P\\F,)P-'iU$I^=+ZJCZDjtQMJHgM@b`X@
+#k*1<m\VbOR3[17Bpfq]d3;qP6J1><bFiDm4s16D"jYRc1Dg)Ul/tYq;g.UjQ,t&;
+'Ma[m3siGW(0n/7oYX&]&O8>=p')^?17_0;@@t^u0s"7c:-WNdT?$nA,=830WH@S'
+ll0P\`lsIG6uu-G7l4nH>mtPHp2]skZ`h$*U*A7(eLIC.RIXZC2)E#.O)-,OPOO"p
+b_0.(2(!;=.C4.4pQtP7TY"uh'^]jZGuZ^XTs;?M.m:R^!JH?R(Q#&6pF>P[D#JU[
+P8]jNc\M?`CToda5`:IE"S9LsUfnrZi$5.l0Tr]#G$$h7G'MWI[eGj.^3qA/rQ\G_
+BssTYIR##TUa%4A2mf"*-9#HY#tC]KT[+&Q,m,,Fe3J'!KZ31]Mc'O<!/C`,T>TdN
+Ce:N0I"SFbmGs3F5%Q'bEdmg)c(&35U6PE,`sOf#G\GOjnV9%PC*O>upjLd5n?3CV
+4>q.)Y!Aj=!.`E#[0>g74pC!]p_/s3as"0=:a)*SSu6C_JQQqGIsM,%!D$[o)+j2M
+&KtfQbYE(a4VD)mHPbIT]ZRpnm$p@p5W!J];m)[_>P*\02BrriI>$&W,uU^1,iB%U
+K0&W%auT[KdFe]m,&frO8\<r;BP,r=Pg-Q"&!45peS:Rt0.aUR(5#eB4']95.oPWJ
+cG=HFlsH2KKQu%H%lleFljRt2;RO@+AqK.2iqsL[2c/*n4n\]48Ba2)EHme_M_:KE
+C=5(YYrS<aCbUcm=OZu:Y7;Lg*a]K(3=ks08TVt>=_ul+mUr5^9m-r2D#OQX.bVN*
+==4<bJZt1[:hlmOs#TOJe$sRGGgp-,=KQ2JJBEhWi%79\cKnYbK+8O)@7\TgO%$e,
+/6IPD7>'W^'#IUo5C]%bfMBOZ@d4<;?M8nK1N&Y4e7K\!.qCEV`fnm#7\*"$i%U;7
+.+.<b>4HnYAmNr/0.YV%CuQt'JLG%\S<bEY6E<k>^)L,P#Mi(QSX;0,)b,Tn6@hBI
+*uZ"9)q??D-GMs*@j[\om<2Tk39>JPrX_gkjVT8^?kh%$1'&9C[kQE]+P*N[q9m*A
+1#:K<8h/b>3';a[0fV"gW*U\lSd9YNcIlf'3jJlkB*f>LU,ID8S.Gkd\/naXE*+I:
+bsj!",%P[bAj]6s(+);\:b7`bpsn23d'HP'1,3W$:$IGpNJ:\GB>/`r4TY,Qhm]oT
+RPPmP'LGP20$H[RZ?ZL+-8n%'g:\bi$k2W?Wc%SG"(LB]QsN"W;)Gr$NB'S/e/Bo^
+QQ$bP&rQ3fHttYVrKq1#-8oH^*?-Q2nh#jd>;u^o\S>d`D]^o[/bfl>O`G!LA=4U-
+5kNbR)7GU;Z7LhkB%S*9EPN:BPpB7+eIm\Vp.]JhJ=UrsA6RgaKRQUq<lr8]0"XcW
+cTTLSUDci![kro8H,TDNSr2CA'o:sD'jalU$h5-&pT=P3^F)K3/hFXFe+BW8e&p\Y
+n93.YQc&+V/I)"Im<jfB(NbH<j'<lfqlfsZT,KOkHJ\Z9biecen2gC_s*VteI*/@7
+b,9X0VgM*rr#_-HalN~>
+endstream
+endobj
+11 0 obj
+6990
+endobj
+xref 0 12
+0000000000 65535 f
+0000000010 00000 n
+0000000061 00000 n
+0000000116 00000 n
+0000000182 00000 n
+0000000356 00000 n
+0000000449 00000 n
+0000000470 00000 n
+0000000519 00000 n
+0000011804 00000 n
+0000011828 00000 n
+0000019024 00000 n
+trailer
+<< /Size 12 /Info 1 0 R /Root 2 0 R >>
+startxref
+19048
+%%EOF
diff --git a/obsolete/support/png2pdf/DOCU/xx.pdf b/obsolete/support/png2pdf/DOCU/xx.pdf
new file mode 100644
index 0000000000..95f23774ec
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/xx.pdf
Binary files differ
diff --git a/obsolete/support/png2pdf/DOCU/zoom-in.png b/obsolete/support/png2pdf/DOCU/zoom-in.png
new file mode 100644
index 0000000000..57503edbed
--- /dev/null
+++ b/obsolete/support/png2pdf/DOCU/zoom-in.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/Makefile.in b/obsolete/support/png2pdf/Java/Png2PdfGUI/Makefile.in
new file mode 100644
index 0000000000..4da8e0f2a8
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/Makefile.in
@@ -0,0 +1,13 @@
+
+abs_top_srcdir=@abs_top_srcdir@
+
+all:
+ cd ./src && ./compile-archive $(abs_top_srcdir)
+ cd ./bin && ./create-jar $(abs_top_srcdir)
+
+install: all
+ -cp png2pdf.jar $(abs_top_srcdir)/png2pdf.jar
+
+clean:
+ -(cd ./bin && rm -fr *.class)
+ -rm *.jar
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/bin/create-jar b/obsolete/support/png2pdf/Java/Png2PdfGUI/bin/create-jar
new file mode 100755
index 0000000000..4e6363f81c
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/bin/create-jar
@@ -0,0 +1,7 @@
+#! /bin/bash
+
+cd ./bin
+[ ! -f ../png2pdf.jar ] || rm ../png2pdf.jar
+echo Create jar file
+jar cvfm ../png2pdf.jar manifest.in *.class *.html *.css *.png
+
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/bin/manifest.in b/obsolete/support/png2pdf/Java/Png2PdfGUI/bin/manifest.in
new file mode 100755
index 0000000000..4946b2bca9
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/bin/manifest.in
@@ -0,0 +1,2 @@
+Main-Class: Png2PdfGUI
+
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ChooseDirectory.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ChooseDirectory.png
new file mode 100644
index 0000000000..5e4807c888
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ChooseDirectory.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Exit.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Exit.png
new file mode 100644
index 0000000000..263cf525c2
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Exit.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Options.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Options.png
new file mode 100644
index 0000000000..ab1a5082b2
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Options.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfController.java b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfController.java
new file mode 100644
index 0000000000..8312f24181
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfController.java
@@ -0,0 +1,627 @@
+
+import java.awt.Color;
+import java.util.Properties;
+import java.util.Iterator;
+import java.util.StringTokenizer;
+import java.util.NoSuchElementException;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.File;
+
+
+import dirk_krause.jtools.LogContentsForCommand;
+import dirk_krause.jtools.StatusChanger;
+import dirk_krause.jtools.PropertyTool;
+import dirk_krause.jtools.StringTool;
+import dirk_krause.jtools.StatusChanger;
+
+public class Png2PdfController
+{
+ /**
+ * The application name (Png2PdfGUI), as found in the
+ * constructor.
+ */
+ protected String appName = null;
+
+ /**
+ * PDF format version to produce.
+ */
+ protected int pdfVersion = PDF_VERSION_14;
+
+ /**
+ * Run in make mode
+ */
+ protected boolean makeMode = true;
+
+ /**
+ * Either set interpolation bit or not
+ */
+ protected boolean interpolate = true;
+
+ /**
+ * Alpha channel by default expresses opacity.
+ * This flag can be used to change this to transparency.
+ */
+ protected boolean alphaTrans = false;
+
+ /**
+ * Mix alpha channel against a background color.
+ */
+ protected boolean mix = false;
+
+ /**
+ * The color to mix against.
+ */
+ protected Color mixColor = null;
+
+ /**
+ * Prefer specified color over background chunk contents.
+ */
+ protected boolean preferMyColor = true;
+
+ /**
+ * Create image mask or not.
+ */
+ protected boolean mask = false;
+
+ /**
+ * Use inverted mask levels or normal levels.
+ */
+ protected boolean maskInverted = false;
+
+ /**
+ * Write alpha channel to output.
+ */
+ protected boolean alpha = true;
+
+ /**
+ * Show file names while processing.
+ */
+ protected boolean showFilenames = false;
+
+ /**
+ * Status changer to show file names
+ */
+ protected StatusChanger sc = null;
+
+ protected synchronized void internalSetPdfVersion(int i) { pdfVersion = i; }
+
+ public void setPdfVersion(int i)
+ {
+ int v = i;
+ if(v < PDF_VERSION_12) v = PDF_VERSION_12;
+ if(v > PDF_VERSION_14) v = PDF_VERSION_14;
+ internalSetPdfVersion(v);
+ }
+
+ public synchronized int getPdfVersion() { return pdfVersion; }
+
+ public synchronized boolean getMakeMode() { return makeMode; }
+
+ public synchronized void setMakeMode(boolean b) { makeMode = b; }
+
+ public synchronized boolean getInterpolate() { return interpolate; }
+
+ public synchronized void setInterpolate(boolean b) { interpolate = b; }
+
+ public synchronized boolean getAlphaTrans() { return alphaTrans; }
+
+ public synchronized void setAlphaTrans(boolean b) { alphaTrans = b; }
+
+ public synchronized boolean getMix() { return mix; }
+
+ public synchronized void setMix(boolean b) { mix = b; }
+
+ public synchronized Color internalGetMixColor() { return mixColor; }
+
+ public Color getMixColor()
+ {
+ Color back = mixColor;
+ if(back == null) {
+ back = new Color(255,255,255);
+ } else {
+ back = new Color(back.getRed(), back.getGreen(), back.getBlue());
+ }
+ return back;
+ }
+
+ public void internalSetMixColor(Color c) { mixColor = c; }
+
+ public synchronized void setMixColor(Color c)
+ {
+ Color x;
+ if(c != null) {
+ x = new Color(c.getRed(), c.getGreen(), c.getBlue());
+ } else {
+ x = new Color(255,255,255);
+ }
+ internalSetMixColor(x);
+ }
+
+ public synchronized boolean getPreferMyColor() { return preferMyColor; }
+
+ public synchronized void setPreferMyColor(boolean b) { preferMyColor = b; }
+
+ public synchronized boolean getMask() { return mask; }
+
+ public synchronized void setMask(boolean b) { mask = b; }
+
+ public synchronized boolean getMaskInverted() { return maskInverted; }
+
+ public synchronized void setMaskInverted(boolean b) { maskInverted = b; }
+
+ public synchronized boolean getAlpha() { return alpha; }
+
+ public synchronized void setAlpha(boolean b) { alpha = b; }
+
+ public synchronized boolean getShowFilenames() { return showFilenames; }
+
+ public synchronized void setShowFilenames(boolean b) { showFilenames = b; }
+
+ public synchronized StatusChanger getStatusChanger() { return sc; }
+
+ public synchronized void setStatusChanger(StatusChanger s) { sc = s; }
+
+ public static final String[] pk = {
+ "directory",
+ ".",
+ "png2pdf GUI settings",
+ "show-filenames",
+ };
+
+ public static final int PDF_VERSION_12 = 0;
+ public static final int PDF_VERSION_13 = 1;
+ public static final int PDF_VERSION_14 = 2;
+
+ public static final String[] allArgs = {
+ /* 0 */ "png2pdf",
+ /* 1 */ "--/ui/lang=en",
+ /* 2 */ "--/ui/lang/env=no",
+ /* 3 */ "--/log/stdout/level=warning",
+ /* 4 */ "--/log/stderr/level=none",
+ /* 5 */ "--/log/file/level=none",
+ /* 6 */ "--/log/file/name=png2pdf-gui.log",
+ /* 7 */ "-C",
+ /* 8 */ "-r",
+ /* 9 */ "-c",
+ /* 10 */ "-p",
+ /* 11 */ "1.2",
+ /* 12 */ "1.3",
+ /* 13 */ "1.4",
+ /* 14 */ "-m",
+ /* 15 */ "-m-",
+ /* 16 */ "-s",
+ /* 17 */ "-s-",
+ /* 18 */ "-i",
+ /* 19 */ "-i-",
+ /* 20 */ "-a",
+ /* 21 */ "-a-",
+ /* 22 */ "-l",
+ /* 23 */ "-l-",
+ /* 24 */ "-t",
+ /* 25 */ "-t-",
+ /* 26 */ "-b",
+ /* 27 */ "-b-",
+ /* 28 */ "-n",
+ /* 29 */ "-n-",
+ /* 30 */ "-f",
+ /* 31 */ "-f-",
+ /* 32 */ ",",
+ /* 33 */ ".",
+ /* 34 */ ".pdf",
+ /* 35 */ "Processing file: ",
+ };
+
+ public static final String[] options = {
+ "-p", // 0
+ "-m", // 1
+ "-s", // 2
+ "-i", // 3
+ "-a", // 4
+ "-l", // 5
+ "-t", // 6
+ "-b", // 7
+ "-n", // 8
+ "-f", // 9
+ };
+
+ public static final String[] versions = {
+ "1.2", "1.3", "1.4"
+ };
+
+ protected String workingDirectory = "." ;
+
+ protected synchronized void internalSetCwd(String s) { workingDirectory = s; }
+ protected synchronized String internalGetCwd() { return workingDirectory; }
+ public void setCwd(String newcwd)
+ {
+ internalSetCwd(new String(newcwd));
+ }
+ public String getCwd()
+ {
+ String back = new String(internalGetCwd());
+ return back;
+ }
+
+ public Png2PdfController(String an)
+ {
+ appName = an;
+ initialize();
+ }
+
+ public Png2PdfController()
+ {
+ this(Png2PdfGUI.appName);
+ }
+
+ protected void addProgramOptions(LogContentsForCommand l)
+ {
+ int pv = getPdfVersion();
+ boolean al = getAlpha();
+ boolean ma = getMask();
+ boolean mi = getMaskInverted();
+ boolean mx = getMix();
+ Color co = getMixColor();
+ boolean pc = getPreferMyColor();
+ boolean in = getInterpolate();
+ boolean mm = getMakeMode();
+ boolean tr = getAlphaTrans();
+ if(pv < PDF_VERSION_12) pv = PDF_VERSION_12;
+ if(pv > PDF_VERSION_14) pv = PDF_VERSION_14;
+ if(pv < PDF_VERSION_14) {
+ al = false;
+ }
+ if(al) {
+ mx = false;
+ ma = false;
+ }
+ if(pv < PDF_VERSION_13) {
+ ma = false;
+ }
+ l.addArgv(allArgs[10]);
+ l.addArgv(allArgs[11+pv]);
+ if(al) {
+ l.addArgv(allArgs[20]);
+ } else {
+ l.addArgv(allArgs[21]);
+ if(mx) {
+ l.addArgv(allArgs[14]);
+ StringBuilder sb = new StringBuilder();
+ sb.append(Integer.toString(co.getRed()));
+ sb.append(allArgs[32]);
+ sb.append(Integer.toString(co.getGreen()));
+ sb.append(allArgs[32]);
+ sb.append(Integer.toString(co.getBlue()));
+ l.addArgv(new String(sb));
+ if(pc) {
+ l.addArgv(allArgs[16]);
+ } else {
+ l.addArgv(allArgs[17]);
+ }
+ } else {
+ l.addArgv(allArgs[15]);
+ }
+ if(ma) {
+ l.addArgv(allArgs[18]);
+ if(mi) {
+ l.addArgv(allArgs[22]);
+ } else {
+ l.addArgv(allArgs[23]);
+ }
+ } else {
+ l.addArgv(allArgs[19]);
+ }
+ }
+ if(al || mx || ma) {
+ if(tr) {
+ l.addArgv(allArgs[24]);
+ } else {
+ l.addArgv(allArgs[25]);
+ }
+ }
+ if(pv >= PDF_VERSION_13) {
+ if(in) {
+ l.addArgv(allArgs[28]);
+ } else {
+ l.addArgv(allArgs[29]);
+ }
+ }
+ }
+
+ public LogContentsForCommand restoreOptions()
+ {
+ int i;
+ int pv = PDF_VERSION_14;
+ boolean al = true;
+ boolean ma = false;
+ boolean mi = false;
+ boolean mx = false;
+ Color co = null;
+ boolean pc = false;
+ boolean in = true;
+ boolean mm = true;
+ boolean tr = true;
+ LogContentsForCommand back = new LogContentsForCommand();
+ for(i = 0; i <= 7; i++) {
+ back.addArgv(allArgs[i]);
+ }
+ back.run();
+ if(back.getSuccess()) {
+ Iterator<String> it = back.getIterator();
+ int state = 0;
+ while(it.hasNext()) {
+ String s = it.next();
+ String t = s.trim();
+ switch(state) {
+ case 0: {
+ if(t.startsWith(LogContentsForCommand.msgTexts[1])) {
+ state = 1;
+ }
+ } break;
+ case 1: {
+ if(t.startsWith(LogContentsForCommand.msgTexts[2])) {
+ state = 2;
+ } else { // process line
+ StringTokenizer st = new StringTokenizer(t);
+ if(st.hasMoreTokens()) {
+ try {
+ String k = st.nextToken();
+ if(st.hasMoreTokens()) {
+ String v = st.nextToken();
+ boolean b = StringTool.getBoolean(v, false);
+ switch(StringTool.getArrayIndex(options, k)) {
+ case 0: { // -p
+ pv = StringTool.getArrayIndex(versions, v);
+ } break;
+ case 1: { // -m
+ StringTokenizer st2 = new StringTokenizer(v, " \t,");
+ try {
+ if(st2.hasMoreTokens()) {
+ String sr = st2.nextToken();
+ if(st2.hasMoreTokens()) {
+ String sg = st2.nextToken();
+ if(st2.hasMoreTokens()) {
+ String sb = st2.nextToken();
+ try {
+ int r = Integer.parseInt(sr);
+ int g = Integer.parseInt(sg);
+ int blue = Integer.parseInt(sb);
+ co = new Color(r,g,blue);
+ }
+ catch(NumberFormatException e) {}
+ }
+ }
+ }
+ }
+ catch(NoSuchElementException e) {}
+ } break;
+ case 2: { // -s
+ pc = b;
+ } break;
+ case 3: { // -i
+ ma = b;
+ } break;
+ case 4: { // -a
+ al = b;
+ } break;
+ case 5: { // -l
+ mi = b;
+ } break;
+ case 6: { // -t
+ tr = b;
+ } break;
+ case 7: { // -b
+ // nichts tun, ignorieren
+ } break;
+ case 8: { // -n
+ in = b;
+ } break;
+ case 9: { // -f
+ mm = b;
+ } break;
+ }
+ }
+ }
+ catch(NoSuchElementException e) {}
+ }
+ }
+ } break;
+ }
+ }
+ }
+ if(pv < PDF_VERSION_12) pv = PDF_VERSION_12;
+ if(pv > PDF_VERSION_14) pv = PDF_VERSION_14;
+ if(pv < PDF_VERSION_14) {
+ al = false;
+ }
+ if(pv < PDF_VERSION_13) {
+ in = false;
+ }
+ if(al) {
+ mx = false; ma = false;
+ }
+ if(!ma) {
+ mi = false;
+ }
+ if(!mx) {
+ pc = false;
+ }
+ setPdfVersion(pv);
+ setAlpha(al);
+ setAlphaTrans(tr);
+ setInterpolate(in);
+ setMakeMode(mm);
+ setMask(ma);
+ setMaskInverted(mi);
+ setMix(mx);
+ setPreferMyColor(pc);
+ setMixColor(co);
+ return back;
+ }
+
+ public LogContentsForCommand saveOptions()
+ {
+ LogContentsForCommand back = new LogContentsForCommand();
+ int i = 0;
+ back.addArgv(allArgs[0]);
+ for(i = 3; i <= 6 ; i++) {
+ back.addArgv(allArgs[i]);
+ }
+ for(i = 8; i <= 9; i++) {
+ back.addArgv(allArgs[i]);
+ }
+ addProgramOptions(back);
+ if(getMakeMode()) {
+ back.addArgv(allArgs[30]);
+ } else {
+ back.addArgv(allArgs[31]);
+ }
+ back.run();
+
+ return back;
+ }
+
+ protected boolean mustConvert(String sname, String dname)
+ {
+ boolean back = true;
+ File sfile = new File(sname);
+ File dfile = new File(dname);
+ if(dfile.exists()) {
+ if(dfile.isFile()) {
+ if(dfile.lastModified() > sfile.lastModified()) {
+ back = false;
+ }
+ }
+ }
+ return back;
+ }
+
+ protected String changeSuffix(String fn)
+ {
+ String back = fn;
+ StringBuilder sb;
+ int ind = fn.lastIndexOf(allArgs[33]);
+ if(ind > -1) {
+ sb = new StringBuilder(fn.substring(0, ind));
+ } else {
+ sb = new StringBuilder(fn);
+ }
+ sb.append(allArgs[34]);
+ back = new String(sb);
+ return back;
+ }
+
+ protected void runShowingFilenames(LogContentsForCommand l)
+ {
+ boolean mm = getMakeMode();
+ Png2PdfFileFilter ff = new Png2PdfFileFilter();
+ File d = new File(getCwd());
+ StatusChanger s = getStatusChanger();
+ if(d.isDirectory()) {
+ File[] inputNames = d.listFiles(ff);
+ for(int k = 0; k < inputNames.length; k++) {
+ String sname = inputNames[k].getAbsolutePath();
+ String dname = changeSuffix(sname);
+ boolean mustRun = true;
+ if(mm) {
+ mustRun = this.mustConvert(sname, dname);
+ }
+ if(mustRun) {
+ if(s != null) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(allArgs[35]);
+ sb.append(inputNames[k].getName());
+ s.setStatus(new String(sb));
+ }
+ l.newCommand();
+ l.addArgv(allArgs[0]);
+ for(int i = 3; i <= 6 ; i++) {
+ l.addArgv(allArgs[i]);
+ }
+ addProgramOptions(l);
+ if(getMakeMode()) {
+ l.addArgv(allArgs[30]);
+ } else {
+ l.addArgv(allArgs[31]);
+ }
+ l.addArgv(sname);
+ l.addArgv(dname);
+ l.run();
+ }
+ }
+ } else {
+ // ERROR No directory
+ }
+ ff = null;
+ }
+
+ public LogContentsForCommand runTheProgram()
+ {
+ int i;
+ LogContentsForCommand back = new LogContentsForCommand();
+ if(getShowFilenames()) {
+ runShowingFilenames(back);
+ } else {
+ back.addArgv(allArgs[0]);
+ for(i = 3; i <= 6 ; i++) {
+ back.addArgv(allArgs[i]);
+ }
+ addProgramOptions(back);
+ if(getMakeMode()) {
+ back.addArgv(allArgs[30]);
+ } else {
+ back.addArgv(allArgs[31]);
+ }
+ back.addArgv(this.getCwd());
+ back.run();
+ }
+ return back;
+ }
+
+ /**
+ * Write current working directory to preferences
+ * after the directory was changed.
+ *
+ */
+ public void writeCwd()
+ {
+ try {
+ Properties p = new Properties();
+ p.setProperty(pk[0], getCwd());
+ p.setProperty(
+ pk[3],
+ ((showFilenames)
+ ? (StringTool.theBooleanStrings[3])
+ : (StringTool.theBooleanStrings[8]))
+ );
+ PropertyTool.writePropertiesForApp(Png2PdfGUI.appName, p, pk[2]);
+ }
+ catch(FileNotFoundException e) {
+ }
+ catch(IOException e) {
+ }
+ catch(SecurityException e) {
+ }
+ }
+
+ /**
+ * Initialize object, read working directory from
+ * preferences.
+ *
+ */
+ public void initialize()
+ {
+ try {
+ Properties p = PropertyTool.readPropertiesForApp(Png2PdfGUI.appName);
+ String newcwd = p.getProperty(pk[0], pk[1]);
+ setCwd(newcwd);
+ String s = p.getProperty(pk[3], StringTool.theBooleanStrings[8]);
+ showFilenames = StringTool.getBoolean(s, false);
+ }
+ catch(FileNotFoundException e) {}
+ catch(IOException e) {}
+ catch(SecurityException e) {}
+ }
+
+
+}
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfDialog.java b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfDialog.java
new file mode 100644
index 0000000000..6faaee8d47
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfDialog.java
@@ -0,0 +1,550 @@
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.WindowListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.Container;
+import java.awt.Component;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+
+import dirk_krause.jtools.ComponentSizer;
+import dirk_krause.jtools.GuiController;
+import dirk_krause.jtools.SelfPositioningDialog;
+import dirk_krause.jtools.GbcMaker;
+import dirk_krause.jtools.StringTool;
+import dirk_krause.jtools.ColorShowArea;
+
+public class Png2PdfDialog extends SelfPositioningDialog
+ implements ActionListener, WindowListener, ItemListener
+{
+ protected int b = 5;
+ protected Png2PdfController ppc = null;
+ protected ActionListener a = null;
+ protected ActionListener ccal = null;
+ protected ItemListener mixl = null;
+ protected ItemListener masl = null;
+ protected ItemListener alpl = null;
+ protected JButton bOK = null;
+ protected JButton bCancel = null;
+ protected JComboBox cbPdfVersion = null;
+ protected JCheckBox cbMakeMode = null;
+ protected JCheckBox cbInterpolation = null;
+ protected JCheckBox cbMix = null;
+ protected ColorShowArea csa = null;
+ protected JCheckBox cbPrefer = null;
+ protected JCheckBox cbMask = null;
+ protected JCheckBox cbInverted = null;
+ protected JCheckBox cbAlpha = null;
+ protected JCheckBox cbTransparency = null;
+ protected JButton bDefaults = null;
+ protected JCheckBox cbShowFilenames = null;
+
+ protected boolean isCorrecting = false;
+
+ protected synchronized boolean startCorrection()
+ {
+ boolean back = false;
+ if(!isCorrecting) {
+ isCorrecting = true; back = true;
+ }
+ return back;
+ }
+
+ protected synchronized void finishCorrection()
+ {
+ isCorrecting = false;
+ }
+
+ class ColorChangerActionListener implements ActionListener
+ {
+ Component parent;
+ public void actionPerformed(ActionEvent e)
+ {
+ Color newColor = JColorChooser.showDialog(
+ parent, theTexts[15], csa.getColor()
+ );
+ if(newColor != null) {
+ csa.setColor(newColor);
+ }
+ }
+ public ColorChangerActionListener(Component jp)
+ {
+ parent = jp;
+ }
+ }
+
+ class MixListener implements ItemListener
+ {
+ public void itemStateChanged(ItemEvent e)
+ {
+ if(startCorrection()) {
+ if(cbMix.isSelected()) {
+ if(cbAlpha.isSelected()) {
+ cbAlpha.setSelected(false);
+ cbMask.setSelected(true);
+ }
+ }
+ finishCorrection();
+ }
+ }
+ }
+
+ class MaskListener implements ItemListener
+ {
+ public void itemStateChanged(ItemEvent e)
+ {
+ if(startCorrection()) {
+ if(cbMask.isSelected()) {
+ if(cbAlpha.isSelected()) {
+ cbAlpha.setSelected(false);
+ cbMix.setSelected(true);
+ }
+ }
+ finishCorrection();
+ }
+ }
+ }
+
+ class AlphaListener implements ItemListener
+ {
+ public void itemStateChanged(ItemEvent e)
+ {
+ if(startCorrection()) {
+ if(cbAlpha.isSelected()) {
+ if(cbMix.isSelected()) {
+ cbMix.setSelected(false);
+ }
+ if(cbMask.isSelected()) {
+ cbMask.setSelected(false);
+ }
+ }
+ finishCorrection();
+ }
+ }
+ }
+
+ public static final String[] theTexts = {
+ /* 0 */ "Png2pdf Options",
+ /* 1 */ "General options",
+ /* 2 */ "Image interpolation",
+ /* 3 */ "Alpha channel handling",
+ /* 4 */ "PDF format version: ",
+ /* 5 */ "Run in \"make\" mode (check modification timestamps)",
+ /* 6 */ "Set interpolation flag",
+ /* 7 */ "Mix against a background color",
+ /* 8 */ "Choose default background color: ",
+ /* 9 */ " ",
+ /* 10 */ "Prefer specified default color over background color chunk",
+ /* 11 */ "Create image mask",
+ /* 12 */ "Use inverted mask levels",
+ /* 13 */ "Write alpha channel to output",
+ /* 14 */ "Input alpha channel expresses transparency",
+ /* 15 */ "Choose default background color",
+ /* 16 */ "Show file names while processing"
+ };
+ public static final String[] buttonTexts = {
+ /* 0 */ "OK",
+ /* 1 */ "Cancel",
+ /* 2 */ "Defaults",
+ };
+ public static final String[] pdfVersions = {
+ "1.2", "1.3", "1.4"
+ };
+
+ public Png2PdfDialog(JFrame p, GuiController gc, Png2PdfController pc, ActionListener al)
+ {
+ super(p);
+ b = gc.getBorder();
+ ppc = pc;
+ a = al;
+ setTitle(theTexts[0]);
+ Container cp = getContentPane();
+ GridBagLayout gbl = new GridBagLayout();
+ cp.setLayout(gbl);
+ GridBagConstraints gbc = null;
+ JPanel jp = null;
+ GbcMaker gbcm = new GbcMaker(4,1,b);
+ // general options panel
+ jp = new JPanel();
+ setGeneralOptionsPanel(jp);
+ gbc = gbcm.create(0,0,1,1);
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ gbl.setConstraints(jp, gbc);
+ cp.add(jp);
+ // interpolation panel
+ jp = new JPanel();
+ setInterpolationPanel(jp);
+ gbc = gbcm.create(1,0,1,1);
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ gbl.setConstraints(jp, gbc);
+ cp.add(jp);
+ // alpha panel
+ jp = new JPanel();
+ setAlphaPanel(jp);
+ gbc = gbcm.create(2,0,1,1);
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ gbl.setConstraints(jp, gbc);
+ cp.add(jp);
+ // button panel
+ jp = new JPanel();
+ setButtonPanel(jp);
+ gbc = gbcm.create(3,0,1,1);
+ gbl.setConstraints(jp, gbc);
+ cp.add(jp);
+ // and finish setup
+ csa.setToolTipText(theTexts[15]);
+ pack();
+ addWindowListener(this);
+ ccal = new ColorChangerActionListener(this);
+ csa.addActionListener(ccal);
+ mixl = new MixListener();
+ cbMix.addItemListener(mixl);
+ masl = new MaskListener();
+ cbMask.addItemListener(masl);
+ alpl = new AlphaListener();
+ cbAlpha.addItemListener(alpl);
+ cbPdfVersion.addItemListener(this);
+ controller_to_dialog();
+ }
+
+ protected void setAlphaPanel(JPanel jp)
+ {
+ jp.setBorder(BorderFactory.createTitledBorder(theTexts[3]));
+ GridBagLayout gbl = new GridBagLayout();
+ jp.setLayout(gbl);
+ GbcMaker gbcm = new GbcMaker(7, 4, b);
+ GridBagConstraints gbc = null;
+ cbTransparency = new JCheckBox(theTexts[14]);
+ gbc = gbcm.create(0, 0, 1, 3);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbTransparency, gbc);
+ jp.add(cbTransparency);
+ cbMix = new JCheckBox(theTexts[7]);
+ gbc = gbcm.create(1, 0, 1, 3);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbMix, gbc);
+ jp.add(cbMix);
+ JLabel l = new JLabel(theTexts[9]);
+ gbc = gbcm.create(2,0,1,1);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(l, gbc);
+ jp.add(l);
+ l = new JLabel(theTexts[8]);
+ gbc = gbcm.create(2, 1, 1, 1);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(l, gbc);
+ jp.add(l);
+ csa = new ColorShowArea();
+ gbc = gbcm.create(2, 2, 1, 1);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(csa, gbc);
+ jp.add(csa);
+ JPanel dp = gbcm.createDummyPanel();
+ gbc = gbcm.createDummyGbc(2,3,1,1);
+ gbl.setConstraints(dp, gbc);
+ jp.add(dp);
+ cbPrefer = new JCheckBox(theTexts[10]);
+ gbc = gbcm.create(3,1,1,2);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbPrefer, gbc);
+ jp.add(cbPrefer);
+ cbMask = new JCheckBox(theTexts[11]);
+ gbc = gbcm.create(4,0,1,3);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbMask, gbc);
+ jp.add(cbMask);
+ cbInverted = new JCheckBox(theTexts[12]);
+ gbc = gbcm.create(5,1,1,2);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbInverted, gbc);
+ jp.add(cbInverted);
+ cbAlpha = new JCheckBox(theTexts[13]);
+ gbc = gbcm.create(6,0,1,3);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbAlpha, gbc);
+ jp.add(cbAlpha);
+ }
+
+ protected void setInterpolationPanel(JPanel jp)
+ {
+ jp.setBorder(BorderFactory.createTitledBorder(theTexts[2]));
+ GridBagLayout gbl = new GridBagLayout();
+ jp.setLayout(gbl);
+ GbcMaker gbcm = new GbcMaker(1, 2, b);
+ GridBagConstraints gbc = null;
+ cbInterpolation = new JCheckBox(theTexts[6]);
+ gbc = gbcm.create(0,0,1,1);
+ gbl.setConstraints(cbInterpolation, gbc);
+ jp.add(cbInterpolation);
+ JPanel dp = gbcm.createDummyPanel();
+ gbc = gbcm.createDummyGbc(0,1,1,1);
+ gbl.setConstraints(dp, gbc);
+ jp.add(dp);
+ }
+
+ protected void setGeneralOptionsPanel(JPanel jp)
+ {
+ jp.setBorder(BorderFactory.createTitledBorder(theTexts[1]));
+ GridBagLayout gbl = new GridBagLayout();
+ jp.setLayout(gbl);
+ GbcMaker gbcm = new GbcMaker(3, 3, b);
+ GridBagConstraints gbc = null;
+ JLabel jl = new JLabel(theTexts[4]);
+ gbc = gbcm.create(0,0,1,1);
+ gbl.setConstraints(jl, gbc);
+ jp.add(jl);
+ cbPdfVersion = new JComboBox();
+ for(int i = 0; i < pdfVersions.length; i++) {
+ cbPdfVersion.addItem(pdfVersions[i]);
+ }
+ cbPdfVersion.setSelectedIndex(0);
+ gbc = gbcm.create(0,1,1,1);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbPdfVersion, gbc);
+ jp.add(cbPdfVersion);
+ JPanel dp = gbcm.createDummyPanel();
+ gbc = gbcm.createDummyGbc(0, 2, 1, 1);
+ gbl.setConstraints(dp, gbc);
+ jp.add(dp);
+ cbMakeMode = new JCheckBox(theTexts[5]);
+ gbc = gbcm.create(1,0,1,2);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbMakeMode, gbc);
+ jp.add(cbMakeMode);
+ cbShowFilenames = new JCheckBox(theTexts[16]);
+ gbc = gbcm.create(2, 0, 1, 2);
+ gbc.anchor = GridBagConstraints.WEST;
+ gbl.setConstraints(cbShowFilenames, gbc);
+ jp.add(cbShowFilenames);
+ }
+
+ protected void setButtonPanel(JPanel jp)
+ {
+ jp.setLayout(new BoxLayout(jp, BoxLayout.LINE_AXIS));
+ bOK = new JButton(buttonTexts[0]);
+ bOK.addActionListener(this);
+ bCancel = new JButton(buttonTexts[1]);
+ bCancel.addActionListener(this);
+ bDefaults = new JButton(buttonTexts[2]);
+ bDefaults.addActionListener(this);
+ ComponentSizer cs = new ComponentSizer();
+ cs.getComponentSize(bOK); cs.getComponentSize(bCancel);
+ cs.getComponentSize(csa); cs.getComponentSize(bDefaults);
+ cs.setComponentSize(bOK); cs.setComponentSize(bCancel);
+ cs.setComponentSize(csa); cs.setComponentSize(bDefaults);
+ jp.add(Box.createHorizontalGlue());
+ jp.add(bOK);
+ jp.add(Box.createRigidArea(new Dimension(b, b)));
+ jp.add(bCancel);
+ jp.add(Box.createRigidArea(new Dimension(b, b)));
+ jp.add(bDefaults);
+ jp.add(Box.createHorizontalGlue());
+ }
+
+ public void cleanup()
+ {
+ cbPdfVersion.removeItemListener(this);
+ cbMix.removeItemListener(mixl);
+ mixl = null;
+ cbMask.removeItemListener(masl);
+ masl = null;
+ cbAlpha.removeItemListener(alpl);
+ alpl = null;
+ csa.removeActionListener(ccal);
+ ccal = null;
+ removeWindowListener(this);
+ bOK.removeActionListener(this);
+ bCancel.removeActionListener(this);
+ }
+
+ public void controller_to_dialog()
+ {
+ if(startCorrection()) {
+ int i = ppc.getPdfVersion();
+ if(i < 0) i = 0; if(i > 2) i = 2;
+ cbPdfVersion.setSelectedIndex(i);
+ cbMakeMode.setSelected(ppc.getMakeMode());
+ cbInterpolation.setSelected(ppc.getInterpolate());
+ cbTransparency.setSelected(ppc.getAlphaTrans());
+ cbMix.setSelected(ppc.getMix());
+ csa.setColor(ppc.getMixColor());
+ cbPrefer.setSelected(ppc.getPreferMyColor());
+ cbMask.setSelected(ppc.getMask());
+ cbInverted.setSelected(ppc.getMaskInverted());
+ cbAlpha.setSelected(ppc.getAlpha());
+ cbShowFilenames.setSelected(ppc.getShowFilenames());
+ finishCorrection();
+ }
+ correct_dialog();
+ }
+
+ public void dialog_to_controller()
+ {
+ int i = cbPdfVersion.getSelectedIndex();
+ if(i < 0) i = 0; if(i > 2) i = 2;
+ ppc.setPdfVersion(i);
+ ppc.setMakeMode(cbMakeMode.isSelected());
+ ppc.setInterpolate(cbInterpolation.isSelected());
+ ppc.setAlphaTrans(cbTransparency.isSelected());
+ ppc.setMix(cbMix.isSelected());
+ ppc.setMixColor(csa.getColor());
+ ppc.setPreferMyColor(cbPrefer.isSelected());
+ ppc.setMask(cbMask.isSelected());
+ ppc.setMaskInverted(cbInverted.isSelected());
+ ppc.setAlpha(cbAlpha.isSelected());
+ ppc.setShowFilenames(cbShowFilenames.isSelected());
+ }
+
+ protected void setDefaults()
+ {
+ if(startCorrection()) {
+ cbMakeMode.setSelected(true);
+ cbPdfVersion.setSelectedIndex(2);
+ cbInterpolation.setSelected(true);
+ cbMix.setSelected(false);
+ cbTransparency.setSelected(false);
+ csa.setColor(new Color(255,255,255));
+ cbPrefer.setSelected(false);
+ cbMask.setSelected(false);
+ cbInverted.setSelected(false);
+ cbAlpha.setSelected(true);
+ cbMask.setEnabled(true);
+ cbAlpha.setEnabled(true);
+ cbInterpolation.setEnabled(true);
+ cbShowFilenames.setSelected(false);
+ finishCorrection();
+ }
+ }
+
+ protected void disable_interpolation()
+ {
+ cbInterpolation.setSelected(false);
+ cbInterpolation.setEnabled(false);
+ }
+
+ protected void enable_interpolation()
+ {
+ cbInterpolation.setEnabled(true);
+ }
+
+ protected void allow_alpha(boolean m, boolean i, boolean a)
+ {
+ if(a) {
+ cbAlpha.setEnabled(true);
+ if(cbAlpha.isSelected()) {
+ if(cbMask.isSelected()) {
+ cbMask.setSelected(false);
+ }
+ if(cbMix.isSelected()) {
+ cbMix.setSelected(false);
+ }
+ }
+ } else {
+ if(cbAlpha.isSelected()) {
+ cbAlpha.setSelected(false);
+ if(i) {
+ cbMask.setSelected(true);
+ }
+ }
+ cbAlpha.setEnabled(false);
+ }
+ if(i) {
+ cbMask.setEnabled(true);
+ } else {
+ if(cbMask.isSelected()) {
+ cbMask.setSelected(false);
+ cbMix.setSelected(true);
+ }
+ cbMask.setEnabled(false);
+ }
+ if(m) {
+ cbMix.setEnabled(true);
+ } else {
+ if(cbMix.isSelected()) {
+ cbMix.setSelected(false);
+ }
+ cbMix.setEnabled(false);
+ }
+ }
+
+ public void correct_dialog()
+ {
+ if(startCorrection()) {
+ switch(cbPdfVersion.getSelectedIndex()) {
+ case Png2PdfController.PDF_VERSION_12: {
+ disable_interpolation();
+ allow_alpha(true, false, false);
+ } break;
+ case Png2PdfController.PDF_VERSION_13: {
+ enable_interpolation();
+ allow_alpha(true, true, false);
+ } break;
+ case Png2PdfController.PDF_VERSION_14: {
+ enable_interpolation();
+ allow_alpha(true, true, true);
+ } break;
+ }
+ finishCorrection();
+ }
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ switch(StringTool.getArrayIndex(buttonTexts, e.getActionCommand())) {
+ case 0: { // OK
+ setVisible(false);
+ dialog_to_controller();
+ controller_to_dialog();
+ correct_dialog();
+ if(a != null) {
+ ActionEvent myEvent =
+ new ActionEvent(this,ActionEvent.ACTION_PERFORMED, Png2PdfWindow.actionCmd[5]);
+ a.actionPerformed(myEvent);
+ }
+ } break;
+ case 1: { // Cancel
+ setVisible(false);
+ controller_to_dialog();
+ correct_dialog();
+ } break;
+ case 2: {
+ setDefaults();
+ } break;
+ }
+ }
+
+ public void itemStateChanged(ItemEvent e)
+ {
+ correct_dialog();
+ repaint();
+ }
+
+ public void windowClosing(WindowEvent e)
+ {
+ setVisible(false);
+ controller_to_dialog();
+ }
+ public void windowActivated(WindowEvent e) {}
+ public void windowClosed(WindowEvent e) {}
+ public void windowDeactivated(WindowEvent e) {}
+ public void windowDeiconified(WindowEvent e) {}
+ public void windowIconified(WindowEvent e) {}
+ public void windowOpened(WindowEvent e) {}
+}
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfFileFilter.java b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfFileFilter.java
new file mode 100644
index 0000000000..b408e95b79
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfFileFilter.java
@@ -0,0 +1,21 @@
+import java.io.File;
+import java.io.FileFilter;
+
+public class Png2PdfFileFilter extends Object
+ implements FileFilter
+{
+ public static final String[] suffixes = {
+ ".png", ".PNG"
+ };
+ public boolean accept(File f)
+ {
+ boolean back = false;
+ String fn = f.getAbsolutePath();
+ for(int i = 0; ((i < suffixes.length) && (!back)); i++) {
+ if(fn.endsWith(suffixes[i])) {
+ back = true;
+ }
+ }
+ return back;
+ }
+}
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfGUI.java b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfGUI.java
new file mode 100644
index 0000000000..f6d0f73692
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfGUI.java
@@ -0,0 +1,42 @@
+
+import dirk_krause.jtools.GuiController;
+import javax.swing.SwingUtilities;
+
+public class Png2PdfGUI {
+ static public final String appName = "Png2PdfGUI";
+
+ class GuiBuilder implements Runnable
+ {
+ protected GuiController g = null;
+ protected Png2PdfController p = null;
+
+ public GuiBuilder(GuiController gc, Png2PdfController pc)
+ {
+ g = gc; p = pc;
+ }
+ public void run()
+ {
+ g.initialize();
+ Png2PdfWindow w = new Png2PdfWindow(g, p);
+ w.setVisible(true);
+ w.retrievePng2pdfSettings();
+ }
+ }
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+ Png2PdfGUI ppg = new Png2PdfGUI();
+ ppg.run();
+ }
+
+ void run()
+ {
+ GuiController guic = new GuiController(appName);
+ Png2PdfController ppc = new Png2PdfController(appName);
+ SwingUtilities.invokeLater(new GuiBuilder(guic, ppc));
+ }
+
+}
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfWindow.java b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfWindow.java
new file mode 100644
index 0000000000..e39278c4ca
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Png2PdfWindow.java
@@ -0,0 +1,1155 @@
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.WindowEvent;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JToolBar;
+import javax.swing.SwingUtilities;
+
+import dirk_krause.jtools.ApplicationFrame;
+import dirk_krause.jtools.DirectoryFilter;
+import dirk_krause.jtools.GbcMaker;
+import dirk_krause.jtools.GuiController;
+import dirk_krause.jtools.GuiDialog;
+import dirk_krause.jtools.HelpWindow;
+import dirk_krause.jtools.LogContents;
+import dirk_krause.jtools.LogContentsForCommand;
+import dirk_krause.jtools.LogWindow;
+import dirk_krause.jtools.OneDirectoryDropTransferHandler;
+import dirk_krause.jtools.SizeTracker;
+import dirk_krause.jtools.StringTool;
+import dirk_krause.jtools.StatusChanger;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+public class Png2PdfWindow extends ApplicationFrame
+ implements ActionListener
+{
+ /**
+ * Dialog to set up GUI.
+ */
+ protected GuiDialog guid = null;
+
+ /**
+ * Controller keeping options for png2pdf.
+ */
+ protected Png2PdfController tc = null;
+
+ /**
+ * Dialog to set up options to png2pdf.
+ */
+ protected Png2PdfDialog tod = null;
+
+ /**
+ * Window to show log text (command output).
+ */
+ protected LogWindow lw = null;
+
+ /**
+ * Window to show version information and help.
+ */
+ protected HelpWindow hw = null;
+
+ /**
+ * Flag to indicate whether or not a background
+ * thread is running
+ */
+ protected boolean isRunning = false;
+
+ /**
+ * Menu item to choose directory.
+ */
+ protected JMenuItem miDir = null;
+
+ /**
+ * Menu item to set options.
+ */
+ protected JMenuItem miOpt = null;
+
+ /**
+ * Menu item to run the png2pdf command.
+ */
+ protected JMenuItem miRun = null;
+
+ /**
+ * Menu item to exit the application.
+ */
+ protected JMenuItem miExit = null;
+
+ /**
+ * Menu item to set up GUI.
+ */
+ protected JMenuItem miGui = null;
+
+ /**
+ * Menu item to pack window.
+ */
+ protected JMenuItem miPck = null;
+
+ /**
+ * Menu item to show version and license information.
+ */
+ protected JMenuItem miLic = null;
+
+ /**
+ * Menu item to show help text.
+ */
+ protected JMenuItem miHlp = null;
+
+ /**
+ * Button to change directory.
+ */
+ protected JButton bDir = null;
+
+ /**
+ * Button to change options to png2pdf.
+ */
+ protected JButton bOpt = null;
+
+ /**
+ * Button to run the png2pdf command.
+ */
+ protected JButton bRun = null;
+
+ /**
+ * Button to exit the application.
+ */
+ protected JButton bExit = null;
+
+ /**
+ * Label to show the current working directory.
+ */
+ protected JLabel lDir = null;
+
+ /**
+ * Label to show the program status.
+ */
+ protected JLabel lSta = null;
+
+ /**
+ * Color to show the program status in red while
+ * the application is busy.
+ */
+ protected Color myR = null;
+
+ /**
+ * Color to show the program status in green
+ * while the application is idle.
+ */
+ protected Color myG = null;
+
+ /**
+ * Size tracker for directory label.
+ */
+ protected SizeTracker stDir = null;
+
+ /**
+ * Size tracker for status messages.
+ */
+ protected SizeTracker stSta = null;
+
+ /**
+ * Allow the controller to print file names.
+ */
+ protected ControllerStatusChanger csc = null;
+
+ /**
+ * License terms.
+ */
+ public static final String licenseTerms =
+ "<html>\n"
+ + "<head>\n"
+ + "</head>\n"
+ + "<body>\n"
+ + "<p>This is Png2PdfGUI, version 1.1.0</p>"
+ + "<p>\n"
+ + "Copyright (c) 2006, Dirk Krause<br>\n"
+ + "All rights reserved.\n"
+ + "</p>\n"
+ + "<p>\n"
+ + "Redistribution and use in source and binary forms,\n"
+ + "with or without modification, are permitted provided\n"
+ + "that the following conditions are met:\n"
+ + "<ul>\n"
+ + "<li>Redistributions of source code must retain the above\n"
+ + "copyright notice, this list of conditions and the\n"
+ + "following disclaimer.</li>\n"
+ + "<li>Redistributions in binary form must reproduce the above \n"
+ + "opyright notice, this list of conditions and the following\n"
+ + "disclaimer in the documentation and/or other materials\n"
+ + "provided with the distribution.</li>\n"
+ + "<li>Neither the name of the Dirk Krause nor the names of\n"
+ + "its contributors may be used to endorse or promote\n"
+ + "products derived from this software without specific\n"
+ + "prior written permission.</li>\n"
+ + "</ul>\n"
+ + "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n"
+ + "CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n"
+ + "INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n"
+ + "MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n"
+ + "DISCLAIMED.<br>\n"
+ + "IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n"
+ + "LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n"
+ + "EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n"
+ + "LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n"
+ + "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n"
+ + "HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n"
+ + "CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n"
+ + "OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n"
+ + "SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n"
+ + "DAMAGE.\n"
+ + "</p>\n"
+ + "</body>\n"
+ + "</html>\n";
+
+ /**
+ * Keywords to set up GUI elements
+ */
+ public static final String[] theTexts = {
+ "Png2pdf-GUI", // 0
+ "Png2pdf", // 1
+ "Setup", // 2
+ "<html><body><b>Png2pdfGUI - a GUI to the png2pdf program</b></body></html>", // 3
+ "Directory:", // 4
+ "Status:", // 5
+ "Ready", // 6
+ "Running", // 7
+ "Initializing", // 8
+ "Saving Options", // 9
+ "Exiting", // 10
+ "Retrieving defaults", // 11
+ "Saving defaults", // 12
+ "Help", // 13
+ };
+
+ /**
+ * Keyword to set up buttons and menu items
+ */
+ public static final String[] actionCmd = {
+ "GUI", // 0
+ "Directory", // 1
+ "Options", // 2
+ "Run", // 3
+ "Exit", // 4
+ "Save Options", // 5
+ "About", // 6
+ "Help", // 7
+ "Pack window", // 8
+ "Retrieve Options", // 9
+ };
+
+ /**
+ * File names for icons in the button bar.
+ */
+ public static final String[] iconFileNames = {
+ "ChooseDirectory.png",
+ "Options.png",
+ "Run.png",
+ "Exit.png"
+ };
+
+ /**
+ * Texts for tooltips.
+ */
+ public static final String[] toolTipTexts = {
+ "<html><body>Choose <b>Directory</b></body></html>",
+ "<html><body>Set <b>Options</b></body></html>",
+ "<html><body><b>Run</b> png2pdf</body></html>",
+ "<html><body><b>Exit</b> the GUI</body></html>",
+ "<html><body><b>Setup</b> the <b>GUI</b></body></html>",
+ "<html><body><b>Pack window</b> to optimized size</body></html>"
+ };
+
+ /**
+ * File name for online help.
+ */
+ public static final String helpFileName = "ppgui.html";
+
+ /**
+ * Change status label.
+ *
+ */
+ class PpStatusChanger implements Runnable
+ {
+ private int newText = 0;
+ private Color newColor = Color.BLACK;
+ public PpStatusChanger(int t, Color c)
+ {
+ newText = t; newColor = c;
+ }
+ public void run()
+ {
+ setStatus(newText, newColor, true);
+ }
+ }
+
+ /**
+ * Change directory label.
+ *
+ */
+ class DirectoryChanger implements Runnable
+ {
+ String newDirectory;
+ public DirectoryChanger(String s)
+ {
+ newDirectory = s;
+ }
+ public void run()
+ {
+ lDir.setText(newDirectory);
+ if(stDir.mustPackAgain(lDir)) {
+ pack();
+ }
+ lDir.repaint();
+ }
+ }
+
+ /**
+ * Transfer handler for drop operations.
+ *
+ */
+ class DropHandler extends OneDirectoryDropTransferHandler
+ {
+ protected boolean processFilename(String s)
+ {
+ boolean back = false;
+ File f = new File(s);
+ if(f.isDirectory()) {
+ getTc().setCwd(s);
+ getTc().writeCwd();
+ back = true;
+ SwingUtilities.invokeLater(new DirectoryChanger(s));
+ }
+ return back;
+ }
+ }
+
+ /**
+ * Show the log window.
+ *
+ */
+ class LogWindowShower implements Runnable
+ {
+ private LogContents lc = null;
+ public void run()
+ {
+ getLogWindow().setVisible(false);
+ // getLogWindow().chooseNonmodalPosition(this);
+ positionLogWindow();
+ getLogWindow().showTextIfNecessary(lc);
+ }
+ public LogWindowShower(LogContents l)
+ {
+ lc = l;
+ }
+ }
+
+ /**
+ * Retrieve options.
+ *
+ */
+ class OptionRetriever implements Runnable
+ {
+ public void run()
+ {
+ setStatus(11, myR, false);
+ LogContentsForCommand lcfc = getTc().restoreOptions();
+ setRunning(false);
+ setStatus(6, myG, false);
+ if(!(lcfc.getSuccess())) {
+ SwingUtilities.invokeLater(new LogWindowShower(lcfc));
+ }
+ }
+ public OptionRetriever()
+ {
+ }
+ }
+
+ /**
+ * Save options.
+ *
+ */
+ class OptionSaver implements Runnable
+ {
+ public void run()
+ {
+ setStatus(12, myR, false);
+ LogContentsForCommand lcfc = getTc().saveOptions();
+ setRunning(false);
+ setStatus(6, myG, false);
+ if(!(lcfc.getSuccess())) {
+ SwingUtilities.invokeLater(new LogWindowShower(lcfc));
+ }
+ }
+ public OptionSaver()
+ {
+
+ }
+ }
+
+ /**
+ * Run png2pdf.
+ *
+ */
+ class ProgramRunner implements Runnable
+ {
+ public void run()
+ {
+ setStatus(7, myR, false);
+ LogContentsForCommand lcfc = getTc().runTheProgram();
+ setRunning(false);
+ setStatus(6, myG, false);
+ if(!(lcfc.getSuccess())) {
+ SwingUtilities.invokeLater(new LogWindowShower(lcfc));
+ }
+ }
+ public ProgramRunner()
+ {
+
+ }
+ }
+
+ class ControllerStatusChanger implements StatusChanger
+ {
+ class MyRunner implements Runnable
+ {
+ String myText = null;
+ public void run()
+ {
+ lSta.setText(myText);
+ if(stSta.mustPackAgain(lSta)) {
+ pack();
+ }
+ lSta.repaint();
+ }
+ public MyRunner(String s)
+ {
+ myText = s;
+ }
+ }
+ public void setStatus(String s)
+ {
+ SwingUtilities.invokeLater(new MyRunner(s));
+ }
+ }
+
+ /**
+ * DropHandler instance.
+ */
+ protected DropHandler dh = null;
+
+ /**
+ * Get the dialog to set png2pdf options. Create new dialog
+ * if necessary.
+ *
+ * @param p
+ * The parent frame.
+ *
+ * @param g
+ * A GuiController providing the border settings.
+ *
+ * @param tc
+ * The Png2PdfController to set up.
+ *
+ * @return
+ * The png2pdf options dialog.
+ */
+ protected synchronized Png2PdfDialog internalGetTod()
+ {
+ return tod;
+ }
+
+ protected synchronized void internalSetTod(Png2PdfDialog d)
+ {
+ tod = d;
+ }
+
+ /**
+ * Get the dialog to set png2pdf options. Create new dialog
+ * if necessary.
+ */
+ protected Png2PdfDialog getTod()
+ {
+ Png2PdfController tc = getTc();
+ Png2PdfDialog back = internalGetTod();
+ if(back == null) {
+ back = new Png2PdfDialog(this, getGuic(), tc, this);
+ internalSetTod(back);
+ // back.chooseNonmodalPosition(this);
+ }
+ return back;
+ }
+
+ /**
+ * Mark existing png2pdf options dialog as not longer being used.
+ *
+ */
+ protected synchronized void resetTod()
+ {
+ tod = null;
+ }
+
+ /**
+ * Check whether or not there already is a png2pdf options dialog.
+ *
+ * @return
+ * The test result.
+ */
+ protected synchronized boolean haveTod()
+ {
+ boolean back = false;
+ if(tod != null) {
+ back = true;
+ }
+ return back;
+ }
+
+ /**
+ * Get the png2pdf controller.
+ *
+ * @return
+ * The controller.
+ */
+ protected synchronized Png2PdfController getTc()
+ {
+ if(tc == null) {
+ tc = new Png2PdfController();
+ }
+ return tc;
+ }
+
+ /**
+ * Get the log window.
+ *
+ * @return
+ * The log window.
+ */
+ protected synchronized LogWindow internalGetLogWindow() { return lw; }
+
+ /**
+ * Set the log window.
+ *
+ * @param l
+ * The log window.
+ */
+ protected synchronized void internalSetLogWindow(LogWindow l) { lw = l; }
+
+ /**
+ * Get the log window.
+ *
+ * @return
+ * The log window.
+ */
+ protected LogWindow getLogWindow()
+ {
+ LogWindow back = internalGetLogWindow();
+ if(back == null) {
+ back = new LogWindow(this, getGuic());
+ internalSetLogWindow(back);
+ // back.chooseNonmodalPosition(this);
+ }
+ return back;
+ }
+
+ /**
+ * Mark the log window as not longer being used.
+ *
+ */
+ protected synchronized void resetLogWindow()
+ {
+ lw = null;
+ }
+
+ /**
+ * Check whether or not we already have a log window.
+ *
+ * @return
+ * The test result.
+ */
+ protected synchronized boolean haveLogWindow()
+ {
+ boolean back = false;
+ if(lw != null) back = true;
+ return back;
+ }
+
+ /**
+ * Get the help window.
+ *
+ * @return
+ * The help window.
+ */
+ protected synchronized HelpWindow internalGetHelpWindow() { return hw; }
+
+ /**
+ * Set the help window.
+ *
+ * @param h
+ * The help window.
+ */
+ protected synchronized void internalSetHelpWindow(HelpWindow h) { hw = h; }
+
+ /**
+ * Get the help window.
+ *
+ * @return
+ * The help window.
+ */
+ protected HelpWindow getHelpWindow()
+ {
+ HelpWindow back = internalGetHelpWindow();
+ if(back == null) {
+ back = new HelpWindow(this, getGuic());
+ // back.chooseNonmodalPosition(this);
+ internalSetHelpWindow(back);
+ }
+ return back;
+ }
+
+ /**
+ * Mark the help window as not longer being used.
+ *
+ */
+ protected synchronized void resetHelpWindow()
+ {
+ hw = null;
+ }
+
+ /**
+ * Check whether or not there already is a help window.
+ *
+ * @return
+ * The test result.
+ */
+ protected synchronized boolean haveHelpWindow()
+ {
+ boolean back = false;
+ if(hw != null) back = true;
+ return back;
+ }
+
+ /**
+ * Set a new status.
+ *
+ * @param t
+ * The index of the text in the theTexts array.
+ *
+ * @param c
+ * The color to use.
+ *
+ * @param fromAwtThread
+ * Flag indicating whether or not we are in the
+ * AWT/event thread.
+ */
+ protected void setStatus(int t, Color c, boolean fromAwtThread)
+ {
+ if(fromAwtThread) {
+ lSta.setText(theTexts[t]);
+ lSta.setForeground(c);
+ lSta.repaint();
+ } else {
+ SwingUtilities.invokeLater(new PpStatusChanger(t, c));
+ }
+ }
+
+ /**
+ * Set up the menu bar.
+ */
+ protected void setupMenuBar()
+ {
+ JMenuBar mb = new JMenuBar();
+ JMenu m1 = new JMenu(theTexts[1]);
+ mb.add(m1);
+ miDir = new JMenuItem(actionCmd[1]);
+ miDir.addActionListener(this);
+ miDir.setToolTipText(toolTipTexts[0]);
+ m1.add(miDir);
+ miOpt = new JMenuItem(actionCmd[2]);
+ miOpt.addActionListener(this);
+ miOpt.setToolTipText(toolTipTexts[1]);
+ m1.add(miOpt);
+ miRun = new JMenuItem(actionCmd[3]);
+ miRun.addActionListener(this);
+ miRun.setToolTipText(toolTipTexts[2]);
+ m1.add(miRun);
+ miExit = new JMenuItem(actionCmd[4]);
+ miExit.addActionListener(this);
+ miExit.setToolTipText(toolTipTexts[3]);
+ m1.add(miExit);
+
+ JMenu m2 = new JMenu(theTexts[2]);
+ miGui = new JMenuItem(actionCmd[0]);
+ miGui.addActionListener(this);
+ miGui.setToolTipText(toolTipTexts[4]);
+ m2.add(miGui);
+ miPck = new JMenuItem(actionCmd[8]);
+ miPck.addActionListener(this);
+ miPck.setToolTipText(toolTipTexts[5]);
+ m2.add(miPck);
+ mb.add(m2);
+ JMenu m3 = new JMenu(theTexts[13]);
+ miHlp = new JMenuItem(actionCmd[7]);
+ miHlp.addActionListener(this);
+ m3.add(miHlp);
+ miLic = new JMenuItem(actionCmd[6]);
+ miLic.addActionListener(this);
+ m3.add(miLic);
+ mb.add(Box.createHorizontalGlue());
+ mb.add(m3);
+ setJMenuBar(mb);
+ }
+
+ /**
+ * Set up the button bar.
+ *
+ * @return
+ * The new button bar.
+ */
+ protected JToolBar setupButtonBar()
+ {
+ JToolBar back = new JToolBar();
+ bDir = new JButton(findImageForName(iconFileNames[0]));
+ bDir.setActionCommand(actionCmd[1]);
+ bDir.addActionListener(this);
+ bDir.setToolTipText(toolTipTexts[0]);
+ bOpt = new JButton(findImageForName(iconFileNames[1]));
+ bOpt.setActionCommand(actionCmd[2]);
+ bOpt.addActionListener(this);
+ bOpt.setToolTipText(toolTipTexts[1]);
+ bRun = new JButton(findImageForName(iconFileNames[2]));
+ bRun.setActionCommand(actionCmd[3]);
+ bRun.addActionListener(this);
+ bRun.setToolTipText(toolTipTexts[2]);
+ bExit = new JButton(findImageForName(iconFileNames[3]));
+ bExit.setActionCommand(actionCmd[4]);
+ bExit.addActionListener(this);
+ bExit.setToolTipText(toolTipTexts[3]);
+ back.add(bDir);
+ back.add(bOpt);
+ back.add(bRun);
+ back.add(bExit);
+ return back;
+ }
+
+ /**
+ * Create the inner panel (real window panel).
+ *
+ * @return
+ * The new panel.
+ */
+ protected JPanel createInnerPanel()
+ {
+ JPanel back = new JPanel();
+ int b = getGuic().getBorder();
+ GridBagLayout gbl = new GridBagLayout();
+ back.setLayout(gbl);
+ GbcMaker gbcm = new GbcMaker(5, 4, b);
+ GridBagConstraints gbc = null;
+ JLabel l = null;
+ JPanel d = null;
+ d = gbcm.createDummyPanel();
+ gbc = gbcm.createDummyGbc(0, 0, 1, 1);
+ gbl.setConstraints(d, gbc);
+ back.add(d);
+ l = new JLabel(theTexts[3]);
+ gbc = gbcm.create(1, 1, 1, 2);
+ gbl.setConstraints(l, gbc);
+ back.add(l);
+ l = new JLabel(theTexts[4]);
+ l.setHorizontalAlignment(JLabel.RIGHT);
+ gbc = gbcm.create(2, 1, 1, 1);
+ gbc.anchor = GridBagConstraints.EAST;
+ gbl.setConstraints(l, gbc);
+ back.add(l);
+ lDir = new JLabel(tc.getCwd());
+ gbc = gbcm.create(2, 2, 1, 1);
+ gbc.anchor = GridBagConstraints.WEST;
+ lDir.setHorizontalAlignment(JLabel.LEFT);
+ gbl.setConstraints(lDir, gbc);
+ back.add(lDir);
+ l = new JLabel(theTexts[5]);
+ l.setHorizontalAlignment(JLabel.RIGHT);
+ gbc = gbcm.create(3, 1, 1, 1);
+ gbc.anchor = GridBagConstraints.EAST;
+ gbl.setConstraints(l, gbc);
+ back.add(l);
+ lSta = new JLabel(theTexts[6]);
+ gbc = gbcm.create(3, 2, 1, 1);
+ gbc.anchor = GridBagConstraints.WEST;
+ lSta.setHorizontalAlignment(JLabel.LEFT);
+ gbl.setConstraints(lSta, gbc);
+ lSta.setForeground(myG);
+ back.add(lSta);
+ d = gbcm.createDummyPanel();
+ gbc = gbcm.createDummyGbc(4, 3, 1, 1);
+ gbl.setConstraints(d, gbc);
+ back.add(d);
+ return back;
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param c
+ * A GuiController providing the border setting.
+ *
+ * @param t
+ * A controller for png2pdf options.
+ */
+ public Png2PdfWindow(GuiController c, Png2PdfController t)
+ {
+ super(Png2PdfGUI.appName, c);
+ setTitle(theTexts[0]);
+ tc = t;
+ myR = new Color(128, 0, 0);
+ myG = new Color(0, 128, 0);
+ Container cp = getContentPane();
+ cp.setLayout(new BorderLayout());
+ setupMenuBar();
+ JPanel ip;
+ cp.add(setupButtonBar(), BorderLayout.PAGE_START);
+ ip = createInnerPanel();
+ cp.add(ip, BorderLayout.CENTER);
+ pack();
+ restorePosition();
+ // setResizable(false);
+ dh = new DropHandler();
+ ip.setTransferHandler(dh);
+ stDir = new SizeTracker();
+ stDir.mustPackAgain(lDir);
+ stSta = new SizeTracker();
+ stSta.mustPackAgain(lSta);
+ csc = new ControllerStatusChanger();
+ t.setStatusChanger(csc);
+ }
+
+ /**
+ * Cleanup procedure.
+ */
+ public void cleanup(boolean isLast)
+ {
+ if(isLast) {
+ // guic.writeProperties(false);
+ if(haveGuid()) {
+ GuiDialog g = getGuid();
+ g.cleanup(); g.dispose(); g = null;
+ }
+ if(haveHelpWindow()) {
+ HelpWindow h = getHelpWindow();
+ h.cleanup(); h.dispose(); h = null;
+ }
+ if(haveLogWindow()) {
+ LogWindow l = getLogWindow();
+ l.cleanup(); l.dispose(); l = null;
+ }
+ if(haveTod()) {
+ Png2PdfDialog t = getTod();
+ t.cleanup(); t.dispose(); t = null;
+ }
+ }
+ if(haveGuid()) {
+ resetGuid();
+ }
+ if(haveHelpWindow()) {
+ resetHelpWindow();
+ }
+ if(haveLogWindow()) {
+ resetLogWindow();
+ }
+ if(haveTod()) {
+ resetTod();
+ }
+ miDir.removeActionListener(this); miDir = null;
+ miOpt.removeActionListener(this); miOpt = null;
+ miRun.removeActionListener(this); miRun = null;
+ miExit.removeActionListener(this); miExit = null;
+ miGui.removeActionListener(this); miGui = null;
+ miPck.removeActionListener(this); miPck = null;
+ bDir.removeActionListener(this); bDir = null;
+ bOpt.removeActionListener(this); bOpt = null;
+ bRun.removeActionListener(this); bRun = null;
+ bExit.removeActionListener(this); bExit = null;
+ tc.setStatusChanger(null); csc = null;
+ tc = null;
+ }
+
+ /**
+ * Check whether or not there already is a GUI options dialog.
+ *
+ * @return
+ * The test result.
+ */
+ protected synchronized boolean haveGuid()
+ {
+ boolean back = false;
+ if(guid != null) { back = true; }
+ return back;
+ }
+
+ /**
+ * Synchronized request for GUI dialog.
+ *
+ * @return
+ * Reference to current GUI dialog (may be null).
+ */
+ protected synchronized GuiDialog internalGetGuid() { return guid; }
+
+ /**
+ * Synchronized set GUI dialog.
+ *
+ * @param d
+ * The new GUI dialog.
+ */
+ protected synchronized void internalSetGuid(GuiDialog d) { guid = d; }
+
+ /**
+ * Get the GUI options dialog.
+ *
+ * @return
+ * The GUI options dialog.
+ */
+ protected GuiDialog getGuid()
+ {
+ GuiDialog back = internalGetGuid();
+ if(back == null) {
+ back = new GuiDialog(this, getGuic());
+ internalSetGuid(back);
+ // guid.chooseNonmodalPosition(this);
+ }
+ return back;
+ }
+
+ /**
+ * Mark the current GUI options dialog as not longer being used.
+ *
+ */
+ protected synchronized void resetGuid()
+ {
+ guid = null;
+ }
+
+ /**
+ * Show the GUI options dialog.
+ *
+ */
+ protected void showGuiSetupDialog()
+ {
+ getGuid().controller_to_dialog();
+ getGuid().setVisible(true);
+ }
+
+ /**
+ * Check whether or not a background task is running.
+ *
+ * @return
+ * The test result.
+ */
+ protected synchronized boolean getRunning()
+ {
+ return isRunning;
+ }
+
+ /**
+ * Set the flag to indicate whether or not a background
+ * task is running.
+ *
+ * @param b
+ * The new flag value.
+ */
+ protected synchronized void setRunning(boolean b)
+ {
+ isRunning = b;
+ }
+
+ /**
+ * Search for an icon image.
+ *
+ * @param n
+ * The file name.
+ *
+ * @return
+ * The icon image or null.
+ */
+ protected ImageIcon findImageForName(String n)
+ {
+ ImageIcon back = null;
+ try {
+ back = new ImageIcon(getClass().getResource(n));
+ }
+ catch(NullPointerException e) {
+ back = new ImageIcon(n);
+ }
+ return back;
+ }
+
+ /**
+ * Choose a new directory for png2pdf.
+ *
+ */
+ protected void chooseDirectory()
+ {
+ String workingDirectory;
+ JFileChooser c = new JFileChooser(getTc().getCwd());
+ c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ c.setFileFilter(new DirectoryFilter());
+ int result = c.showOpenDialog(this);
+ if(result == JFileChooser.APPROVE_OPTION) {
+ workingDirectory = c.getSelectedFile().getAbsolutePath();
+ lDir.setText(workingDirectory);
+ if(stDir.mustPackAgain(lDir)) {
+ pack();
+ }
+ repaint();
+ getTc().setCwd(workingDirectory);
+ getTc().writeCwd();
+ }
+ }
+
+ /**
+ * Retrieve default settings.
+ *
+ */
+ public void retrieveDefaults()
+ {
+ Thread thr = new Thread(new OptionRetriever());
+ setRunning(true);
+ thr.start();
+ }
+
+ /**
+ * Save default settings.
+ *
+ */
+ public void saveDefaults()
+ {
+ Thread thr = new Thread(new OptionSaver());
+ setRunning(true);
+ thr.start();
+ }
+
+ /**
+ * Run png2pdf.
+ *
+ */
+ public void runProgram()
+ {
+ Thread thr = new Thread(new ProgramRunner());
+ setRunning(true);
+ thr.start();
+ }
+
+ public void positionLogWindow()
+ {
+ getLogWindow().chooseNonmodalPosition(this);
+ }
+
+
+ /**
+ * Reaction on mouseclicks
+ *
+ */
+ public void actionPerformed(ActionEvent e)
+ {
+ switch(StringTool.getArrayIndex(actionCmd, e.getActionCommand())) {
+ case 0: {
+ showGuiSetupDialog();
+ } break;
+ case 1: { // directory
+ if(!getRunning()) {
+ chooseDirectory();
+ }
+ } break;
+ case 2: { // options
+ if(!getRunning()) {
+ getTod().chooseNonmodalPosition(this);
+ getTod().controller_to_dialog();
+ getTod().correct_dialog();
+ getTod().setVisible(true);
+ }
+ } break;
+ case 3: { // run
+ if(!getRunning()) {
+ setRunning(true);
+ runProgram();
+ }
+ } break;
+ case 4: { // exit
+ if(!getRunning()) {
+ WindowEvent we = new WindowEvent(
+ this,
+ WindowEvent.WINDOW_CLOSING
+ );
+ processWindowEvent(we);
+ }
+ } break;
+ case 5: { // save options
+ getTc().writeCwd();
+ if(!getRunning()) {
+ setRunning(true);
+ saveDefaults();
+ }
+ } break;
+ case 6: { // license terms
+ getHelpWindow().chooseNonmodalPosition(this);
+ getHelpWindow().setVisible(false);
+ getHelpWindow().setPurpose(2);
+ getHelpWindow().setContentType(1);
+ getHelpWindow().setText(licenseTerms);
+ getHelpWindow().setVisible(true);
+ } break;
+ case 7: { // help
+ URL helpUrl;
+ getHelpWindow().chooseNonmodalPosition(this);
+ getHelpWindow().setVisible(false);
+ getHelpWindow().setPurpose(1);
+ getHelpWindow().setContentType(0);
+ getHelpWindow().setText(LogWindow.theTexts[1]);
+
+ getHelpWindow().setContentType(1);
+ helpUrl = Png2PdfGUI.class.getResource(helpFileName);
+ if(helpUrl != null) {
+ try {
+ getHelpWindow().setPage(helpUrl);
+ }
+ catch(IOException ioe) {
+ getHelpWindow().setText(LogWindow.theTexts[1]);
+ }
+ } else {
+ }
+ getHelpWindow().setVisible(true);
+ } break;
+ case 8: {
+ pack(); repaint();
+ } break;
+ }
+ }
+
+ /**
+ * Let the controller retrieve the settings from
+ * png2pdf -C
+ *
+ */
+ public void retrievePng2pdfSettings()
+ {
+ retrieveDefaults();
+ }
+}
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Run.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Run.png
new file mode 100644
index 0000000000..791a8fc3a6
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/Run.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/compile-archive b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/compile-archive
new file mode 100755
index 0000000000..ab8c062aab
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/compile-archive
@@ -0,0 +1,17 @@
+#! /bin/bash
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+DKLIBSJ=@DKLIBSJ@
+PROJECT=..
+rm ../jar/*.class || echo No class files to delete
+
+for i in *.java
+do
+echo $i
+javac -classpath .:${DKLIBSJ} -d ../bin $i
+echo $i done
+done
+cp *.html *.css *.png ../bin
+
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/compile-archive.in b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/compile-archive.in
new file mode 100755
index 0000000000..f7882afa7d
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/compile-archive.in
@@ -0,0 +1,16 @@
+#! /bin/bash
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+DKLIBSJ=@DKLIBSJ@
+PROJECT=..
+rm ../jar/*.class || echo No class files to delete
+
+for i in *.java
+do
+echo $i
+javac -classpath .:${DKLIBSJ} -d ../bin $i
+echo $i done
+done
+cp *.html *.css *.png ../bin
+
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg01.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg01.png
new file mode 100644
index 0000000000..dfb23aa2d6
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg01.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg02.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg02.png
new file mode 100644
index 0000000000..bdd596152d
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg02.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg03.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg03.png
new file mode 100644
index 0000000000..39176dc9ce
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg03.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg04.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg04.png
new file mode 100644
index 0000000000..2b26a165f4
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg04.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg05.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg05.png
new file mode 100644
index 0000000000..c3bcb8109a
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg05.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg06.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg06.png
new file mode 100644
index 0000000000..f76607c19d
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg06.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg07.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg07.png
new file mode 100644
index 0000000000..192701e461
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg07.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg08.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg08.png
new file mode 100644
index 0000000000..1b58c65b05
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg08.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg09.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg09.png
new file mode 100644
index 0000000000..df430fd18d
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg09.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg10.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg10.png
new file mode 100644
index 0000000000..b5f00508e5
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg10.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg11.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg11.png
new file mode 100644
index 0000000000..3a797a2534
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg11.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg12.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg12.png
new file mode 100644
index 0000000000..8d4cdb44d8
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg12.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg13.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg13.png
new file mode 100644
index 0000000000..d31c0b10e6
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg13.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg14.png b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg14.png
new file mode 100644
index 0000000000..7ecd406ddf
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppg14.png
Binary files differ
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppgui.html b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppgui.html
new file mode 100644
index 0000000000..d4a25920df
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/ppgui.html
@@ -0,0 +1,212 @@
+<html>
+<head>
+<title>Png2PdfGUI - A graphical user interface to png2pdf</title>
+</head>
+<body>
+<h1>Png2PdfGUI - A graphical user interface to png2pdf</h1>
+<hr>
+<h2>Overview</h2>
+<p>
+The Java application Png2PdfGUI provides a graphical user
+interface to the png2pdf program.
+To convert PNG files to PDF you have to perform the following tasks:
+<ul>
+<li>Choose the directory containing the PNG files.</li>
+<li>Set conversion options.</li>
+<li>Run png2pdf.</li>
+<li>Exit the application.</li>
+</ul>
+These main tasks can be performed using buttons in the button bar
+or using menu entries.
+</p>
+<hr>
+<h2>Requirements</h2>
+<p>
+To use the Png2PdfGUI you must have the png2pdf program installed.
+Normally this conditions is fullfilled because Png2PdfGUI and png2pdf
+are in the same package, so they are installed at the same time.
+</p>
+<p>
+A Java run-time environment (Java 5) must be installed. Previous
+versions are not sufficient to run Png2PdfGUI.
+</p>
+<hr>
+<h2>Starting the program</h2>
+<h3>On Windows systems</h3>
+<p>In a prompt box run
+<pre>
+java.exe -cp c:\programs\krause\lib\png2pdf.jar;c:\programs\krause\lib\dklibsj.jar Png2PdfGUI
+</pre>
+You possibly need to replace c:\programs\krause by another directory, depending
+on your decisions during installation process.
+</p>
+<p>Once you have verified the program starts correctly you can create
+shortcuts either on the desktop or in the start menu. For shortcuts you
+should use javaw.exe instead of java.exe.
+</p>
+<h3>On Unix/Linux systems</h3>
+<p>Run
+<pre>
+java -c /usr/local/lib/png2pdf.jar:/usr/local/lib/dklibsj.jar Png2PdfGUI
+</pre>
+to start the program.<br>
+</p>
+<hr>
+<h2>Program appearance at start</h2>
+<p>
+When running the program for the first time the main window looks like
+this:<br>&nbsp;<br>
+<table width="100%">
+<tr><td align="CENTER"><img src="./ppg01.png" width="341" height="171"></td></tr>
+</table>
+</p>
+<hr>
+<h2>Choosing a directory</h2>
+<p>
+Use either the "Choose&nbsp;directory" button or the menu entry
+"Png2pdf&nbsp;/&nbsp;Directory" to choose the directory.<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg02.png" width="341" height="171"></td>
+<td align="CENTER"><img src="./ppg03.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+The directory chooser dialog appears.
+<br>&nbsp;<br>
+<table width="100%">
+<tr><td align="CENTER"><img src="./ppg04.png" width="817" height="407"></td></tr>
+</table>
+<br>&nbsp;<br>
+Navigate to the directory
+containing your PNG files and confirm the selection.<br>
+The new working directory is shown in the main window.<br>&nbsp;<br>
+<table width="100%">
+<tr><td align="CENTER"><img src="./ppg05.png" width="341" height="171"></td></tr>
+</table>
+</p>
+<p>You can also attempt to use drag'n'drop to drag a directory
+from Windows explorer or Nautilus into the Png2PdfGUI main window.
+For other Unix/Linux desktops it is not known whether drag'n'drop works,
+just try it.
+</p>
+<hr>
+<h2>Set png2pdf options</h2>
+<p>Use either the "Set&nbsp;options" button in the button bar or the
+"Png2pdf&nbsp;/&nbsp;Options" menu entry to set conversion options.
+<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg06.png" width="341" height="171"></td>
+<td align="CENTER"><img src="./ppg07.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg08.png" width="460" height="543"></td>
+</tr>
+</table><br>&nbsp;<br>
+In the "Png2pdf Options" dialog you have the following choices:
+<ul>
+<li>PDF format version<br>
+You can either produce PDF version 1.2, 1.3 or 1.4. Smaller version
+numbers will be compatible to older PDF viewers, larger version
+numbers require a recent viewer but provide more PDF features.</li>
+<li>Run in make mode<br>
+If make mode is enabled the program checks the modification timestamps
+of source and destination files. A destination file is up to date
+if the file exists and was last modified after the last modification
+of the source file. A conversion is only run for those sources for
+which there is no up-to-date destination file.
+</li>
+<li>Show file names while processing<br>
+The status message can either simply show "running" while a conversion
+is running or show the file name for each file currently processed.
+When processing directories containing many files showing each file name
+will show you that the program is still alive.<br>
+When showing file names a new png2pdf process is started for each
+conversion. If you choose to see the simple "running" status message one
+process is running on the directory doing all the conversions, this
+is faster than starting a new process for each file to convert.
+</li>
+<li>Image interpolation<br>
+This check box sets the image interpolation flag in output files.
+Viewer programs are recommended to do image interpolation, this is
+usefull if small images are scaled up.
+</li>
+<li>Alpha channel handling<br>
+Here you can decide how to handle alpha channel data if such data
+is present in a PNG file.
+<ul>
+<li>Input alpha channel expresses transparency<br>
+Normally you should leave this checkbox turned off because the
+alpha channel expresses opacity.</li>
+<li>Mix against a background color<br>
+You can choose to mix foreground color (the PNG pixel RGB value) against
+the background color depending on the opacity/transparency value of the
+pixel. The background color is contained in the background chunk in
+the PNG file.<br>
+Some PNG files containing an alpha channel do not contain a background chunk,
+so it is up to the user to choose a background color. The
+"Choose&nbsp;background&nbsp;color" entry allows to choose a default
+background color to use if no background chunk is available in the PNG file.
+Just click on the color-view rectangle to select a color.<br>
+If you always want to use the specified background color (you want to
+ignore background chunks from the PNG file) enable the checkbox
+"Prefer&nbsp;specified&nbsp;default&nbsp;color...".
+</li>
+<li>Create image mask<br>
+In addition to mixing -- or instead of mixing -- you can convert
+the alpha channel into an image mask. The normal mask level is
+to paint all opacity&gt;0 pixels and to mask out all opacity=0 pixels.<br>
+Enable "Use&nbsp;inverted&nbsp;mask&nbsp;levels" to paint
+only opacity=full pixels and to mask out all opacity&lt;full pixels.
+</li>
+<li>Write alpha channel to output<br>
+You can also write alpha channel data to PDF output (for PDF version &gt;= 1.4).
+</li>
+</ul>
+Note: Some of these options are not available for all PDF versions.<br>
+Some of the options are exclusive, i.e. you can not use mixing and
+alpha channel writing together (the opacity factors from the alpha
+channel would be applied twice: once in mixing and once by the PDF
+viewer when showing the file).
+</li>
+</ul>
+</p>
+<hr>
+<h2>Running a conversion</h2>
+<p>Use the "Run&nbsp;png2pdf" button from the button bar or the
+"Png2pdf&nbsp;/&nbsp;Run" menu entry to start a conversion.
+<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg09.png" width="341" height="171"></td>
+<td align="CENTER"><img src="./ppg10.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+While the conversion is running the status text color changes to red
+and the text changes to "Running". If you decided to see file names
+the text changes to "Processing&nbsp;...".
+<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg11.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+After all conversions are done the color changes back to green and the
+text changes back to "Ready".
+</p>
+<hr>
+<h2>Exiting the program</h2>
+<p>Use either the "Exit&nbsp;the&nbsp;GUI" button in the button bar or the
+"Png2pdf&nbsp;/&nbsp;Exit" menu entry to exit the program.
+<br>&nbsp;<br>
+<table width="100%">
+<tr>
+<td align="CENTER"><img src="./ppg12.png" width="341" height="171"></td>
+<td align="CENTER"><img src="./ppg13.png" width="341" height="171"></td>
+</tr>
+</table><br>&nbsp;<br>
+</p>
+</body>
+</html>
diff --git a/obsolete/support/png2pdf/Java/Png2PdfGUI/src/style.css b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/style.css
new file mode 100644
index 0000000000..05278836a6
--- /dev/null
+++ b/obsolete/support/png2pdf/Java/Png2PdfGUI/src/style.css
@@ -0,0 +1,241 @@
+
+@media screen
+{
+ body {
+ font-family: serif;
+ background-color: white;
+ }
+ .headertable {
+ width:100%;
+ }
+ .headertdleft {
+ text-align:left;
+ }
+ .headertdright {
+ text-align:right;
+ }
+ .navimenutable {
+ text-align: center;
+ background-color: yellow;
+ }
+ .navimenutd {
+ }
+ a.navimenulink {
+ color: red;
+ font-family: sans-serif;
+ text-decoration: none;
+ }
+ a.navimenulink:hover {
+ color: red;
+ font-family: sans-serif;
+ text-decoration: underline;
+ }
+ .navimenucurrent {
+ color: red;
+ font-family: sans-serif;
+ font-weight: bold;
+ }
+ .footertable {
+ background-color: yellow;
+ }
+ .footertr {
+ }
+ .footertdleft {
+ text-align: left;
+ }
+ .footertdcenter {
+ text-align: center;
+ }
+ .footertdright {
+ text-align: right;
+ }
+ .h2tdleft {
+ text-align: left;
+ }
+ .h2tdcenter {
+ text-align: right;
+ }
+ .h2tdright {
+ text-align: right;
+ }
+ a.smallotherlink {
+ color: blue;
+ font-family: sans-serif;
+ font-size: small;
+ text-decoration: none;
+ }
+ a.smallotherlink:hover {
+ color: blue;
+ font-family: sans-serif;
+ font-size: small;
+ text-decoration: underline;
+ }
+ .toctable {
+ }
+ .tocrow {
+ }
+ .toctd {
+ }
+ a.toclink {
+ color: green;
+ font-family: sans-serif;
+ font-size: small;
+ text-decoration: none;
+ }
+ a.linkoutside {
+ color: blue;
+ text-decoration: none;
+ }
+ a.linkinternal {
+ color: green;
+ text-decoration: none;
+ }
+ a.toclink:hover {
+ color: green;
+ font-family: sans-serif;
+ font-size: small;
+ text-decoration: underline;
+ }
+ a.linkoutside:hover {
+ color: blue;
+ text-decoration: underline;
+ }
+ a.linkinternal:hover {
+ color: green;
+ text-decoration: underline;
+ }
+ .subtitle {
+ font-family: sans-serif;
+ font-size: small;
+ }
+ .cmdarg {
+ font-style: italic;
+ }
+ it {
+ font-style: italic;
+ }
+ b {
+ font-style: bold;
+ }
+ h6 {
+ font-size: 100%;
+ font-weight: bold;
+ }
+ h5 {
+ font-size: 120%;
+ font-weight: bold;
+ }
+ h4 {
+ font-size: 144%;
+ font-weight: bold;
+ }
+ h3 {
+ font-size: 172%;
+ font-weight: bold;
+ }
+ h2 {
+ font-size: 206%
+ font-weight: bold;
+ }
+ h1 {
+ font-size: 250%;
+ font-weight: bold;
+ }
+}
+
+@media print
+{
+ @page {
+ margin-top: 1.5cm;
+ margin-bottom: 1.5cm;
+ }
+ @page :left {
+ margin-left: 1.5cm;
+ margin-right: 2.5cm;
+ }
+ @page :right {
+ margin-left: 2.5cm;
+ margin-right: 1.5cm;
+ }
+
+ /* Choose a font suitable for larger texts. */
+ body {
+ font-family: Garamond, "Times New Roman", Times, serif;
+ }
+
+ .headertable {
+ width:100%;
+ }
+ .headertdleft {
+ text-align:left;
+ }
+ .headertdright {
+ text-align:right;
+ }
+ .navimenutable {
+ text-align: center;
+ border-style: double;
+ }
+ .navimenutd {
+ }
+ .navimenulink {
+ color: red;
+ }
+ .navimenucurrent {
+ font-weight: bold;
+ }
+ .footertable {
+ border-style: double;
+ }
+ .footertr {
+ }
+ .footertdleft {
+ text-align: left;
+ }
+ .footertdcenter {
+ text-align: center;
+ }
+ .footertdright {
+ text-align: right;
+ }
+ .h2tdleft {
+ text-align: left;
+ }
+ .h2tdright {
+ text-align: right;
+ }
+ .smallotherlink {
+ color: blue;
+ font-size: small;
+ }
+ .toctable {
+ }
+ .tocrow {
+ }
+ .toctd {
+ }
+ .toclink {
+ color: green;
+ font-size: small;
+ text-decoration: none;
+ }
+ .linkoutside {
+ color: blue;
+ }
+ .linkinternal {
+ color: green;
+ }
+ .subtitle {
+ font-size: small;
+ }
+ .cmdarg {
+ font-style: italic;
+ }
+ it {
+ font-style: italic;
+ }
+ b {
+ font-style: bold;
+ }
+}
+
diff --git a/obsolete/support/png2pdf/Makefile.in b/obsolete/support/png2pdf/Makefile.in
new file mode 100644
index 0000000000..7dc96c2567
--- /dev/null
+++ b/obsolete/support/png2pdf/Makefile.in
@@ -0,0 +1,72 @@
+
+SHELL= /bin/sh
+pp=
+prefix= @prefix@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+mandir = @mandir@
+incdir = @includedir@
+libdir = @libdir@
+srcdir = @srcdir@
+sharedlibdir = $(libdir)/shared
+LD=$(CC)
+
+DKLIBSINC= @DKLIBSINC@
+DKLIBSLIB= @DKLIBSLIB@
+
+INCLUDES= -I. $(DKLIBSINC) -I$(srcdir) -I$(incdir)
+DEFS= @DEFS@
+
+COMPILEC= $(CC) $(DEFS) $(INCLUDES) $(CFLAGS) $(CPPFLAGS) $(VERSNO)
+LINK= $(CC) $(DEFS) $(INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@
+
+all: png2pdf
+ -mkdir -p share
+ stc png2pdf.str share/png2pdf
+ -cp share/png2pdf/en/png2pdf.* share/png2pdf
+ -mkdir -p share/doc/png2pdf
+ cp DOCU/png2pdf.pdf share/doc/png2pdf
+ find lib -type d -exec chmod 755 {} \;
+ find lib -type f -exec chmod 644 {} \;
+ find share -type d -exec chmod 755 {} \;
+ find share -type f -exec chmod 644 {} \;
+ touch all
+
+install: all
+ -mkdir -p $(pp)$(bindir)
+ -mkdir -p $(pp)$(libdir)
+ -mkdir -p $(pp)$(incdir)
+ -mkdir -p $(pp)$(datadir)
+ cp png2pdf $(pp)$(bindir)/png2pdf
+ chmod 755 $(pp)$(bindir)/png2pdf
+ cp png2pdf.jar $(pp)$(bindir)/png2pdf.jar
+ chmod 755 $(pp)$(bindir)/png2pdf.jar
+ cp png2pdf-gui $(pp)$(bindir)/png2pdf-gui
+ chmod 755 $(pp)$(bindir)/png2pdf-gui
+ -(cd share; tar cf - *) | (cd $(pp)$(datadir) ; tar xvf -)
+ @echo Documentation resides in $(pp)$(datadir)/doc/png2pdf.
+
+OBJECTS= png2pdfm.o png2pdf.o
+
+LIBS= @LIBPNG@ @BZLIB@ @ZLIB@ -lm
+
+png2pdf: $(OBJECTS)
+ $(LD) $(LDFLAGS) $(DKLIBSLIB) -o png2pdf $(OBJECTS) -ldkc -ldkport $(LIBS)
+ chmod 755 png2pdf
+
+
+.SUFFIXES:
+.SUFFIXES: .c .o
+
+.c.o:
+ $(COMPILEC) -c $< -o $@
+
+java-progs:
+ find . -name compile-archive -exec chmod 755 {} \;
+ find . -name create-jar -exec chmod 755 {} \;
+ (cd Java/Png2PdfGUI && make install)
+VERSNUMB= -DVERSNUMB=\"1.0.12a\"
diff --git a/obsolete/support/png2pdf/README b/obsolete/support/png2pdf/README
new file mode 100644
index 0000000000..8a83810fbb
--- /dev/null
+++ b/obsolete/support/png2pdf/README
@@ -0,0 +1,96 @@
+
+CONTENTS
+========
+1. Purpose of the package
+2. Installation (Unix/Linux, Windows)
+3. Recent sources and documentation
+4. Developer information
+5. Contact
+
+
+
+1. Purpose of the package
+=========================
+This package contains the png2pdf program. This program converts PNG
+images to PDF files. It can use the PNG alpha channel to mix against
+a background (either from the PNG file's background chunk or user
+specified) and/or to create an image mask or PDF alpha channel.
+
+This software is released under a BSD-style license.
+See the file bsdlic.txt for details.
+
+
+
+2. Installation
+===============
+
+2.1 Installation on Unix/Linux
+------------------------------
+
+2.1.1 Required libraries
+The following libraries are required to install png2pdf:
+- zlib (required)
+ http://www.gzip.org/zlib
+- bzip2 (recommended)
+ http://sources.redhat.com/bzip2/
+- libpng (required)
+ http://www.libpng.org/pub/png/libpng.html
+- dklibs (required)
+ http://sourceforge.net/projects/dklibs
+Note: If you use package management software to install these libraries
+make sure the developer support (C header files...) is installed too.
+Some package managers use separated packages (xxx-dev) to provide
+developer support for libraries.
+
+2.1.2 Installation procedure
+After unpacking the png2pdf source the usual
+ ./configure
+ make
+ make install
+procedure should work.
+
+2.2 Installation on Windows
+---------------------------
+Windows users are encourage to use the setup executables from
+http://sourceforge.net/projects/dklibs in the
+dklibs-win32 package. The *user*.exe file installs the programs
+and the documentataion, the *dev*.exe file also installs the
+sources for all the programs and all the libraries needed to
+build the programs.
+
+
+3. Recent sources and documentation
+===================================
+The project is hosted on SourceForge, see
+ http://png2pdf.sourceforge.net
+and
+ http://sourceforge.net/projects/png2pdf
+for the most recent sources and documentation.
+
+
+
+4. Developer Information
+========================
+
+For each module you find 2 source files: *.ctr and *.c.
+The *.c file is created from the *.ctr file by running tracecc.
+If you want to apply changes to the source, do it in the *.ctr
+file.
+
+
+
+5. Contact
+==========
+You can contact me using the contact form
+http://www.fh-schmalkalden.de/url.php?/page/1026/select_wert/3023 on
+our faculty's web server.
+Please use "png2pdf bug" or "png2pdf suggestion" in the subject.
+
+The bugtracking and feature mechanisms on the SourceForge
+web site http://sourceforge.net/projects/png2pdf can also be used,
+I check them approximately once per month.
+
+Dirk Krause
+2005-02-15
+
+
diff --git a/obsolete/support/png2pdf/bsdlic.txt b/obsolete/support/png2pdf/bsdlic.txt
new file mode 100644
index 0000000000..761164f4dd
--- /dev/null
+++ b/obsolete/support/png2pdf/bsdlic.txt
@@ -0,0 +1,35 @@
+Copyright (c) 2005, Dirk Krause
+All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided
+that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+* Redistributions in binary form must reproduce the above
+ opyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of the Dirk Krause nor the names of
+ its contributors may be used to endorse or promote
+ products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
diff --git a/obsolete/support/png2pdf/config.h.in b/obsolete/support/png2pdf/config.h.in
new file mode 100755
index 0000000000..a5a3ee8b4f
--- /dev/null
+++ b/obsolete/support/png2pdf/config.h.in
@@ -0,0 +1,50 @@
+/*
+Copyright (c) 2000-2005, Dirk Krause
+All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided
+that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+* Redistributions in binary form must reproduce the above
+ opyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of the Dirk Krause nor the names of
+ its contributors may be used to endorse or promote
+ products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+*/
+
+#ifndef CONFIG_H_INC
+#define CONFIG_H_INC 1
+
+#define HAVE_ZLIB_H 0
+
+#define HAVE_PNG_H 0
+
+#define HAVE_DK_H 0
+
+#define HAVE_SETJMP_H 0
+
+#endif
+
diff --git a/obsolete/support/png2pdf/configure b/obsolete/support/png2pdf/configure
new file mode 100755
index 0000000000..2743147f78
--- /dev/null
+++ b/obsolete/support/png2pdf/configure
@@ -0,0 +1,8035 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="png2pdf.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP RANLIB ac_ct_RANLIB EGREP DKLIBSJ DKLIBSINC DKLIBSLIB BZLIB ZLIB LIBPNG LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
+ else
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+ fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+ { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+ cat <<_ACEOF
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+_ACEOF
+
+ cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-dklibs=DIR dklibs base directory
+ --with-dklibsj=jarfile use specified dklibsj.jar file
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d $ac_dir || continue
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+ cd $ac_dir
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_srcdir/configure.gnu; then
+ echo
+ $SHELL $ac_srcdir/configure.gnu --help=recursive
+ elif test -f $ac_srcdir/configure; then
+ echo
+ $SHELL $ac_srcdir/configure --help=recursive
+ elif test -f $ac_srcdir/configure.ac ||
+ test -f $ac_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\_ACEOF
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ # Get rid of the leading space.
+ ac_sep=" "
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+}
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ sed "/^$/d" confdefs.h | sort
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core &&
+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+ eval ac_new_val="\$ac_env_${ac_var}_value"
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_headers="$ac_config_headers config.h"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CC" && break
+done
+
+ CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Find the output, starting from the most likely. This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+ ;;
+ conftest.$ac_ext )
+ # This is the source file.
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
+ * )
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+DKLIBS="no"
+DKLIBSINC=""
+DKLIBSLIB=""
+
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "${ac_cv_header_dk_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for dk.h" >&5
+echo $ECHO_N "checking for dk.h... $ECHO_C" >&6
+if test "${ac_cv_header_dk_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_dk_h" >&5
+echo "${ECHO_T}$ac_cv_header_dk_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking dk.h usability" >&5
+echo $ECHO_N "checking dk.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <dk.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking dk.h presence" >&5
+echo $ECHO_N "checking dk.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <dk.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: dk.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: dk.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: dk.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: dk.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: dk.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: dk.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: dk.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: dk.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: dk.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: dk.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for dk.h" >&5
+echo $ECHO_N "checking for dk.h... $ECHO_C" >&6
+if test "${ac_cv_header_dk_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_dk_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_dk_h" >&5
+echo "${ECHO_T}$ac_cv_header_dk_h" >&6
+
+fi
+if test $ac_cv_header_dk_h = yes; then
+ DKLIBS="yes";cat >>confdefs.h <<\_ACEOF
+#define HAVE_DK_H 1
+_ACEOF
+
+fi
+
+
+ZLIB=""
+BZLIB=""
+if test "${ac_cv_header_setjmp_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for setjmp.h" >&5
+echo $ECHO_N "checking for setjmp.h... $ECHO_C" >&6
+if test "${ac_cv_header_setjmp_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_setjmp_h" >&5
+echo "${ECHO_T}$ac_cv_header_setjmp_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking setjmp.h usability" >&5
+echo $ECHO_N "checking setjmp.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <setjmp.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking setjmp.h presence" >&5
+echo $ECHO_N "checking setjmp.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <setjmp.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: setjmp.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: setjmp.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: setjmp.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: setjmp.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: setjmp.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: setjmp.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: setjmp.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: setjmp.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: setjmp.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: setjmp.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: setjmp.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: setjmp.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: setjmp.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: setjmp.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: setjmp.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: setjmp.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for setjmp.h" >&5
+echo $ECHO_N "checking for setjmp.h... $ECHO_C" >&6
+if test "${ac_cv_header_setjmp_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_setjmp_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_setjmp_h" >&5
+echo "${ECHO_T}$ac_cv_header_setjmp_h" >&6
+
+fi
+if test $ac_cv_header_setjmp_h = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_SETJMP_H 1
+_ACEOF
+
+fi
+
+
+if test "${ac_cv_header_bzlib_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for bzlib.h" >&5
+echo $ECHO_N "checking for bzlib.h... $ECHO_C" >&6
+if test "${ac_cv_header_bzlib_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_bzlib_h" >&5
+echo "${ECHO_T}$ac_cv_header_bzlib_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking bzlib.h usability" >&5
+echo $ECHO_N "checking bzlib.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <bzlib.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking bzlib.h presence" >&5
+echo $ECHO_N "checking bzlib.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <bzlib.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: bzlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: bzlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bzlib.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: bzlib.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: bzlib.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: bzlib.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bzlib.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: bzlib.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bzlib.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: bzlib.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bzlib.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: bzlib.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bzlib.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: bzlib.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bzlib.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: bzlib.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for bzlib.h" >&5
+echo $ECHO_N "checking for bzlib.h... $ECHO_C" >&6
+if test "${ac_cv_header_bzlib_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_bzlib_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_bzlib_h" >&5
+echo "${ECHO_T}$ac_cv_header_bzlib_h" >&6
+
+fi
+if test $ac_cv_header_bzlib_h = yes; then
+ BZLIB="-lbz2";cat >>confdefs.h <<\_ACEOF
+#define HAVE_BZLIB_H 1
+_ACEOF
+
+fi
+
+
+if test "${ac_cv_header_dk_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for dk.h" >&5
+echo $ECHO_N "checking for dk.h... $ECHO_C" >&6
+if test "${ac_cv_header_dk_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_dk_h" >&5
+echo "${ECHO_T}$ac_cv_header_dk_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking dk.h usability" >&5
+echo $ECHO_N "checking dk.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <dk.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking dk.h presence" >&5
+echo $ECHO_N "checking dk.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <dk.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: dk.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: dk.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: dk.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: dk.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: dk.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: dk.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: dk.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: dk.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: dk.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dk.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: dk.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for dk.h" >&5
+echo $ECHO_N "checking for dk.h... $ECHO_C" >&6
+if test "${ac_cv_header_dk_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_dk_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_dk_h" >&5
+echo "${ECHO_T}$ac_cv_header_dk_h" >&6
+
+fi
+if test $ac_cv_header_dk_h = yes; then
+ DKLIBS="yes";cat >>confdefs.h <<\_ACEOF
+#define HAVE_DK_H 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking for deflate in -lz" >&5
+echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6
+if test "${ac_cv_lib_z_deflate+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char deflate ();
+int
+main ()
+{
+deflate ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_z_deflate=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_z_deflate=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5
+echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6
+if test $ac_cv_lib_z_deflate = yes; then
+ ZLIB='-lz';cat >>confdefs.h <<\_ACEOF
+#define HAVE_ZLIB_H 1
+_ACEOF
+
+else
+ ZLIB=''
+fi
+
+echo "$as_me:$LINENO: checking libpng" >&5
+echo $ECHO_N "checking libpng... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <png.h>
+int
+main ()
+{
+
+png_structp png_ptr;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ LIBPNG='-lpng';echo yes;cat >>confdefs.h <<\_ACEOF
+#define HAVE_PNG_H 1
+_ACEOF
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+LIBPNG='';echo no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+# Check whether --with-dklibs or --without-dklibs was given.
+if test "${with_dklibs+set}" = set; then
+ withval="$with_dklibs"
+ DKLIBS="$withval"
+fi;
+case "X$DKLIBS" in
+Xno)
+echo 'ERROR: The dklibs library set was not found!'
+echo 'These libraries are required to build this application.'
+echo 'See http://dklibs.sourceforge.net for documentation or'
+echo 'http://sourceforge.net/projects/dklibs for download.'
+;;
+Xyes)
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DK_H 1
+_ACEOF
+
+;;
+*)
+DKLIBSINC="-I${DKLIBS}/include"
+DKLIBSLIB="-L${DKLIBS}/lib"
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DK_H 1
+_ACEOF
+
+;;
+esac
+DKLIBSJ='${bindir}/dklibsj.jar'
+
+# Check whether --with-dklibsj or --without-dklibsj was given.
+if test "${with_dklibsj+set}" = set; then
+ withval="$with_dklibsj"
+ DKLIBSJ=$withval
+fi;
+
+
+
+
+
+
+ ac_config_files="$ac_config_files Makefile"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@EGREP@,$EGREP,;t t
+s,@DKLIBSJ@,$DKLIBSJ,;t t
+s,@DKLIBSINC@,$DKLIBSINC,;t t
+s,@DKLIBSLIB@,$DKLIBSLIB,;t t
+s,@BZLIB@,$BZLIB,;t t
+s,@ZLIB@,$ZLIB,;t t
+s,@LIBPNG@,$LIBPNG,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+ ac_config_files="$ac_config_files png2pdf-gui"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "png2pdf-gui" ) CONFIG_FILES="$CONFIG_FILES png2pdf-gui" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@EGREP@,$EGREP,;t t
+s,@DKLIBSJ@,$DKLIBSJ,;t t
+s,@DKLIBSINC@,$DKLIBSINC,;t t
+s,@DKLIBSLIB@,$DKLIBSLIB,;t t
+s,@BZLIB@,$BZLIB,;t t
+s,@ZLIB@,$ZLIB,;t t
+s,@LIBPNG@,$LIBPNG,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+ ac_config_files="$ac_config_files Java/Png2PdfGUI/Makefile"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "png2pdf-gui" ) CONFIG_FILES="$CONFIG_FILES png2pdf-gui" ;;
+ "Java/Png2PdfGUI/Makefile" ) CONFIG_FILES="$CONFIG_FILES Java/Png2PdfGUI/Makefile" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@EGREP@,$EGREP,;t t
+s,@DKLIBSJ@,$DKLIBSJ,;t t
+s,@DKLIBSINC@,$DKLIBSINC,;t t
+s,@DKLIBSLIB@,$DKLIBSLIB,;t t
+s,@BZLIB@,$BZLIB,;t t
+s,@ZLIB@,$ZLIB,;t t
+s,@LIBPNG@,$LIBPNG,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+ ac_config_files="$ac_config_files Java/Png2PdfGUI/src/compile-archive"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "png2pdf-gui" ) CONFIG_FILES="$CONFIG_FILES png2pdf-gui" ;;
+ "Java/Png2PdfGUI/Makefile" ) CONFIG_FILES="$CONFIG_FILES Java/Png2PdfGUI/Makefile" ;;
+ "Java/Png2PdfGUI/src/compile-archive" ) CONFIG_FILES="$CONFIG_FILES Java/Png2PdfGUI/src/compile-archive" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@EGREP@,$EGREP,;t t
+s,@DKLIBSJ@,$DKLIBSJ,;t t
+s,@DKLIBSINC@,$DKLIBSINC,;t t
+s,@DKLIBSLIB@,$DKLIBSLIB,;t t
+s,@BZLIB@,$BZLIB,;t t
+s,@ZLIB@,$ZLIB,;t t
+s,@LIBPNG@,$LIBPNG,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+if test "X$ZLIB" = "X"
+then
+echo 'ERROR: The zlib library was not found!'
+echo 'This library is required to build this application.'
+echo 'See http://www.gzip.org/zlib for download.'
+fi
+if test "X$LIBPNG" = "X"
+then
+echo 'ERROR: The libpng library was not found!'
+echo 'This library is required to build this application.'
+echo 'See http://www.libpng.org for download.'
+fi
+if test "X$BZLIB" = "X"
+then
+echo 'Warning: The bzip2 library was not found.'
+echo 'This library is recommended by the dklibs library set.'
+echo 'If the dklibs library set was built without bzip2 support'
+echo '(I have no way to test this) you can ignore this warning.'
+echo 'When in doubt check linker output for undefined references.'
+echo 'See http://sources.redhat.com/bzip2/ for download.'
+fi
diff --git a/obsolete/support/png2pdf/configure.in b/obsolete/support/png2pdf/configure.in
new file mode 100755
index 0000000000..57b4d35331
--- /dev/null
+++ b/obsolete/support/png2pdf/configure.in
@@ -0,0 +1,70 @@
+dnl Bitmap to PNG conversion
+AC_INIT(png2pdf.c)
+AC_CONFIG_HEADER(config.h)
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_RANLIB
+DKLIBS="no"
+DKLIBSINC=""
+DKLIBSLIB=""
+AC_HEADER_CHECK(dk.h, [DKLIBS="yes";AC_DEFINE(HAVE_DK_H)])
+ZLIB=""
+BZLIB=""
+AC_HEADER_CHECK(setjmp.h,[AC_DEFINE(HAVE_SETJMP_H)])
+AC_HEADER_CHECK(bzlib.h,BZLIB="-lbz2";AC_DEFINE(HAVE_BZLIB_H))
+AC_HEADER_CHECK(dk.h,[DKLIBS="yes";AC_DEFINE(HAVE_DK_H)])
+AC_CHECK_LIB(z, deflate, ZLIB='-lz';AC_DEFINE(HAVE_ZLIB_H),ZLIB='')
+AC_MSG_CHECKING(libpng)
+AC_TRY_COMPILE([#include <png.h>], [
+png_structp png_ptr;
+], LIBPNG='-lpng';echo yes;AC_DEFINE(HAVE_PNG_H), LIBPNG='';echo no)
+AC_ARG_WITH(dklibs,[ --with-dklibs=DIR dklibs base directory],[DKLIBS="$withval"])
+case "X$DKLIBS" in
+Xno)
+echo 'ERROR: The dklibs library set was not found!'
+echo 'These libraries are required to build this application.'
+echo 'See http://dklibs.sourceforge.net for documentation or'
+echo 'http://sourceforge.net/projects/dklibs for download.'
+;;
+Xyes)
+AC_DEFINE(HAVE_DK_H)
+;;
+*)
+DKLIBSINC="-I${DKLIBS}/include"
+DKLIBSLIB="-L${DKLIBS}/lib"
+AC_DEFINE(HAVE_DK_H)
+;;
+esac
+DKLIBSJ='${bindir}/dklibsj.jar'
+AC_ARG_WITH(dklibsj,[ --with-dklibsj=jarfile use specified dklibsj.jar file],DKLIBSJ=$withval)
+AC_SUBST(DKLIBSJ)
+AC_SUBST(DKLIBSINC)
+AC_SUBST(DKLIBSLIB)
+AC_SUBST(BZLIB)
+AC_SUBST(ZLIB)
+AC_SUBST(LIBPNG)
+AC_OUTPUT(Makefile)
+AC_OUTPUT(png2pdf-gui)
+AC_OUTPUT(Java/Png2PdfGUI/Makefile)
+AC_OUTPUT(Java/Png2PdfGUI/src/compile-archive)
+if test "X$ZLIB" = "X"
+then
+echo 'ERROR: The zlib library was not found!'
+echo 'This library is required to build this application.'
+echo 'See http://www.gzip.org/zlib for download.'
+fi
+if test "X$LIBPNG" = "X"
+then
+echo 'ERROR: The libpng library was not found!'
+echo 'This library is required to build this application.'
+echo 'See http://www.libpng.org for download.'
+fi
+if test "X$BZLIB" = "X"
+then
+echo 'Warning: The bzip2 library was not found.'
+echo 'This library is recommended by the dklibs library set.'
+echo 'If the dklibs library set was built without bzip2 support'
+echo '(I have no way to test this) you can ignore this warning.'
+echo 'When in doubt check linker output for undefined references.'
+echo 'See http://sources.redhat.com/bzip2/ for download.'
+fi
diff --git a/obsolete/support/png2pdf/diff.ouzt b/obsolete/support/png2pdf/diff.ouzt
new file mode 100644
index 0000000000..0b930b1b62
--- /dev/null
+++ b/obsolete/support/png2pdf/diff.ouzt
@@ -0,0 +1,128 @@
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ChooseDirectory.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: Exit.png
+Common subdirectories: DOCU/HTML and /data/home/m/n/p/krause/transfer/png2pdf/DOCU/HTML
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: Options.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: Run.png
+Only in DOCU: beamtest.aux
+Only in DOCU: beamtest.log
+Only in DOCU: beamtest.out
+Only in DOCU: beamtest.toc
+diff DOCU/changes.html /data/home/m/n/p/krause/transfer/png2pdf/DOCU/changes.html
+14,16c14
+< <!-- begin logo -->
+< <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=96216&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"></a>
+< <!-- end logo -->
+---
+> <a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+25c23
+< <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Change&nbsp;Log</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+---
+> <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Change&nbsp;Log</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+39c37
+< The current version is 1.0.11.
+---
+> The current version is 1.0.12.
+40a39,42
+> <li>1.0.12<br>
+> A Java application Png2PdfGUI was added providing a graphical
+> user interface to the png2pdf program.
+> </li>
+Only in DOCU: changes.html~
+diff DOCU/faq.html /data/home/m/n/p/krause/transfer/png2pdf/DOCU/faq.html
+14,16c14
+< <!-- begin logo -->
+< <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=96216&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"></a>
+< <!-- end logo -->
+---
+> <a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+25c23
+< <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">FAQ</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+---
+> <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">FAQ</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+Common subdirectories: DOCU/fbt and /data/home/m/n/p/krause/transfer/png2pdf/DOCU/fbt
+diff DOCU/index.html /data/home/m/n/p/krause/transfer/png2pdf/DOCU/index.html
+14,16c14
+< <!-- begin logo -->
+< <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=96216&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"></a>
+< <!-- end logo -->
+---
+> <a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+25c23
+< <span class="navimenucurrent">Overview</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+---
+> <span class="navimenucurrent">Overview</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+46c44
+< <td align="RIGHT" valign="TOP"><b>Current&nbsp;version:&nbsp;1.0.11</b></td>
+---
+> <td align="RIGHT" valign="TOP"><b>Current&nbsp;version:&nbsp;1.0.12</b></td>
+Only in DOCU: index.html~
+diff DOCU/install.html /data/home/m/n/p/krause/transfer/png2pdf/DOCU/install.html
+14,16c14
+< <!-- begin logo -->
+< <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=96216&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"></a>
+< <!-- end logo -->
+---
+> <a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+25c23
+< <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Installation</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+---
+> <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Installation</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+diff DOCU/interpolate.html /data/home/m/n/p/krause/transfer/png2pdf/DOCU/interpolate.html
+13,15c13
+< <!-- begin logo -->
+< <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=96216&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"></a>
+< <!-- end logo -->
+---
+> <a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+24c22
+< <span class="navimenucurrent">Overview</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+---
+> <span class="navimenucurrent">Overview</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+Common subdirectories: DOCU/logo and /data/home/m/n/p/krause/transfer/png2pdf/DOCU/logo
+Only in DOCU: png2pdf-logo.svg~
+Only in DOCU: png2pdf.dvi
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg01.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg02.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg03.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg04.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg05.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg06.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg07.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg08.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg09.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg10.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg11.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg12.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg13.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppg14.png
+Only in /data/home/m/n/p/krause/transfer/png2pdf/DOCU: ppgui.html
+diff DOCU/projects.html /data/home/m/n/p/krause/transfer/png2pdf/DOCU/projects.html
+14,16c14
+< <!-- begin logo -->
+< <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=96216&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"></a>
+< <!-- end logo -->
+---
+> <a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+25c23
+< <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Other&nbsp;Projects</span>
+---
+> <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="usage.html">Usage</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Other&nbsp;Projects</span>
+Only in DOCU: style.css~
+diff DOCU/usage.html /data/home/m/n/p/krause/transfer/png2pdf/DOCU/usage.html
+14,16c14
+< <!-- begin logo -->
+< <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=96216&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"></a>
+< <!-- end logo -->
+---
+> <a target="_blank" href="http://sourceforge.net/"><img src="sflogo.png" width="210" height="62" border="0" alt="SourceForge.net Logo"/></a>
+25c23
+< <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Usage</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+---
+> <a class="navimenulink" href="index.html">Overview</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="install.html">Installation</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<span class="navimenucurrent">Usage</span>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="ppgui.html">GUI</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="faq.html">FAQ</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="changes.html">Change&nbsp;Log</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;<a class="navimenulink" href="projects.html">Other&nbsp;Projects</a>
+Common subdirectories: Java/Png2pdfGUI and /data/home/m/n/p/krause/transfer/png2pdf/Java/Png2pdfGUI
+67a68
+> VERSNUMB= -DVERSNUMB=\"1.0.12\"
+Binary files png2pdf.jar and /data/home/m/n/p/krause/transfer/png2pdf/png2pdf.jar differ
+Common subdirectories: pod/pod1 and /data/home/m/n/p/krause/transfer/png2pdf/pod/pod1
+Only in /data/home/m/n/p/krause/transfer/png2pdf/share: doc
+Common subdirectories: share/png2pdf and /data/home/m/n/p/krause/transfer/png2pdf/share/png2pdf
diff --git a/obsolete/support/png2pdf/makefile.msc b/obsolete/support/png2pdf/makefile.msc
new file mode 100644
index 0000000000..9a519093bf
--- /dev/null
+++ b/obsolete/support/png2pdf/makefile.msc
@@ -0,0 +1,201 @@
+all: progs
+#
+# Makefile to build png2pdf using Visual C++ 5.0 or above
+#
+
+#
+# START OF FIRST CONFIGURATION SECTION.
+#
+# You may need to customize this section.
+#
+
+# FLAGS FOR XCOPY TO OVERWRITE EXISTING FILES
+# Does xcopy need a special option to overwrite
+# files without prompting?
+XCOPYFL= /Y
+
+
+
+# INSTALLATION TARGET DIRECTORY
+# Where do you want to install the software?
+PROGRAMS=C:\Programs
+VENDOR=Krause
+PREFIX=$(PROGRAMS)\$(VENDOR)
+
+
+
+# LIBRARY LOCATION
+# Where do the libraries reside?
+# Toggle setting to build DLLs
+# LIBSRC=C:\P\DLL-LIB
+LIBSRC=C:\P\LIB-STT
+
+
+
+# COMPILER, LINKER AND LIBRARIAN PROGRAMS
+# Which programs to use for compiling and linking?
+CC=CL
+LD=LINK
+LIB=LIB
+
+
+
+# VISUAL C DIRECTORY
+# Where is Visual C?
+# Directories lib, include and bin must be beyound this.
+#
+VC=$(PROGRAMS)\Microsoft Visual Studio\Vc98
+# VC=D:\Programme\DevStudio\Vc
+
+
+
+# SYSTEM CONFIGURATION DIRECTORY
+SCD= -DSYSCONFDIR=\"C:\\ETC\"
+
+
+
+# # LIBBZ2
+# # Toggle this section to enable libbz2 usage.
+BZL_DEF=-DHAVE_BZLIB_H=0
+BZL_DIR=
+BZL_LIB=
+BZL_CP_CMD=echo Not necessary to copy DLL for libbz2
+# BZL_DEF=-DHAVE_BZLIB_H=1
+# BZL_DIR=-I$(LIBSRC)\Include
+# BZL_LIB=libbz2.lib
+# # Toggle next lines to use DLL
+# BZL_CP_CMD=echo Not necessary to copy DLL for libbz2
+# # BZL_CP_CMD=xcopy $(LIBSRC)\bin\libbz2.dll $(PREFIX)\bin\ /S $(XCOPYFL)
+
+#
+# zlib configuration
+#
+
+# ZLIB
+# zlib is required.
+ZL_DEF=-DHAVE_ZLIB_H=1
+ZL_DIR=-I$(LIBSRC)\Include
+# Toggle next lines to use DLL
+ZL_LIB=zlib.lib
+ZL_CP_CMD=echo Not necessary to copy DLL for zlib
+# ZL_LIB=zdll.lib
+# ZL_CP_CMD=xcopy $(LIBSRC)\bin\zlib1.dll $(PREFIX)\bin\ /S $(XCOPYFL)
+
+
+
+# PNGLIB
+# libpng is required too.
+PNG_DEF=-DHAVE_LIBPNG=1
+PNG_DIR=-I$(LIBSRC)\Include
+PNG_LIB=libpng.lib
+# # Toggle the next lines to use DLL
+PNG_CP_CMD=echo No need to copy a DLL for libpng
+# PNG_CP_CMD=xcopy $(LIBSRC)\bin\libpng.dll $(PREFIX)\bin\ /S $(XCOPYFL)
+
+
+
+#
+# END OF FIRST CONFIGURATION SECTION.
+#
+# NOTE: There is a second configuration section at
+# the end of this file. You may need to customize
+# this section too.
+#
+
+
+
+#
+# START OF FIXED OPTIONS SECTION
+#
+LIBS= $(BZL_LIB) $(ZL_LIB) $(PNG_LIB) dkdll.lib
+
+DLLF1= /DLL /nologo /RELEASE /INCREMENTAL:NO /PDB:NONE
+DLLF2= /SUBSYSTEM:CONSOLE /MACHINE:I386
+DLLF3= /LIBPATH:. /LIBPATH:"$(VC)\LIB" /LIBPATH:"$(LIBSRC)\LIB" /LIBPATH:"$(PREFIX)\lib"
+DLLF4= kernel32.lib user32.lib advapi32.lib gdi32.lib
+DLLFLAGS= $(DLLF1) $(DLLF2) $(DLLF3) $(DLLF4)
+
+EXEF1= /nologo /RELEASE /INCREMENTAL:NO
+EXEF1= /SUBSYSTEM:CONSOLE /MACHINE:I386
+EXEF3= /LIBPATH:. /LIBPATH:"$(VC)\LIB" /LIBPATH:"$(LIBSRC)\LIB" /LIBPATH:"$(PREFIX)\lib"
+EXEF4= kernel32.lib user32.lib advapi32.lib gdi32.lib
+EXEFLAGS= $(EXEF1) $(EXEF2) $(EXEF3) $(EXEF4)
+
+CDLLRT= /MD /GD
+CSTTRT= /MT
+CDEF1= /O2 /W3 /D "WIN32" /D "_WIN32" /D "NDEBUG" /D "_CONSOLE" /QI0f /QIfdiv
+CDEF2= -I. -I.. -I"$(PREFIX)\include"
+CDEF3= $(BZL_DEF) $(BZL_DIR) $(ZL_DEF) $(ZL_DIR) $(CRYPTO_DEF) $(CRYPTO_DIR)
+
+CDLLFLAGS= /nologo $(CDLLRT) $(CDEF1) $(CDEF2) $(CDEF3)
+CSTTFLAGS= /nologo $(CSTTRT) $(CDEF1) $(CDEF2) $(CDEF3)
+
+clean:
+ -ERASE *.obj
+ -ERASE *.lib
+ -ERASE *.dll
+ -ERASE *.exe
+
+#
+# END OF FIXED OPTIONS SECTION
+#
+
+
+
+#
+# START OF PROJECT SECTION
+#
+
+
+progs: png2pdf.exe
+
+PNG2PDFOBJ= png2pdfm.obj png2pdf.obj
+
+png2pdf.exe: $(PNG2PDFOBJ)
+ $(LD) $(EXEFLAGS) /out:png2pdf.exe $(PNG2PDFOBJ) $(LIBS)
+
+
+install: all
+ -mkdir $(PREFIX)
+ -mkdir $(PREFIX)\include
+ -mkdir $(PREFIX)\bin
+ -mkdir $(PREFIX)\lib
+ -mkdir $(PREFIX)\man
+ -mkdir $(PREFIX)\docu
+ -mkdir $(PREFIX)\docu\png2pdf
+ xcopy *.exe $(PREFIX)\bin\ $(XCOPYFL)
+ -xcopy man\* $(PREFIX)\man\ /S $(XCOPYFL)
+ -xcopy DOCU\png2pdf.pdf $(PREFIX)\docu\png2pdf\ /S $(XCOPYFL)
+ -mkdir lib
+ stc png2pdf.str share\png2pdf
+ xcopy share\png2pdf\en\* share\png2pdf\ $(XCOPYFL)
+ xcopy share\* $(PREFIX)\share\ /S /Y
+ -$(ZL_CP_CMD)
+ -$(BZL_CP_CMD)
+ -$(PNG_CP_CMD)
+
+#
+# END OF PROJECT SECTION
+#
+
+
+
+#
+# START OF SECOND CONFIGURATION SECTION
+#
+
+
+
+# COMPILING C MODULES
+# Toggle this section to build DLL
+.c.obj:
+ $(CC) $(CSTTFLAGS) /c $*.c
+# .c.obj:
+# $(CC) $(CDLLFLAGS) /c $*.c
+
+
+
+#
+# END OF SECOND CONFIGURATION SECTION
+#
+
diff --git a/obsolete/support/png2pdf/man/man1/png2pdf.1 b/obsolete/support/png2pdf/man/man1/png2pdf.1
new file mode 100644
index 0000000000..a23d35b9b4
--- /dev/null
+++ b/obsolete/support/png2pdf/man/man1/png2pdf.1
@@ -0,0 +1,274 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. | will give a
+.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "png2pdf 1"
+.TH png2pdf 1 "2006/07/18" "1.0.12a" "png2pdf-1.0.12a"
+.SH "NAME"
+png2pdf \- PNG to PDF converter
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+png2pdf \fIoptions\fR \fIinputfile\fR \fIoutputfile\fR
+.PP
+png2pdf \fIoptions\fR \fIdirectory\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The png2pdf program converts images from the \s-1PNG\s0 file format to the
+\&\s-1PDF\s0 file format. Different \s-1PDF\s0 levels can be choosen for output.
+An alpha channel in the \s-1PNG\s0 file can be used \*(-- depending on the
+output \s-1PDF\s0 level \*(-- to mix the \s-1PNG\s0 image against a specified
+background color, to create a \s-1PDF\s0 image mask or to create a
+transparency channel in the \s-1PDF\s0 file.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-p\fR \fIpdf-level\fR" 4
+.IX Item "-p pdf-level"
+chooses the \s-1PDF\s0 format level, may be either \*(L"1.2\*(R", \*(L"1.3\*(R" or \*(L"1.4\*(R".
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+adds an entry to the \s-1PDF\s0 image dictionary suggesting \s-1PDF\s0 viewers
+to show an interpolated image. This is useful for stretched images
+(small images shown in a large screen area).
+.IP "\fB\-m\fR \fIbackground-rgb\fR" 4
+.IX Item "-m background-rgb"
+specifies a background \s-1RGB\s0 color for mixing. This background color
+is used only if the \s-1PNG\s0 file does not contain a background chunk
+or if the \fB\-s\fR option is used.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+assigns the \s-1RGB\s0 background color specified using the \fB\-m\fR option
+a higher priority than the background color from the \s-1PNG\s0 background chunk.
+.IP "\fB\-i\fR" 4
+.IX Item "-i"
+converts the alpha channel from the \s-1PNG\s0 file into an image mask
+(if there is an alpha channel).
+.IP "\fB\-a\fR" 4
+.IX Item "-a"
+converts the alpha channel from the \s-1PNG\s0 file (if present) into a
+\&\s-1PDF\s0 transparency channel. Note: \fB\-a\fR and \fB\-i\fR can not be used
+at same time.
+.IP "\fB\-l\fR" 4
+.IX Item "-l"
+inverts the triggering level for image mask creation (see \fB\-i\fR).
+By default only opacity=0 pixels are masked. Using \fB\-l\fR the
+opacity<255 pixels are masked.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+interprets the alpha channel data as transparency (by default it
+is opacity).
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+activates ``make'' style behaviour (checks file modification times)
+when png2pdf is run on a directory.
+.IP "\fB\-h\fR" 4
+.IX Item "-h"
+prints a help text
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+prints version information.
+.IP "\fB\-c\fR \fIoption\fR" 4
+.IX Item "-c option"
+stores permanent options.
+.IP "\fB\-u\fR" 4
+.IX Item "-u"
+removes all permanent options.
+.IP "\fB\-r\fR ..." 4
+.IX Item "-r ..."
+ignores all permanent options for this one program invokation. The
+\&\fB\-r\fR options must be used before any other option.
+.IP "\fB\-C\fR" 4
+.IX Item "-C"
+shows the permanent options.
+.SH "RETURN VALUE"
+.IX Header "RETURN VALUE"
+The program returns exit code 0 on success, positive values on error.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+.Vb 1
+\& png2pdf -m 255.255.255 x.png x.pdf
+.Ve
+.Sp
+converts x.png to x.pdf. If there is an alpha channel in x.png this
+is used to mix against either the background specified in the
+background chunk (if there is one) or against the user specified
+background color white.
+.Sp
+.Vb 1
+\& png2pdf -s -m 255.255.255 x.png x.pdf
+.Ve
+.Sp
+converts x.png to x.pdf. If there is an alpha channel in x.png this
+is used to mix against the user supplied background color (white).
+The background chunk possibly contained in the \s-1PNG\s0 file is ignored.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+By default a \s-1PDF\s0 manual is installed ``near'' with the binary.
+If
+.Sp
+.Vb 1
+\& which png2pdf
+.Ve
+.Sp
+finds the binary ``/usr/local/bin/png2pdf'', check for a file named
+``/usr/local/share/doc/png2pdf/png2pdf.pdf''.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Dirk Krause
+.SH "COPYRIGHT AND LICENSE"
+.IX Header "COPYRIGHT AND LICENSE"
+Copyright (c) 2001\-2005, Dirk Krause
+All rights reserved.
+.Sp
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+.RS 4
+.IP "* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer." 4
+.IX Item "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer."
+.PD 0
+.IP "* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution." 4
+.IX Item "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution."
+.IP "* Neither the name of the Dirk Krause nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission." 4
+.IX Item "Neither the name of the Dirk Krause nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission."
+.RE
+.RS 4
+.PD
+.Sp
+\&\s-1THIS\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1PROVIDED\s0 \s-1BY\s0 \s-1THE\s0 \s-1COPYRIGHT\s0 \s-1HOLDERS\s0 \s-1AND\s0 \s-1CONTRIBUTORS\s0 \*(L"\s-1AS\s0 \s-1IS\s0\*(R" \s-1AND\s0
+\&\s-1ANY\s0 \s-1EXPRESS\s0 \s-1OR\s0 \s-1IMPLIED\s0 \s-1WARRANTIES\s0, \s-1INCLUDING\s0, \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0, \s-1THE\s0 \s-1IMPLIED\s0
+\&\s-1WARRANTIES\s0 \s-1OF\s0 \s-1MERCHANTABILITY\s0 \s-1AND\s0 \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0 \s-1ARE\s0
+\&\s-1DISCLAIMED\s0. \s-1IN\s0 \s-1NO\s0 \s-1EVENT\s0 \s-1SHALL\s0 \s-1THE\s0 \s-1COPYRIGHT\s0 \s-1OWNER\s0 \s-1OR\s0 \s-1CONTRIBUTORS\s0 \s-1BE\s0 \s-1LIABLE\s0
+\&\s-1FOR\s0 \s-1ANY\s0 \s-1DIRECT\s0, \s-1INDIRECT\s0, \s-1INCIDENTAL\s0, \s-1SPECIAL\s0, \s-1EXEMPLARY\s0, \s-1OR\s0 \s-1CONSEQUENTIAL\s0
+\&\s-1DAMAGES\s0 (\s-1INCLUDING\s0, \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0, \s-1PROCUREMENT\s0 \s-1OF\s0 \s-1SUBSTITUTE\s0 \s-1GOODS\s0 \s-1OR\s0
+\&\s-1SERVICES\s0; \s-1LOSS\s0 \s-1OF\s0 \s-1USE\s0, \s-1DATA\s0, \s-1OR\s0 \s-1PROFITS\s0; \s-1OR\s0 \s-1BUSINESS\s0 \s-1INTERRUPTION\s0) \s-1HOWEVER\s0
+\&\s-1CAUSED\s0 \s-1AND\s0 \s-1ON\s0 \s-1ANY\s0 \s-1THEORY\s0 \s-1OF\s0 \s-1LIABILITY\s0, \s-1WHETHER\s0 \s-1IN\s0 \s-1CONTRACT\s0, \s-1STRICT\s0 \s-1LIABILITY\s0,
+\&\s-1OR\s0 \s-1TORT\s0 (\s-1INCLUDING\s0 \s-1NEGLIGENCE\s0 \s-1OR\s0 \s-1OTHERWISE\s0) \s-1ARISING\s0 \s-1IN\s0 \s-1ANY\s0 \s-1WAY\s0 \s-1OUT\s0 \s-1OF\s0 \s-1THE\s0 \s-1USE\s0
+\&\s-1OF\s0 \s-1THIS\s0 \s-1SOFTWARE\s0, \s-1EVEN\s0 \s-1IF\s0 \s-1ADVISED\s0 \s-1OF\s0 \s-1THE\s0 \s-1POSSIBILITY\s0 \s-1OF\s0 \s-1SUCH\s0 \s-1DAMAGE\s0.
+.SH "LAST MODIFICATION"
+.IX Header "LAST MODIFICATION"
+2005/03/22
diff --git a/obsolete/support/png2pdf/png2pdf-gui.in b/obsolete/support/png2pdf/png2pdf-gui.in
new file mode 100644
index 0000000000..3df362bf7d
--- /dev/null
+++ b/obsolete/support/png2pdf/png2pdf-gui.in
@@ -0,0 +1,8 @@
+#! /bin/sh
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+datadir=@datadir@
+bindir=@bindir@
+
+DKLIBSJ=@DKLIBSJ@
+java -cp ${bindir}/png2pdf.jar:${DKLIBSJ} Png2PdfGUI &
diff --git a/obsolete/support/png2pdf/png2pdf.c b/obsolete/support/png2pdf/png2pdf.c
new file mode 100644
index 0000000000..9b094cef9d
--- /dev/null
+++ b/obsolete/support/png2pdf/png2pdf.c
@@ -0,0 +1,1891 @@
+/*
+Copyright (c) 2003-2005, Dirk Krause
+All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided
+that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+* Redistributions in binary form must reproduce the above
+ opyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of the Dirk Krause nor the names of
+ its contributors may be used to endorse or promote
+ products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+*/
+
+#define DK_PNG2PDF_C 1
+#include "png2pdf.h"
+
+#if HAVE_SETJMP_H
+#include <setjmp.h>
+#endif
+
+
+#line 45 "png2pdf.ctr"
+
+
+
+#define WRITE_CLIPPATH 1
+
+typedef struct {
+ char *key;
+ char *value;
+} key_value_pair;
+
+
+/* ********************************************************************* */
+/* * * */
+/* * Keys for strings in string table and default values. * */
+/* * * */
+/* ********************************************************************* */
+
+#line 57 "png2pdf.ctr"
+
+static key_value_pair for_messages[] = {
+ { "/m/00", "on" },
+ { "/m/01", "off" },
+ { "/m/02", "Mix against a given background" },
+ { "/m/03", "Background from command line overwrites background chunk" },
+ { "/m/04", "Create image mask" },
+ { "/m/05", "Inverted image mask levels" },
+ { "/m/06", "Fill draw area before image writing" },
+ { "/m/07", "PDF format version" },
+ { "/m/08", "Write transparency data to PDF" },
+ { "/m/09", "Alpha channel specifies transparency" },
+ { "/m/10", "Current configuration:" },
+ { "/m/11", "Check file times when running on directory" },
+ { "/m/12", "Processing input file \"" },
+ { "/m/13", "\"." },
+ { "/m/14", "Image interpolation (smooth transitions)" },
+ { "/m/15", "Too many file names!" },
+ { "/m/16", "Failed to obtain color palette from file!" },
+ { "/m/17", "Not enough memory (RAM/swap space) for image data!" },
+ { "/m/18", "Failed to read PNG image from file \"" },
+ { "/m/19", "Failed to create PNG info structure, not enough memory!" },
+ { "/m/20", "Failed to create PNG read structure, not enough memory!" },
+ { "/m/21", "Failed to set up encoding, not enough memory!" },
+ { "/m/22", "Failed to create encoding stream, not enough memory!" },
+ { "/m/23", "Failed to create output stream, not enough memory!" },
+ { "/m/24", "Internal error: Failed to find name for directory entry!"},
+ { "/m/25", "File name \""},
+ { "/m/26", "\" is too long for buffer!"},
+ { "/m/27", "\" (file corrupted or not a PNG?)!"},
+
+};
+static size_t sz_for_messages =
+sizeof(for_messages)/sizeof(key_value_pair);
+
+
+static char *versions[] = {
+ "1.2",
+ "1.3",
+ "1.4",
+ NULL
+};
+
+static char str_minus[] = { "-" };
+
+static char str_threespc[] = { " " };
+
+
+static
+void
+simple_msg DK_P3(Png2PdfCmd *,c, int,l, size_t,nr)
+{
+ if(c) {
+ if((c->a) && (c->msgptr)) {
+ if(nr < sz_for_messages) {
+ char *logmsg[2];
+ logmsg[0] = (c->msgptr)[nr];
+ logmsg[1] = NULL;
+ dkapp_log_msg(c->a,l,logmsg,1);
+ }
+ }
+ }
+}
+
+
+static
+void
+combined_msg DK_P5(Png2PdfCmd *,c, int,l, size_t,n1, size_t,n2, char *,fn)
+{
+ if(c) {
+ if((c->a) && (c->msgptr)) {
+ if((n1 < sz_for_messages) && (n2 < sz_for_messages)) {
+ if(fn) {
+ char *logmsg[4];
+ logmsg[0] = (c->msgptr)[n1];
+ logmsg[1] = fn;
+ logmsg[2] = (c->msgptr)[n2];
+ logmsg[3] = NULL;
+ dkapp_log_msg(c->a,l,logmsg,3);
+ }
+ }
+ }
+ }
+}
+
+static
+int
+mix_colors DK_P3(int,fg, int,bg, int,a)
+{
+ int back = 0;
+ unsigned long f, b, bck;
+
+ f = fg; b = bg;
+ bck = ((a * f) + ((255UL - a) * b)) / 255UL;
+ back = bck;
+ return back;
+}
+
+static int
+ntsc DK_P3(int,red,int,green,int,blue)
+{
+ int back = 0;
+ unsigned long r, g, b, bck;
+
+ r = red; g = green; b = blue;
+ bck = ((54UL * r) + (183UL * g) + (19UL * b)) / 256UL;
+ back = bck;
+
+ return back;
+}
+
+
+/* ********************************************************************* */
+/* * * */
+/* * Clean up the cmd structure after we are done. * */
+/* * Release memory needed by msgptr * */
+/* * * */
+/* ********************************************************************* */
+
+#line 171 "png2pdf.ctr"
+
+void
+png2pdf_uninitialize_cmd DK_P1(Png2PdfCmd *,c)
+{
+ void *ptr;
+
+ if(c) {
+ if(c->msgptr) {
+ ptr = (void *)(c->msgptr);
+ dk_delete(ptr);
+ c->msgptr = NULL;
+ }
+ DK_MEMRES(c,sizeof(Png2PdfCmd));
+ }
+
+}
+
+
+
+
+/* ********************************************************************* */
+/* * * */
+/* * Reset all command line options except file names. * */
+/* * * */
+/* ********************************************************************* */
+
+#line 192 "png2pdf.ctr"
+
+void
+png2pdf_reset_cmd DK_P1(Png2PdfCmd *,c)
+{
+
+ /* mixing against white background by default */
+ (c->bg_file).r = (c->bg_file).g = (c->bg_file).b = 255;
+ (c->bg_cmdl).r = (c->bg_cmdl).g = (c->bg_cmdl).b = 255;
+ (c->bg_file).gray = (c->bg_cmdl).gray = 255;
+ c->pdf_version = PNG2PDF_PDF_VERSION_14;
+ c->options = 0;
+ c->cmd = PNG2PDF_CMD_RUN;
+
+}
+
+
+
+
+/* ********************************************************************* */
+/* * * */
+/* * Completely reset the cmd structure during initialization. * */
+/* * * */
+/* ********************************************************************* */
+
+#line 211 "png2pdf.ctr"
+
+static void
+cmd_reset_completely DK_P1(Png2PdfCmd *,c)
+{
+
+ png2pdf_reset_cmd(c);
+ c->a = NULL;
+ c->inputfilename = NULL;
+ c->outputfilename = NULL;
+ c->realfilename = NULL;
+ c->msgptr = NULL;
+ c->error_code = 0;
+
+}
+
+
+
+typedef char *CPTR;
+
+
+
+
+/* ********************************************************************* */
+/* * * */
+/* * Initialize the command structure. * */
+/* * Return 1 on success, 0 on error. * */
+/* * The msgptr array for the messages is allocated * */
+/* * dynamically. * */
+/* * * */
+/* ********************************************************************* */
+
+#line 237 "png2pdf.ctr"
+
+int
+png2pdf_initialize_cmd DK_P2(Png2PdfCmd *,c,dk_app_t *,a)
+{
+ int back = 0;
+ dk_string_finder_t *sf;
+ size_t i;
+
+ if(c) {
+ cmd_reset_completely(c);
+ c->a = a;
+ sf = dk_new(dk_string_finder_t,(1+sz_for_messages));
+ c->msgptr = dk_new(CPTR,sz_for_messages);
+ if(sf && (c->msgptr)) {
+ back = 1;
+ for(i = 0; i < sz_for_messages; i++) {
+ sf[i].key = for_messages[i].key;
+ sf[i].default_value = for_messages[i].value;
+ sf[i].value_pointer = &((c->msgptr)[i]);
+ }
+ i = sz_for_messages;
+ sf[i].key = NULL; sf[i].default_value = NULL;
+ sf[i].value_pointer = NULL;
+ if(a) {
+ dkapp_find_multi(a, sf, "png2pdf");
+ } else {
+ for(i = 0; i < sz_for_messages; i++) {
+ (c->msgptr)[i] = for_messages[i].value;
+ }
+ }
+
+#line 268 "png2pdf.ctr"
+
+#line 269 "png2pdf.ctr"
+
+#line 270 "png2pdf.ctr"
+
+#line 271 "png2pdf.ctr"
+
+#line 272 "png2pdf.ctr"
+ dk_delete(sf);
+ } else {
+ if(sf) {
+ dk_delete(sf);
+ } else {
+ if(a) {
+ dkapp_err_memory(a,sizeof(dk_string_finder_t),sz_for_messages);
+ }
+ }
+ if(c->msgptr) {
+ dk_delete(c->msgptr);
+ c->msgptr = NULL;
+ } else {
+ if(a) {
+ dkapp_err_memory(a,sizeof(CPTR),sz_for_messages);
+ }
+ }
+ }
+ if(!back) {
+ png2pdf_uninitialize_cmd(c);
+ }
+ }
+
+ return back;
+}
+
+
+
+static char seps[] = { " \t:," };
+
+static int
+correct_range DK_P3(int,orig,int,min,int,max)
+{
+ int back = orig;
+ if(orig < min) back = min;
+ if(orig > max) back = max;
+ return back;
+}
+
+static void
+extract_background DK_P3(Png2PdfCmd *,c,char *,ptr,int,noisy)
+{
+ char buffer[128], *s1, *s2, *s3;
+ int success = 0, i1, i2, i3, have_dot;
+
+ if(strlen(ptr) < sizeof(buffer)) {
+ strcpy(buffer, ptr);
+ s1 = dkstr_start(buffer, NULL);
+ if(s1) {
+ s2 = dkstr_next(s1, seps);
+ if(s2) {
+ s3 = dkstr_next(s2, seps);
+ if(s3) {
+ have_dot = 0;
+ if(dkstr_chr(s1, '.')) have_dot = 1;
+ if(dkstr_chr(s1, '.')) have_dot = 1;
+ if(dkstr_chr(s1, '.')) have_dot = 1;
+ if(have_dot) {
+ double d1, d2, d3;
+ if(sscanf(s1, "%lf", &d1) == 1) success++;
+ if(sscanf(s2, "%lf", &d2) == 2) success++;
+ if(sscanf(s3, "%lf", &d3) == 3) success++;
+ i1 = (int)dkma_double_to_ul(
+ dkma_mul_double(d1, 255.0)
+ );
+ i2 = (int)dkma_double_to_ul(
+ dkma_mul_double(d2, 255.0)
+ );
+ i3 = (int)dkma_double_to_ul(
+ dkma_mul_double(d3, 255.0)
+ );
+ } else {
+ if(sscanf(s1, "%d", &i1) == 1) success++;
+ if(sscanf(s2, "%d", &i2) == 1) success++;
+ if(sscanf(s3, "%d", &i3) == 1) success++;
+ }
+ i1 = correct_range(i1,0,255);
+ i2 = correct_range(i2,0,255);
+ i3 = correct_range(i3,0,255);
+ if(success != 3) success = 0;
+ if(success) {
+ (c->bg_cmdl).r = i1;
+ (c->bg_cmdl).g = i2;
+ (c->bg_cmdl).b = i3;
+ (c->bg_cmdl).gray = ntsc(i1,i2,i3);
+ c->options |= PNG2PDF_OPT_MIX;
+
+ }
+ }
+ }
+ }
+ }
+ if(!success) {
+ c->options &= (~PNG2PDF_OPT_MIX);
+ if(dkstr_is_bool(ptr) || (*ptr == '-') || (*ptr == '+')) {
+ switch(*ptr) {
+ case '+': c->options |= PNG2PDF_OPT_MIX;
+ break;
+ case '-': c->options &= (~PNG2PDF_OPT_MIX);
+ break;
+ default: {
+ if(dkstr_is_on(ptr)) {
+ c->options |= PNG2PDF_OPT_MIX;
+ } else {
+ c->options &= (~PNG2PDF_OPT_MIX);
+ }
+ } break;
+ }
+ } else {
+ if(noisy) {
+ c->error_code = PNG2PDF_ERR_BACKGROUND_WRONG;
+ }
+ }
+ }
+}
+
+
+
+static char pk_mix_bg[] = { "/mix" };
+static char pk_bg_spec[] = { "/bg/cmd" };
+static char pk_image_mask[] = { "/image-mask" };
+static char pk_inverted_levels[] = { "/invert-levels" };
+static char pk_fill_background[] = { "/fill-background" };
+static char pk_pdf_level[] = { "/pdf-level" };
+static char pk_transparency[] = { "/transparency" };
+static char pk_alphatrans[] = { "/alpha-transparency" };
+static char pk_file_time_check[] = { "/file-time-check" };
+static char pk_interpolate[] = { "/image/interpolate" };
+
+
+static char str_on[] = { "on" };
+static char str_off[] = { "off" };
+
+static void
+save_bool_to_pref DK_P3(Png2PdfCmd *,c,int,v,char *,k)
+{
+ char *t;
+
+ t = str_off;
+ if((c->options) & v) {
+ t = str_on;
+ }
+ dkapp_set_pref(c->a, k, t);
+
+}
+
+
+
+void
+png2pdf_save_configuration DK_P1(Png2PdfCmd *,c)
+{
+ char buffer[128];
+
+ if(c->a) {
+
+ strcpy(buffer, str_minus);
+ if((c->options) & PNG2PDF_OPT_MIX) {
+ sprintf(
+ buffer, "%d,%d,%d", (c->bg_cmdl).r, (c->bg_cmdl).g, (c->bg_cmdl).b
+ );
+ }
+ dkapp_set_pref(c->a, pk_mix_bg, buffer);
+ dkapp_set_pref(c->a, pk_pdf_level, versions[c->pdf_version]);
+ save_bool_to_pref(c, PNG2PDF_OPT_BGCMD, pk_bg_spec);
+ save_bool_to_pref(c, PNG2PDF_OPT_IMAGEMASK, pk_image_mask);
+ save_bool_to_pref(c, PNG2PDF_OPT_INVERTLEVELS, pk_inverted_levels);
+ save_bool_to_pref(c, PNG2PDF_OPT_FILLBACKGROUND, pk_fill_background);
+ save_bool_to_pref(c, PNG2PDF_OPT_TRANSPARENCY, pk_transparency);
+ save_bool_to_pref(c, PNG2PDF_OPT_ALPHA_TRANS, pk_alphatrans);
+ save_bool_to_pref(c, PNG2PDF_OPT_MAKE, pk_file_time_check);
+ save_bool_to_pref(c, PNG2PDF_OPT_INTERPOLATE, pk_interpolate);
+ }
+
+}
+
+
+
+static void
+print_right_aligned DK_P2(char *,str,size_t,sz)
+{
+ size_t x = 0;
+ if(str) x = strlen(str);
+ while(x++ < sz) fputc(' ', stdout);
+ if(str) fputs(str, stdout);
+}
+
+
+
+void
+png2pdf_print_configuration DK_P1(Png2PdfCmd *,c)
+{
+ char buffer[128];
+ size_t sz, sz1;
+
+ strcpy(buffer, str_minus);
+ if((c->options) & PNG2PDF_OPT_MIX) {
+ sprintf(buffer, "%d,%d,%d",
+ (c->bg_cmdl).r, (c->bg_cmdl).g, (c->bg_cmdl).b
+ );
+ }
+ sz = strlen(buffer);
+ sz1 = strlen((c->msgptr)[0]);
+ if(sz1 > sz) sz = sz1;
+ sz1 = strlen((c->msgptr)[1]);
+ if(sz1 > sz) sz = sz1;
+ fputs((c->msgptr)[10], stdout); fputc('\n', stdout);
+ fputs("-p", stdout); fputs(str_threespc, stdout);
+ print_right_aligned(versions[c->pdf_version], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[7], stdout);
+ fputc('\n', stdout);
+ fputs("-m", stdout); fputs(str_threespc, stdout);
+ print_right_aligned(buffer, sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[2], stdout);
+ fputc('\n', stdout);
+ fputs("-s", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_BGCMD)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[3], stdout);
+ fputc('\n', stdout);
+ fputs("-i", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_IMAGEMASK)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[4], stdout);
+ fputc('\n', stdout);
+ fputs("-a", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_TRANSPARENCY)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[8], stdout);
+ fputc('\n', stdout);
+ fputs("-l", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_INVERTLEVELS)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[5], stdout);
+ fputc('\n', stdout);
+ fputs("-t", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_ALPHA_TRANS)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[9], stdout);
+ fputc('\n', stdout);
+ fputs("-b", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_FILLBACKGROUND)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[6], stdout);
+ fputc('\n', stdout);
+ fputs("-n", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_INTERPOLATE)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[14], stdout);
+ fputc('\n', stdout);
+ fputs("-f", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_MAKE)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[11], stdout);
+ fputc('\n', stdout);
+
+}
+
+
+
+static void
+flag_from_pref DK_P3(Png2PdfCmd *,c,int,v,char *,pk)
+{
+ char buffer[128], *s1;
+
+ if(c->a) {
+
+ if(dkapp_get_pref(c->a,pk,buffer,sizeof(buffer),0)) {
+ s1 = dkstr_start(buffer, NULL);
+
+ if(s1) {
+ dkstr_chomp(s1, NULL);
+ if(dkstr_is_on(s1)) {
+ c->options |= v;
+ } else {
+ c->options &= (~v);
+ }
+ } else {
+ c->options &= (~v);
+ }
+ }
+ }
+
+}
+
+static void
+set_pdf_version DK_P2(Png2PdfCmd *,c,char *,ptr)
+{
+ char *s1;
+ int back;
+
+ s1 = dkstr_start(ptr, NULL);
+ if(s1) {
+ dkstr_chomp(s1, NULL);
+ back = dkstr_array_index(versions, s1, 0);
+ if(back < 0) back = 0;
+ if(back > PNG2PDF_PDF_VERSION_MAX) back = PNG2PDF_PDF_VERSION_MAX;
+ c->pdf_version = back;
+ }
+}
+
+
+
+static void
+configure_from_app DK_P1(Png2PdfCmd *,c)
+{
+ char buffer[128];
+
+ if(c->a) {
+ if(dkapp_get_pref(c->a, pk_mix_bg, buffer, sizeof(buffer), 0)) {
+ extract_background(c, buffer, 0);
+ }
+ if(dkapp_get_pref(c->a, pk_pdf_level, buffer, sizeof(buffer), 0)) {
+ set_pdf_version(c, buffer);
+ }
+ flag_from_pref(c, PNG2PDF_OPT_BGCMD, pk_bg_spec);
+ flag_from_pref(c, PNG2PDF_OPT_IMAGEMASK, pk_image_mask);
+ flag_from_pref(c, PNG2PDF_OPT_TRANSPARENCY, pk_transparency);
+ flag_from_pref(c, PNG2PDF_OPT_INVERTLEVELS, pk_inverted_levels);
+ flag_from_pref(c, PNG2PDF_OPT_FILLBACKGROUND, pk_fill_background);
+ flag_from_pref(c, PNG2PDF_OPT_ALPHA_TRANS, pk_alphatrans);
+ flag_from_pref(c, PNG2PDF_OPT_MAKE, pk_file_time_check);
+ flag_from_pref(c, PNG2PDF_OPT_INTERPOLATE, pk_interpolate);
+ }
+}
+
+static void
+flag_from_opt_inv DK_P3(Png2PdfCmd *,c,int,v,char *,ptr)
+{
+ int back = 0;
+
+ if(ptr) {
+ if(*ptr) {
+ switch(*ptr) {
+ case '+': back = 1; break;
+ case '-': back = 0; break;
+ default : back = dkstr_is_on(ptr); break;
+ }
+ } else {
+ back = 1;
+ }
+ } else {
+ back = 1;
+ }
+ back = (back ? 0 : 1);
+ if(back) {
+ c->options |= v;
+ } else {
+ c->options &= (~v);
+ }
+}
+
+static void
+flag_from_opt DK_P3(Png2PdfCmd *,c,int,v,char *,ptr)
+{
+ int back = 0;
+
+ if(ptr) {
+ if(*ptr) {
+ switch(*ptr) {
+ case '+': back = 1; break;
+ case '-': back = 0; break;
+ default : back = dkstr_is_on(ptr); break;
+ }
+ } else {
+ back = 1;
+ }
+ } else {
+ back = 1;
+ }
+ if(back) {
+ c->options |= v;
+ } else {
+ c->options &= (~v);
+ }
+}
+
+
+
+static char *long_option_keywords[] = {
+ /* 0 */ "v$ersion",
+ /* 1 */ "h$elp",
+ /* 2 */ "c$onfigure",
+ /* 3 */ "s$how-configuration",
+ /* 4 */ "u$nconfigure",
+ /* 5 */ "r$eset",
+ /* 6 */ "mix-b$ackground",
+ /* 7 */ "mix-s$pecified",
+ /* 8 */ "im$age-mask",
+ /* 9 */ "inv$ert-levels",
+ /* 10 */ "fill$-background",
+ /* 11 */ "p$df-level",
+ /* 12 */ "t$ransparency",
+ /* 13 */ "a$lpha-transparency",
+ /* 14 */ "file$-time-check",
+ /* 15 */ "int$erpolation",
+ NULL
+};
+
+
+
+
+/* ********************************************************************* */
+/* * * */
+/* * Process the command line arguments. * */
+/* * * */
+/* ********************************************************************* */
+
+#line 666 "png2pdf.ctr"
+
+void
+png2pdf_process_args DK_P3(Png2PdfCmd *,c,int,argc,char **,argv)
+{
+ char *ptr, *valptr, **lfdptr;
+ int i;
+
+ if(c->a) {
+ configure_from_app(c);
+ }
+ lfdptr = argv; lfdptr++; i = 1;
+ while(i < argc) {
+ ptr = *lfdptr;
+ if(*ptr == '-') {
+ ptr++;
+ switch(*ptr) {
+ case '-' : {
+ ptr++;
+ valptr = dkstr_chr(ptr, '=');
+ if(valptr) { *(valptr++) = '\0'; }
+ switch(dkstr_array_abbr(long_option_keywords, ptr, '$', 1)) {
+ case 0: {
+ c->cmd |= PNG2PDF_CMD_VERSION;
+ } break;
+ case 1: {
+ c->cmd |= PNG2PDF_CMD_HELP;
+ } break;
+ case 2: {
+ c->cmd |= PNG2PDF_CMD_CONFIGURE;
+ } break;
+ case 3: {
+ c->cmd |= PNG2PDF_CMD_SHOWCONF;
+ } break;
+ case 4: {
+ c->cmd |= PNG2PDF_CMD_UNCONFIGURE;
+ } break;
+ case 5: {
+ png2pdf_reset_cmd(c);
+ } break;
+ case 6: {
+ if(valptr) {
+ extract_background(c, valptr, 1);
+ } else {
+ c->options |= PNG2PDF_OPT_MIX;
+ }
+ } break;
+ case 7: {
+ flag_from_opt(c, PNG2PDF_OPT_BGCMD, valptr);
+ } break;
+ case 8: {
+ flag_from_opt(c, PNG2PDF_OPT_IMAGEMASK, valptr);
+ } break;
+ case 9: {
+ flag_from_opt(c, PNG2PDF_OPT_IMAGEMASK, valptr);
+ } break;
+ case 10: {
+ flag_from_opt(c, PNG2PDF_OPT_FILLBACKGROUND, valptr);
+ } break;
+ case 11: {
+ set_pdf_version(c, valptr);
+ } break;
+ case 12: {
+ flag_from_opt(c, PNG2PDF_OPT_TRANSPARENCY, valptr);
+ } break;
+ case 13: {
+ flag_from_opt(c, PNG2PDF_OPT_ALPHA_TRANS, valptr);
+ } break;
+ case 14: {
+ flag_from_opt(c, PNG2PDF_OPT_MAKE, valptr);
+ } break;
+ case 15: {
+ flag_from_opt(c, PNG2PDF_OPT_INTERPOLATE, valptr);
+ } break;
+ }
+ } break;
+ case 'v' : {
+ c->cmd |= PNG2PDF_CMD_VERSION;
+ } break;
+ case 'h' : {
+ c->cmd |= PNG2PDF_CMD_HELP;
+ } break;
+ case 'c' : {
+ c->cmd |= PNG2PDF_CMD_CONFIGURE;
+ } break;
+ case 'C' : {
+ c->cmd |= PNG2PDF_CMD_SHOWCONF;
+ } break;
+ case 'r' : {
+ png2pdf_reset_cmd(c);
+ } break;
+ case 'u' : {
+ c->cmd |= PNG2PDF_CMD_UNCONFIGURE;
+ } break;
+ case 'm' : {
+ ptr++;
+ if(!(*ptr)) {
+ lfdptr++; i++; ptr = NULL;
+ if(i < argc) { ptr = *lfdptr; }
+ }
+ if(ptr) {
+ if(*ptr) {
+ extract_background(c, ptr, 1);
+ }
+ }
+ } break;
+ case 's' : {
+ flag_from_opt(c, PNG2PDF_OPT_BGCMD, ++ptr);
+ } break;
+ case 'i' : {
+ flag_from_opt(c, PNG2PDF_OPT_IMAGEMASK, ++ptr);
+ } break;
+ case 'l' : {
+ flag_from_opt(c, PNG2PDF_OPT_INVERTLEVELS, ++ptr);
+ } break;
+ case 'b' : {
+ flag_from_opt(c, PNG2PDF_OPT_FILLBACKGROUND, ++ptr);
+ } break;
+ case 'p' : {
+ ptr++;
+ if(!(*ptr)) {
+ ptr = NULL;
+ lfdptr++; i++;
+ if(i < argc) { ptr = *lfdptr; }
+ }
+ if(ptr) {
+ if(*ptr) {
+ set_pdf_version(c, ptr);
+ }
+ }
+ } break;
+ case 'a' : {
+ flag_from_opt(c, PNG2PDF_OPT_TRANSPARENCY, ++ptr);
+ } break;
+ case 't' : {
+ flag_from_opt(c, PNG2PDF_OPT_ALPHA_TRANS, ++ptr);
+ } break;
+ case 'f' : {
+ flag_from_opt(c, PNG2PDF_OPT_MAKE, ++ptr);
+ } break;
+ case 'n' : {
+ flag_from_opt(c, PNG2PDF_OPT_INTERPOLATE, ++ptr);
+ } break;
+ }
+ } else {
+ if(c->inputfilename) {
+ if(c->outputfilename) {
+ /* ERROR: Too many file names */
+ c->error_code = PNG2PDF_ERR_TOO_MANY_FILENAMES;
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 15);
+ } else {
+ c->outputfilename = ptr;
+ }
+ } else {
+ c->inputfilename = ptr;
+ }
+ }
+ lfdptr++; i++;
+ }
+}
+
+
+static int
+correct_bd DK_P2(int,v,int,bd)
+{
+ unsigned long a, b, back;
+
+ a = v; b = bd;
+ back = (255UL * a) / ((2UL ^ b) - 1UL);
+
+ return (int)back;
+}
+
+#ifndef VERSNUMB
+#define VERSNUMB "1.0.12a"
+#endif
+
+
+static char str_eol[] = { "\r\n" };
+static char str_spc[] = { " " };
+static char str_obj[] = { "obj" };
+static char str_endobj[] = { "endobj" };
+static char str_dictopen[] = { "<<" };
+static char str_dictclose[] = { ">>" };
+static char str_bropen[] = { "(" };
+static char str_brclose[] = { ")" };
+static char str_ropen[] = { "[" };
+static char str_rclose[] = { "]" };
+static char str_producer[] = { "/Producer (png2pdf" VERSNUMB ")" };
+static char str_0[] = { "0" };
+static char str_R[] = { "R" };
+static char str_type_catalog[] = { "/Type /Catalog" };
+static char str_pages[] = { "/Pages" };
+static char str_type_pages[] = { "/Type /Pages" };
+static char str_type_page[] = { "/Type /Page" };
+static char str_kids[] = { "/Kids" };
+static char str_count[] = { "/Count" };
+static char str_mediabox[] = { "/MediaBox" };
+static char str_cropbox[] = { "/CropBox" };
+static char str_rotate[] = { "/Rotate" };
+static char str_parent[] = { "/Parent" };
+static char str_resources[] = { "/Resources" };
+static char str_procset[] = { "/ProcSet" };
+static char str_pdf[] = { "/PDF" };
+static char str_imagec[] = { "/ImageC" };
+static char str_imageb[] = { "/ImageB" };
+static char str_xobject[] = { "/XObject" };
+static char str_imagemask_true[] = { "/ImageMask true" };
+static char str_contents[] = { "/Contents" };
+static char str_length[] = { "/Length" };
+static char str_stream[] = { "stream" };
+static char str_endstream[] = { "endstream" };
+static char str_subtype[] = { "/Subtype" };
+static char str_image[] = { "/Image" };
+static char str_colorspace[] = { "/ColorSpace" };
+static char str_matte[] = { "/Matte" };
+static char str_g[] = { "g" };
+static char str_rgb[] = { "rg" };
+static char str_hf[] = { "re f" };
+static char str_devicergb[] = { "/DeviceRGB" };
+static char str_devicegray[] = { "/DeviceGray" };
+static char str_width[] = { "/Width" };
+static char str_height[] = { "/Height" };
+static char str_slashH[] = { "/H" };
+static char str_slashW[] = { "/W" };
+static char str_bpc8[] = { "/BPC 8" };
+static char str_slashCS[] = { "/CS" };
+static char str_slashG[] = { "/G" };
+static char str_slashRGB[] = { "/RGB" };
+static char str_filter_short[] = { "/F [/A85 /Fl]" };
+static char str_ID[] = { "ID" };
+static char str_BI[] = { "BI" };
+static char str_EI[] = { "EI" };
+static char str_bitspercomponent[] = { "/BitsPerComponent" };
+static char str_filtera85flate[]={ "/Filter [ /ASCII85Decode /FlateDecode ]" };
+static char str_slash[] = { "/" };
+static char str_mask[] = { "/Mask" };
+static char str_smask[] = { "/SMask" };
+static char str_type[] = { "/Type" };
+static char str_n[] = { "n" };
+static char str_f[] = { "f" };
+static char str_xref[] = { "xref" };
+static char str_trailer[] = { "trailer" };
+static char str_startxref[] = { "startxref" };
+static char str_eof[] = { "%%EOF" };
+static char str_size[] = { "/Size" };
+static char str_info[] = { "/Info" };
+static char str_root[] = { "/Root" };
+static char str_q[] = { "q" };
+static char str_Q[] = { "Q" };
+static char str_cm[] = { "cm" };
+static char str_do[] = { "Do" };
+static char str_interpolate[] = { "/Interpolate true" };
+static char str_moveto[] = { "m" };
+static char str_lineto[] = { "l" };
+static char str_clip[] = { "h W n" };
+
+#define NEXTOBJECT xr[xru++] = dkstream_get_bytes_written(c->os1)
+
+static void
+putdouble DK_P2(Png2PdfCmd *,c,double,d)
+{
+ char buffer[32];
+ sprintf(buffer, "%lf", d);
+ dkstream_puts(c->os1, buffer);
+}
+
+
+
+static void
+putul5 DK_P2(Png2PdfCmd *,c,unsigned long,x)
+{
+ char buffer[32];
+ sprintf(buffer, "%05lu", x);
+ dkstream_puts(c->os1, buffer);
+}
+
+static void
+putul10 DK_P2(Png2PdfCmd *,c,unsigned long,x)
+{
+ char buffer[32];
+ sprintf(buffer, "%010lu", x);
+ dkstream_puts(c->os1, buffer);
+}
+static void
+putul DK_P2(Png2PdfCmd *,c,unsigned long,x)
+{
+ char buffer[32];
+ sprintf(buffer, "%lu", x);
+ dkstream_puts(c->os1, buffer);
+}
+
+static void
+open_object DK_P2(Png2PdfCmd *,c,unsigned long,x)
+{
+ putul(c,x);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_obj);
+ dkstream_puts(c->os1,str_eol);
+}
+
+
+static int
+encoded_contents DK_P1(Png2PdfCmd *,c)
+{
+ int back = 1;
+ int fr, fg, fb, br, bg, bb, t;
+ char buffer[4];
+ unsigned long x, y;
+ png_bytep row, *rowp;
+
+ if(!dkof_start_chunk(c->os2)) {
+ back = 0;
+ }
+ rowp = c->rows;
+ br = (c->bg_used).r; bg = (c->bg_used).g; bb = (c->bg_used).b;
+ for(y = 0UL; y < (c->he); y++) {
+ row = *(rowp++);
+ for(x = 0UL; x < (c->wi); x++) {
+ switch(c->ch) {
+ case 4: {
+ fr = row[x*((unsigned long)(c->ch))];
+ fg = row[1UL+x*((unsigned long)(c->ch))];
+ fb = row[2UL+x*((unsigned long)(c->ch))];
+ t = row[3UL+x*((unsigned long)(c->ch))];
+ if((c->options) & PNG2PDF_OPT_ALPHA_TRANS) {
+ t = 255 -t;
+ }
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ buffer[0] = fr; buffer[1] = fg; buffer[2] = fb;
+ } else {
+ buffer[0] = mix_colors(fr, br, t);
+ buffer[1] = mix_colors(fg, bg, t);
+ buffer[2] = mix_colors(fb, bb, t);
+ }
+ if(dkstream_write(c->os2, buffer, 3) != 3) {
+ back = 0;
+ }
+ } break;
+ case 3: {
+ fr = row[x*((unsigned long)(c->ch))];
+ fg = row[1UL+x*((unsigned long)(c->ch))];
+ fb = row[2UL+x*((unsigned long)(c->ch))];
+ buffer[0] = fr;
+ buffer[1] = fg;
+ buffer[2] = fb;
+ if(dkstream_write(c->os2, buffer, 3) != 3) {
+ back = 0;
+ }
+ } break;
+ case 2: {
+ fr = row[x*((unsigned long)(c->ch))];
+ t = row[1UL+x*((unsigned long)(c->ch))];
+ if((c->options) & PNG2PDF_OPT_ALPHA_TRANS) {
+ t = 255 - t;
+ }
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ buffer[0] = fr;
+ } else {
+ buffer[0] = mix_colors(fr, (c->bg_used).gray, t);
+ }
+ if(dkstream_write(c->os2, buffer, 1) != 1) {
+ back = 0;
+ }
+ } break;
+ case 1: {
+ fr = row[x*((unsigned long)(c->ch))];
+ buffer[0] = fr;
+ if(dkstream_write(c->os2, buffer, 1) != 1) {
+ back = 0;
+ }
+ } break;
+ }
+ }
+ }
+ if(!dkof_end_chunk(c->os2)) {
+ back = 0;
+ }
+ return back;
+}
+
+
+static unsigned char bits[] = {
+ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01
+};
+
+static int
+encoded_image_mask_or_transparency DK_P1(Png2PdfCmd *,c)
+{
+ int back = 1;
+ unsigned char uc; size_t bitno;
+ png_bytep row, *rowp;
+ unsigned long x, y, t;
+
+ uc = 0; bitno = 0;
+ rowp = c->rows;
+ if(!dkof_start_chunk(c->os2)) {
+ back = 0;
+
+ }
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ for(y = 0UL; y < (c->he); y++) {
+ row = *(rowp++);
+ for(x = 0UL; x < (c->wi); x++) {
+ t = row[((unsigned long)(c->ch))*(x+1UL)-1UL];
+ if((c->options) & PNG2PDF_OPT_ALPHA_TRANS) {
+ t = 255 - t;
+ }
+ uc = (unsigned char)t;
+ if(dkstream_write(c->os2, (void *)(&uc), 1) != 1) {
+ back = 0;
+
+ }
+ }
+ }
+ } else {
+ for(y = 0UL; y < (c->he); y++) {
+ row = *(rowp++);
+ for(x = 0UL; x < (c->wi); x++) {
+ t = row[((unsigned long)(c->ch))*(x+1UL)-1UL];
+ if((c->options) & PNG2PDF_OPT_ALPHA_TRANS) {
+ t = 255 - t;
+ }
+ if((c->options) & PNG2PDF_OPT_INVERTLEVELS) {
+ if(t < 255) { t = 0; }
+ }
+ if(!t) {
+ uc |= bits[bitno];
+ }
+ bitno++;
+ if(bitno >= 8) {
+ if(dkstream_write(c->os2, (void *)(&uc), 1) != 1) {
+ back = 0;
+
+ }
+ bitno = 0; uc = 0;
+ }
+ }
+ /* padding here */
+ if(bitno) {
+ if(dkstream_write(c->os2, (void *)(&uc), 1) != 1) {
+ back = 0;
+
+ }
+ }
+ bitno = 0; uc = 0;
+ }
+ }
+ if(!dkof_end_chunk(c->os2)) {
+ back = 0;
+
+ }
+
+ return back;
+}
+
+static int
+write_output DK_P1(Png2PdfCmd *,c)
+{
+ int back = 1;
+ unsigned long xr[20];
+ size_t xru;
+ unsigned long x, y, rootxru, infoxru, l1, l2, xobjxru;
+ unsigned long xrefxru, i;
+ int mix, torc, createxobject;
+ double matter, matteg, matteb;
+
+
+ torc = 0; createxobject = 0;
+ x = (c->options) & PNG2PDF_OPT_HAVE_FILE_BG;
+ y = (c->options) & PNG2PDF_OPT_BGCMD;
+ if(x && (!y)) {
+ DK_MEMCPY(&(c->bg_used), &(c->bg_file), sizeof(Png2PdfRGB));
+ } else {
+ DK_MEMCPY(&(c->bg_used), &(c->bg_cmdl), sizeof(Png2PdfRGB));
+ }
+ matter = dkma_ul_to_double((unsigned long)((c->bg_used).r)) / 255.0;
+ matteg = dkma_ul_to_double((unsigned long)((c->bg_used).g)) / 255.0;
+ matteb = dkma_ul_to_double((unsigned long)((c->bg_used).b)) / 255.0;
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) torc = 1;
+ if((c->options) & PNG2PDF_OPT_IMAGEMASK) torc = 1;
+ if((c->options) & PNG2PDF_OPT_INTERPOLATE) createxobject = 1;
+ mix = 0;
+ if(((c->ch) == 2) || ((c->ch) == 4)) {
+ mix = 1;
+ } else {
+ torc = 0;
+ }
+ xru = 0;
+ dkstream_puts(c->os1, "%PDF-");
+ dkstream_puts(c->os1, versions[c->pdf_version]);
+ dkstream_puts(c->os1,str_eol);
+ /* Info */
+ NEXTOBJECT ;
+ infoxru = xru;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_producer); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Catalog */
+ NEXTOBJECT ;
+ rootxru = xru;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_type_catalog); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_pages);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Pages tree */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_type_pages); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_kids); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_ropen);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc); dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc); dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_count); dkstream_puts(c->os1, str_spc);
+ putul(c, 1UL); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Page */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_type_page); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_mediabox); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_ropen);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_cropbox); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_ropen);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_rotate); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_parent); dkstream_puts(c->os1, str_spc);
+ putul(c, (xru-1)); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_resources);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_spc); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_procset); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_ropen);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_pdf);
+ dkstream_puts(c->os1, str_spc);
+ switch(c->ch) {
+ case 1:
+ case 2: {
+ dkstream_puts(c->os1, str_imageb);
+ } break;
+ default: {
+ dkstream_puts(c->os1, str_imagec);
+ } break;
+ }
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rclose); dkstream_puts(c->os1,str_eol);
+ if(torc || createxobject) {
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_xobject);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+3));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_contents);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1, str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Page contents */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_length);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_stream);
+ dkstream_puts(c->os1,str_eol);
+ l1 = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_q); dkstream_puts(c->os1,str_eol);
+#if WRITE_CLIPPATH
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_moveto); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi); dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_lineto); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_lineto); dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_lineto); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_clip); dkstream_puts(c->os1, str_eol);
+#endif
+ if((c->options) & (PNG2PDF_OPT_IMAGEMASK|PNG2PDF_OPT_TRANSPARENCY)) {
+ if((c->options) & PNG2PDF_OPT_FILLBACKGROUND) {
+ switch(c->ch) {
+ case 1: case 2: {
+ putdouble(c, 0.3*matter+0.59*matteg+0.11*matteb);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_g);
+ } break;
+ default: {
+ putdouble(c, matter); dkstream_puts(c->os1, str_spc);
+ putdouble(c, matteg); dkstream_puts(c->os1, str_spc);
+ putdouble(c, matteb); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rgb);
+ } break;
+ }
+ dkstream_puts(c->os1, str_eol);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_hf);
+ dkstream_puts(c->os1, str_eol);
+ }
+ }
+ putul(c, c->wi);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_cm);
+ dkstream_puts(c->os1,str_eol);
+ if(torc || createxobject) {
+ dkstream_puts(c->os1, str_slash);
+ dkstream_puts(c->os1, str_R);
+ xobjxru = xru + 3;
+ putul(c, (xru+3));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_do);
+ dkstream_puts(c->os1,str_eol);
+ } else {
+ /* Bild direkt hier schreiben */
+ dkstream_puts(c->os1, str_BI); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_slashW); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_slashH); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_bpc8);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_slashCS); dkstream_puts(c->os1, str_spc);
+ switch(c->ch) {
+ case 1: case 2: {
+ dkstream_puts(c->os1, str_slashG);
+ } break;
+ default: {
+ dkstream_puts(c->os1, str_slashRGB);
+ } break;
+ }
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_filter_short);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_ID); dkstream_puts(c->os1,str_eol);
+ if(!encoded_contents(c)) {
+
+ back = 0;
+ }
+ dkstream_puts(c->os1, str_EI); dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_Q); dkstream_puts(c->os1,str_eol);
+ l2 = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_endstream);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Stream length */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ putul(c, (l2-l1)); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ if(torc || createxobject) {
+ /* XObject name */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_slash);
+ dkstream_puts(c->os1, str_R);
+ putul(c, xobjxru);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, xobjxru);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ if(torc) {
+ dkstream_puts(c->os1, str_slash);
+ dkstream_puts(c->os1, str_R);
+ putul(c, (2UL+xobjxru));
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (2UL+xobjxru));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Image XObject */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_subtype);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_image);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_colorspace);
+ dkstream_puts(c->os1, str_spc);
+ switch(c->ch) {
+ case 1:
+ case 2: {
+ dkstream_puts(c->os1, str_devicegray);
+ } break;
+ default: {
+ dkstream_puts(c->os1, str_devicergb);
+ } break;
+ }
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_width); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_height); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_bitspercomponent);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 8UL);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_filtera85flate);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_length);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ if((c->options) & PNG2PDF_OPT_INTERPOLATE) {
+ dkstream_puts(c->os1, str_interpolate);
+ dkstream_puts(c->os1, str_eol);
+ }
+ if(torc) {
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ dkstream_puts(c->os1, str_smask);
+ } else {
+ dkstream_puts(c->os1, str_mask);
+ }
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+2));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_stream); dkstream_puts(c->os1,str_eol);
+ l1 = dkstream_get_bytes_written(c->os1);
+ if(!encoded_contents(c)) {
+ back = 0;
+
+ }
+ l2 = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_endstream); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Image XObject stream length */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ putul(c, (l2-l1)); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ }
+ if(torc) {
+ /* image mask */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_type);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_xobject);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_subtype);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_image);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_width);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_height);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_filtera85flate);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_length);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1UL));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ dkstream_puts(c->os1, str_bitspercomponent);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 8UL);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_colorspace);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_devicegray);
+ dkstream_puts(c->os1,str_eol);
+ } else {
+ dkstream_puts(c->os1, str_imagemask_true);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_bitspercomponent);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 1UL);
+ dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_stream);
+ dkstream_puts(c->os1,str_eol);
+ l1 = dkstream_get_bytes_written(c->os1);
+ if(!encoded_image_mask_or_transparency(c)) {
+ back = 0;
+
+ }
+ l2 = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_endstream);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* length */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ putul(c, (l2-l1)); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ }
+ /* xref section */
+ xrefxru = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_xref);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1,str_eol);
+ putul10(c, 0UL);
+ dkstream_puts(c->os1, str_spc);
+ putul5(c, 65535UL);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_f);
+ dkstream_puts(c->os1,str_eol);
+ for(i = 0UL; i < xru; i++) {
+ putul10(c, xr[i]);
+ dkstream_puts(c->os1, str_spc);
+ putul5(c, 0UL);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_n);
+ dkstream_puts(c->os1,str_eol);
+ }
+ /* trailer */
+ dkstream_puts(c->os1, str_trailer);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictopen);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_size);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (1UL+xru));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_info);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 1UL);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_root);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 2UL);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_dictclose);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_startxref);
+ dkstream_puts(c->os1,str_eol);
+ putul(c, xrefxru);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_eof);
+ dkstream_puts(c->os1,str_eol);
+
+ return back;
+}
+
+
+static char str_stdin[] = { "<standard input>" };
+
+
+static int
+run_conversion DK_P1(Png2PdfCmd *,c)
+{
+ int back = 0;
+ int ne, ns, np, alpha;
+ unsigned long y;
+ png_bytep *rowp;
+
+ ne = ns = np = alpha = 0;
+ c->options &= (~PNG2PDF_OPT_HAVE_FILE_BG);
+ /* correct command */
+ if((c->pdf_version) < PNG2PDF_PDF_VERSION_13) {
+ c->options &= (~PNG2PDF_OPT_IMAGEMASK);
+ c->options &= (~PNG2PDF_OPT_TRANSPARENCY);
+ c->options &= (~PNG2PDF_OPT_INVERTLEVELS);
+ c->options &= (~PNG2PDF_OPT_ALPHA_TRANS);
+ } else {
+ if((c->pdf_version) < PNG2PDF_PDF_VERSION_14) {
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ c->options |= PNG2PDF_OPT_IMAGEMASK;
+ }
+ c->options &= (~PNG2PDF_OPT_TRANSPARENCY);
+ }
+ }
+ if((c->options) & PNG2PDF_OPT_MIX) { alpha = 1; }
+ if((c->options) & PNG2PDF_OPT_IMAGEMASK) { alpha = 1; }
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) { alpha = 1; }
+ c->bd = c->ct = c->cu = c->it = c->zt = c->ft = c->ch = 0;
+ c->bgp = &(c->bg);
+ c->pp = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ if(c->pp) {
+ c->pi = png_create_info_struct(c->pp);
+ if(c->pi) {
+ c->rows = NULL;
+#if HAVE_SETJMP_H
+ if(setjmp((c->pp)->jmpbuf) == 0) {
+#endif
+ png_init_io(c->pp, c->inf);
+ png_read_info(c->pp, c->pi);
+ png_get_IHDR(
+ c->pp, c->pi,
+ &(c->wi), &(c->he), &(c->bd), &(c->ct), &(c->it), &(c->zt), &(c->ft)
+ );
+ c->ch = png_get_channels(c->pp, c->pi);
+ c->cu = c->ct;
+
+
+
+
+
+
+
+
+ if(((c->ct) == PNG_COLOR_TYPE_PALETTE) && ((c->bd) <= 8)) {
+ ne = 1;
+ }
+ if(((c->ct) == PNG_COLOR_TYPE_GRAY) && ((c->bd) < 8)) {
+ ne = 1;
+ }
+ if(png_get_valid(c->pp, c->pi, PNG_INFO_tRNS)) {
+ ne = 1;
+ }
+ if((c->bd) > 8) {
+ ns = 1;
+ } else {
+ if((c->bd) < 8) {
+ np = 1;
+ }
+ }
+ if(ne) { png_set_expand(c->pp); }
+ if(ns) { png_set_strip_16(c->pp); }
+ if(np) { png_set_packing(c->pp); }
+ if(alpha) {
+ if(png_get_bKGD(c->pp, c->pi, &(c->bgp))) {
+ c->options |= PNG2PDF_OPT_HAVE_FILE_BG;
+ if((c->ct) & PNG_COLOR_MASK_PALETTE) {
+ png_colorp ptr; int num;
+ if(png_get_PLTE(c->pp, c->pi, &ptr, &num)) {
+ if((c->bgp)->index < num) {
+ if((c->bd) != 8) {
+ (c->bg_file).r = correct_bd(ptr[(c->bgp)->index].red, (c->bd));
+ (c->bg_file).g = correct_bd(ptr[(c->bgp)->index].green, (c->bd));
+ (c->bg_file).b = correct_bd(ptr[(c->bgp)->index].blue, (c->bd));
+ } else {
+ (c->bg_file).r = ptr[(c->bgp)->index].red;
+ (c->bg_file).g = ptr[(c->bgp)->index].green;
+ (c->bg_file).b = ptr[(c->bgp)->index].blue;
+ }
+ } else {
+ /* ##### ERROR: Index out of range */
+ c->options &= (~PNG2PDF_OPT_HAVE_FILE_BG);
+ }
+ } else {
+ /* ERROR: Failed to obtain color palette */
+ c->options &= (~PNG2PDF_OPT_HAVE_FILE_BG);
+ simple_msg(c, DK_LOG_LEVEL_WARNING, 16);
+ }
+ } else {
+ if((c->bd) != 8) {
+ (c->bg_file).r = correct_bd((c->bgp)->red, (c->bd));
+ (c->bg_file).g = correct_bd((c->bgp)->green, (c->bd));
+ (c->bg_file).b = correct_bd((c->bgp)->blue, (c->bd));
+ } else {
+ (c->bg_file).r = (c->bgp)->red;
+ (c->bg_file).g = (c->bgp)->green;
+ (c->bg_file).b = (c->bgp)->blue;
+ }
+ }
+ }
+ } else {
+ if(png_get_bKGD(c->pp, c->pi, &(c->bgp))) {
+ png_set_background(c->pp, c->bgp, PNG_BACKGROUND_GAMMA_FILE,1,1.0);
+ } else {
+ png_set_background(c->pp, &(c->bg), PNG_BACKGROUND_GAMMA_SCREEN,0,1.0);
+ }
+ }
+ /* gamma correction and interlace handling would go here */
+ png_read_update_info(c->pp, c->pi);
+ c->ch = png_get_channels(c->pp, c->pi);
+ c->ct = png_get_color_type(c->pp, c->pi);
+
+
+ c->rowbytes = png_get_rowbytes(c->pp, c->pi);
+ c->rows = dk_new(png_bytep,(c->he));
+ if(c->rows) {
+ back = 1;
+ rowp = c->rows;
+ for(y = 0; y < c->he; y++) {
+ *rowp = dk_new(png_byte,(c->rowbytes));
+ if(!(*rowp)) {
+ back = 0;
+ }
+ rowp++;
+ }
+ if(back) {
+ png_read_image(c->pp, c->rows);
+ back = write_output(c);
+ }
+ rowp = c->rows;
+ for(y = 0; y < c->he; y++) {
+ if(*rowp) { dk_delete((*rowp)); }
+ rowp++;
+ }
+ dk_delete((c->rows));
+ } else {
+ /* ERROR: Failed to allocate memory for rows */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 17);
+ }
+#if HAVE_SETJMP_H
+ } else {
+ char *fn;
+ fn = c->realfilename;
+ if(!fn) {
+ fn = str_stdin;
+ }
+ /* ERROR: Problem while reading PNG */
+ combined_msg(c, DK_LOG_LEVEL_ERROR, 18, 27, fn);
+ if(c->rows) {
+ rowp = c->rows;
+ for(y = 0; y < c->he; y++) {
+ if(*rowp) { dk_delete((*rowp)); }
+ rowp++;
+ }
+ dk_delete((c->rows));
+ }
+ }
+#endif
+ png_destroy_info_struct(c->pp, &(c->pi));
+ } else {
+ /* ERROR: Failed to create PNG info */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 19);
+ }
+ png_destroy_read_struct(&(c->pp), NULL, NULL);
+ } else {
+ /* ERROR: Failed to create PNG reader struct */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 20);
+ }
+ return back;
+}
+
+
+
+int
+png2pdf_for_files DK_P1(Png2PdfCmd *,c)
+{
+ int back = 0;
+ c->os1 = dkstream_for_file(c->of);
+ if(c->os1) {
+ c->os2 = dkof_open(c->os1, 3);
+ if(c->os2) {
+ dkof_set_crnl(c->os2, 1);
+ back = 1;
+ if(!dkof_set(c->os2,0,DK_OF_TYPE_BUFFERED)) { back = 0; }
+ if(!dkof_set(c->os2,1,DK_OF_TYPE_ASCII85)) { back = 0; }
+ if(!dkof_set(c->os2,2,DK_OF_TYPE_FLATE)) { back = 0; }
+ if(back) {
+ back = run_conversion(c);
+ } else {
+ /* ERROR: Failed to set up encoding */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 21);
+ }
+ dkstream_close(c->os2); c->os2 = NULL;
+ } else {
+ /* ERROR: Failed to create encoding stream */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 22);
+ }
+ dkstream_close(c->os1); c->os1 = NULL;
+ } else {
+ /* ERROR: Failed to allocate stream */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 23);
+ }
+ return back;
+}
+
+
+#ifndef LINT
+static char sccs_id[] = {
+"@(#)png2pdf.ctr 1.25 07/18/06 (krause)\tPNG to PDF converter"
+};
+#endif
+
diff --git a/obsolete/support/png2pdf/png2pdf.ctr b/obsolete/support/png2pdf/png2pdf.ctr
new file mode 100644
index 0000000000..dde1195666
--- /dev/null
+++ b/obsolete/support/png2pdf/png2pdf.ctr
@@ -0,0 +1,1848 @@
+/*
+Copyright (c) 2003-2005, Dirk Krause
+All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided
+that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+* Redistributions in binary form must reproduce the above
+ opyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of the Dirk Krause nor the names of
+ its contributors may be used to endorse or promote
+ products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+*/
+
+#define DK_PNG2PDF_C 1
+#include "png2pdf.h"
+
+#if HAVE_SETJMP_H
+#include <setjmp.h>
+#endif
+
+$(trace-include)
+
+
+#define WRITE_CLIPPATH 1
+
+typedef struct {
+ char *key;
+ char *value;
+} key_value_pair;
+
+$*
+ Keys for strings in string table and default values.
+$*
+static key_value_pair for_messages[] = {
+ { "/m/00", "on" },
+ { "/m/01", "off" },
+ { "/m/02", "Mix against a given background" },
+ { "/m/03", "Background from command line overwrites background chunk" },
+ { "/m/04", "Create image mask" },
+ { "/m/05", "Inverted image mask levels" },
+ { "/m/06", "Fill draw area before image writing" },
+ { "/m/07", "PDF format version" },
+ { "/m/08", "Write transparency data to PDF" },
+ { "/m/09", "Alpha channel specifies transparency" },
+ { "/m/10", "Current configuration:" },
+ { "/m/11", "Check file times when running on directory" },
+ { "/m/12", "Processing input file \"" },
+ { "/m/13", "\"." },
+ { "/m/14", "Image interpolation (smooth transitions)" },
+ { "/m/15", "Too many file names!" },
+ { "/m/16", "Failed to obtain color palette from file!" },
+ { "/m/17", "Not enough memory (RAM/swap space) for image data!" },
+ { "/m/18", "Failed to read PNG image from file \"" },
+ { "/m/19", "Failed to create PNG info structure, not enough memory!" },
+ { "/m/20", "Failed to create PNG read structure, not enough memory!" },
+ { "/m/21", "Failed to set up encoding, not enough memory!" },
+ { "/m/22", "Failed to create encoding stream, not enough memory!" },
+ { "/m/23", "Failed to create output stream, not enough memory!" },
+ { "/m/24", "Internal error: Failed to find name for directory entry!"},
+ { "/m/25", "File name \""},
+ { "/m/26", "\" is too long for buffer!"},
+ { "/m/27", "\" (file corrupted or not a PNG?)!"},
+
+};
+static size_t sz_for_messages =
+sizeof(for_messages)/sizeof(key_value_pair);
+
+
+static char *versions[] = {
+ "1.2",
+ "1.3",
+ "1.4",
+ NULL
+};
+
+static char str_minus[] = { "-" };
+
+static char str_threespc[] = { " " };
+
+
+static
+void
+simple_msg DK_P3(Png2PdfCmd *,c, int,l, size_t,nr)
+{
+ if(c) {
+ if((c->a) && (c->msgptr)) {
+ if(nr < sz_for_messages) {
+ char *logmsg[2];
+ logmsg[0] = (c->msgptr)[nr];
+ logmsg[1] = NULL;
+ dkapp_log_msg(c->a,l,logmsg,1);
+ }
+ }
+ }
+}
+
+
+static
+void
+combined_msg DK_P5(Png2PdfCmd *,c, int,l, size_t,n1, size_t,n2, char *,fn)
+{
+ if(c) {
+ if((c->a) && (c->msgptr)) {
+ if((n1 < sz_for_messages) && (n2 < sz_for_messages)) {
+ if(fn) {
+ char *logmsg[4];
+ logmsg[0] = (c->msgptr)[n1];
+ logmsg[1] = fn;
+ logmsg[2] = (c->msgptr)[n2];
+ logmsg[3] = NULL;
+ dkapp_log_msg(c->a,l,logmsg,3);
+ }
+ }
+ }
+ }
+}
+
+static
+int
+mix_colors DK_P3(int,fg, int,bg, int,a)
+{
+ int back = 0;
+ unsigned long f, b, bck;
+ $? "+ mix_colors fg=%d bg=%d a=%d", fg, bg, a
+ f = fg; b = bg;
+ bck = ((a * f) + ((255UL - a) * b)) / 255UL;
+ back = bck; $? "- mix_colors %d", back
+ return back;
+}
+
+static int
+ntsc DK_P3(int,red,int,green,int,blue)
+{
+ int back = 0;
+ unsigned long r, g, b, bck;
+ $? "+ ntsc %d %d %d", red, green, blue
+ r = red; g = green; b = blue;
+ bck = ((54UL * r) + (183UL * g) + (19UL * b)) / 256UL;
+ back = bck;
+ $? "- ntsc %d", back
+ return back;
+}
+
+$*
+ Clean up the cmd structure after we are done.
+ Release memory needed by msgptr
+$*
+void
+png2pdf_uninitialize_cmd DK_P1(Png2PdfCmd *,c)
+{
+ void *ptr;
+ $? "+ png2pdf_uninitialize_cmd %s", TR_PTR(c)
+ if(c) {
+ if(c->msgptr) {
+ ptr = (void *)(c->msgptr);
+ dk_delete(ptr);
+ c->msgptr = NULL;
+ }
+ DK_MEMRES(c,sizeof(Png2PdfCmd));
+ }
+ $? "- png2pdf_uninitialize_cmd"
+}
+
+
+
+$*
+ Reset all command line options except file names.
+$*
+void
+png2pdf_reset_cmd DK_P1(Png2PdfCmd *,c)
+{
+ $? "+ png2pdf_reset_cmd %s", TR_PTR(c)
+ /* mixing against white background by default */
+ (c->bg_file).r = (c->bg_file).g = (c->bg_file).b = 255;
+ (c->bg_cmdl).r = (c->bg_cmdl).g = (c->bg_cmdl).b = 255;
+ (c->bg_file).gray = (c->bg_cmdl).gray = 255;
+ c->pdf_version = PNG2PDF_PDF_VERSION_14;
+ c->options = 0;
+ c->cmd = PNG2PDF_CMD_RUN;
+ $? "- png2pdf_reset_cmd"
+}
+
+
+
+$*
+ Completely reset the cmd structure during initialization.
+$*
+static void
+cmd_reset_completely DK_P1(Png2PdfCmd *,c)
+{
+ $? "+ cmd_reset_completely %s", TR_PTR(c)
+ png2pdf_reset_cmd(c);
+ c->a = NULL;
+ c->inputfilename = NULL;
+ c->outputfilename = NULL;
+ c->realfilename = NULL;
+ c->msgptr = NULL;
+ c->error_code = 0;
+ $? "- cmd_reset_completely"
+}
+
+
+
+typedef char *CPTR;
+
+
+
+$*
+ Initialize the command structure.
+ Return 1 on success, 0 on error.
+ The msgptr array for the messages is allocated
+ dynamically.
+$*
+int
+png2pdf_initialize_cmd DK_P2(Png2PdfCmd *,c,dk_app_t *,a)
+{
+ int back = 0;
+ dk_string_finder_t *sf;
+ size_t i;
+ $? "+ png2pdf_initialize_cmd %s %s", TR_PTR(c), TR_PTR(a)
+ if(c) {
+ cmd_reset_completely(c);
+ c->a = a;
+ sf = dk_new(dk_string_finder_t,(1+sz_for_messages));
+ c->msgptr = dk_new(CPTR,sz_for_messages);
+ if(sf && (c->msgptr)) {
+ back = 1;
+ for(i = 0; i < sz_for_messages; i++) {
+ sf[i].key = for_messages[i].key;
+ sf[i].default_value = for_messages[i].value;
+ sf[i].value_pointer = &((c->msgptr)[i]);
+ }
+ i = sz_for_messages;
+ sf[i].key = NULL; sf[i].default_value = NULL;
+ sf[i].value_pointer = NULL;
+ if(a) {
+ dkapp_find_multi(a, sf, "png2pdf");
+ } else {
+ for(i = 0; i < sz_for_messages; i++) {
+ (c->msgptr)[i] = for_messages[i].value;
+ }
+ }
+ $!trace-code if(dktrace_file()) {
+ $!trace-code for(i = 0; i < sz_for_messages; i++) {
+ $!trace-code fprintf(dktrace_file(), "i=%03u s=\"%s\"\n", i, (c->msgptr)[i]);
+ $!trace-code }
+ $!trace-code }
+ dk_delete(sf);
+ } else {
+ if(sf) {
+ dk_delete(sf);
+ } else {
+ if(a) {
+ dkapp_err_memory(a,sizeof(dk_string_finder_t),sz_for_messages);
+ }
+ }
+ if(c->msgptr) {
+ dk_delete(c->msgptr);
+ c->msgptr = NULL;
+ } else {
+ if(a) {
+ dkapp_err_memory(a,sizeof(CPTR),sz_for_messages);
+ }
+ }
+ }
+ if(!back) {
+ png2pdf_uninitialize_cmd(c);
+ }
+ }
+ $? "- png2pdf_initialize_cmd %d", back
+ return back;
+}
+
+
+
+static char seps[] = { " \t:," };
+
+static int
+correct_range DK_P3(int,orig,int,min,int,max)
+{
+ int back = orig;
+ if(orig < min) back = min;
+ if(orig > max) back = max;
+ return back;
+}
+
+static void
+extract_background DK_P3(Png2PdfCmd *,c,char *,ptr,int,noisy)
+{
+ char buffer[128], *s1, *s2, *s3;
+ int success = 0, i1, i2, i3, have_dot;
+ $? "+ extract_background %s %s", TR_PTR(c), TR_PTR(ptr)
+ if(strlen(ptr) < sizeof(buffer)) {
+ strcpy(buffer, ptr);
+ s1 = dkstr_start(buffer, NULL);
+ if(s1) {
+ s2 = dkstr_next(s1, seps);
+ if(s2) {
+ s3 = dkstr_next(s2, seps);
+ if(s3) {
+ have_dot = 0;
+ if(dkstr_chr(s1, '.')) have_dot = 1;
+ if(dkstr_chr(s1, '.')) have_dot = 1;
+ if(dkstr_chr(s1, '.')) have_dot = 1;
+ if(have_dot) {
+ double d1, d2, d3;
+ if(sscanf(s1, "%lf", &d1) == 1) success++;
+ if(sscanf(s2, "%lf", &d2) == 2) success++;
+ if(sscanf(s3, "%lf", &d3) == 3) success++;
+ i1 = (int)dkma_double_to_ul(
+ dkma_mul_double(d1, 255.0)
+ );
+ i2 = (int)dkma_double_to_ul(
+ dkma_mul_double(d2, 255.0)
+ );
+ i3 = (int)dkma_double_to_ul(
+ dkma_mul_double(d3, 255.0)
+ );
+ } else {
+ if(sscanf(s1, "%d", &i1) == 1) success++;
+ if(sscanf(s2, "%d", &i2) == 1) success++;
+ if(sscanf(s3, "%d", &i3) == 1) success++;
+ }
+ i1 = correct_range(i1,0,255);
+ i2 = correct_range(i2,0,255);
+ i3 = correct_range(i3,0,255);
+ if(success != 3) success = 0;
+ if(success) {
+ (c->bg_cmdl).r = i1;
+ (c->bg_cmdl).g = i2;
+ (c->bg_cmdl).b = i3;
+ (c->bg_cmdl).gray = ntsc(i1,i2,i3);
+ c->options |= PNG2PDF_OPT_MIX; $? ". set mix"
+ $? ". cmd background = %d %d %d", i1, i2, i3
+ }
+ }
+ }
+ }
+ }
+ if(!success) {
+ c->options &= (~PNG2PDF_OPT_MIX); $? ". reset mix"
+ if(dkstr_is_bool(ptr) || (*ptr == '-') || (*ptr == '+')) {
+ switch(*ptr) {
+ case '+': c->options |= PNG2PDF_OPT_MIX; $? ". set mix"
+ break;
+ case '-': c->options &= (~PNG2PDF_OPT_MIX); $? ". reset mix"
+ break;
+ default: {
+ if(dkstr_is_on(ptr)) {
+ c->options |= PNG2PDF_OPT_MIX; $? ". set mix"
+ } else {
+ c->options &= (~PNG2PDF_OPT_MIX); $? ". reset mix"
+ }
+ } break;
+ }
+ } else {
+ if(noisy) { $? "! set errorcode"
+ c->error_code = PNG2PDF_ERR_BACKGROUND_WRONG;
+ }
+ }
+ } $? "- extract_background %d %d", success, ((c->options) & PNG2PDF_OPT_MIX)
+}
+
+
+
+static char pk_mix_bg[] = { "/mix" };
+static char pk_bg_spec[] = { "/bg/cmd" };
+static char pk_image_mask[] = { "/image-mask" };
+static char pk_inverted_levels[] = { "/invert-levels" };
+static char pk_fill_background[] = { "/fill-background" };
+static char pk_pdf_level[] = { "/pdf-level" };
+static char pk_transparency[] = { "/transparency" };
+static char pk_alphatrans[] = { "/alpha-transparency" };
+static char pk_file_time_check[] = { "/file-time-check" };
+static char pk_interpolate[] = { "/image/interpolate" };
+
+
+static char str_on[] = { "on" };
+static char str_off[] = { "off" };
+
+static void
+save_bool_to_pref DK_P3(Png2PdfCmd *,c,int,v,char *,k)
+{
+ char *t;
+ $? "+ save_bool_to_pref %s %d %s", TR_PTR(c), v, TR_STR(k)
+ t = str_off;
+ if((c->options) & v) {
+ t = str_on;
+ }
+ dkapp_set_pref(c->a, k, t);
+ $? "- save_bool_to_pref %s %s", TR_STR(k), TR_STR(t)
+}
+
+
+
+void
+png2pdf_save_configuration DK_P1(Png2PdfCmd *,c)
+{
+ char buffer[128];
+ $? "+ png2pdf_save_configuration %s", TR_PTR(c)
+ if(c->a) {
+ $? ". application ok"
+ strcpy(buffer, str_minus);
+ if((c->options) & PNG2PDF_OPT_MIX) {
+ sprintf(
+ buffer, "%d,%d,%d", (c->bg_cmdl).r, (c->bg_cmdl).g, (c->bg_cmdl).b
+ );
+ }
+ dkapp_set_pref(c->a, pk_mix_bg, buffer);
+ dkapp_set_pref(c->a, pk_pdf_level, versions[c->pdf_version]);
+ save_bool_to_pref(c, PNG2PDF_OPT_BGCMD, pk_bg_spec);
+ save_bool_to_pref(c, PNG2PDF_OPT_IMAGEMASK, pk_image_mask);
+ save_bool_to_pref(c, PNG2PDF_OPT_INVERTLEVELS, pk_inverted_levels);
+ save_bool_to_pref(c, PNG2PDF_OPT_FILLBACKGROUND, pk_fill_background);
+ save_bool_to_pref(c, PNG2PDF_OPT_TRANSPARENCY, pk_transparency);
+ save_bool_to_pref(c, PNG2PDF_OPT_ALPHA_TRANS, pk_alphatrans);
+ save_bool_to_pref(c, PNG2PDF_OPT_MAKE, pk_file_time_check);
+ save_bool_to_pref(c, PNG2PDF_OPT_INTERPOLATE, pk_interpolate);
+ }
+ $? "- png2pdf_save_configuration"
+}
+
+
+
+static void
+print_right_aligned DK_P2(char *,str,size_t,sz)
+{
+ size_t x = 0;
+ if(str) x = strlen(str);
+ while(x++ < sz) fputc(' ', stdout);
+ if(str) fputs(str, stdout);
+}
+
+
+
+void
+png2pdf_print_configuration DK_P1(Png2PdfCmd *,c)
+{
+ char buffer[128];
+ size_t sz, sz1;
+ $? "+ png2pdf_print_configuration %s %d", TR_PTR(c), ((c->options) & PNG2PDF_OPT_MIX)
+ strcpy(buffer, str_minus);
+ if((c->options) & PNG2PDF_OPT_MIX) {
+ sprintf(buffer, "%d,%d,%d",
+ (c->bg_cmdl).r, (c->bg_cmdl).g, (c->bg_cmdl).b
+ );
+ }
+ sz = strlen(buffer);
+ sz1 = strlen((c->msgptr)[0]);
+ if(sz1 > sz) sz = sz1;
+ sz1 = strlen((c->msgptr)[1]);
+ if(sz1 > sz) sz = sz1;
+ fputs((c->msgptr)[10], stdout); fputc('\n', stdout);
+ fputs("-p", stdout); fputs(str_threespc, stdout);
+ print_right_aligned(versions[c->pdf_version], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[7], stdout);
+ fputc('\n', stdout);
+ fputs("-m", stdout); fputs(str_threespc, stdout);
+ print_right_aligned(buffer, sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[2], stdout);
+ fputc('\n', stdout);
+ fputs("-s", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_BGCMD)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[3], stdout);
+ fputc('\n', stdout);
+ fputs("-i", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_IMAGEMASK)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[4], stdout);
+ fputc('\n', stdout);
+ fputs("-a", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_TRANSPARENCY)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[8], stdout);
+ fputc('\n', stdout);
+ fputs("-l", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_INVERTLEVELS)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[5], stdout);
+ fputc('\n', stdout);
+ fputs("-t", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_ALPHA_TRANS)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[9], stdout);
+ fputc('\n', stdout);
+ fputs("-b", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_FILLBACKGROUND)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[6], stdout);
+ fputc('\n', stdout);
+ fputs("-n", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_INTERPOLATE)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[14], stdout);
+ fputc('\n', stdout);
+ fputs("-f", stdout); fputs(str_threespc, stdout);
+ print_right_aligned((c->msgptr)[((c->options) & PNG2PDF_OPT_MAKE)?0:1], sz);
+ fputs(str_threespc, stdout); fputs((c->msgptr)[11], stdout);
+ fputc('\n', stdout);
+ $? "- png2pdf_print_configuration"
+}
+
+
+
+static void
+flag_from_pref DK_P3(Png2PdfCmd *,c,int,v,char *,pk)
+{
+ char buffer[128], *s1;
+ $? "+ flag_from_pref %s %d %s", TR_PTR(c), v, TR_STR(pk)
+ if(c->a) {
+ $? ". app ok"
+ if(dkapp_get_pref(c->a,pk,buffer,sizeof(buffer),0)) {
+ s1 = dkstr_start(buffer, NULL);
+ $? ". \"%s\"=\"%s\"", TR_STR(pk), TR_STR(s1)
+ if(s1) {
+ dkstr_chomp(s1, NULL);
+ if(dkstr_is_on(s1)) { $? ". on"
+ c->options |= v;
+ } else { $? ". off"
+ c->options &= (~v);
+ }
+ } else { $? ". off"
+ c->options &= (~v);
+ }
+ }
+ }
+ $? "- flag_from_pref"
+}
+
+static void
+set_pdf_version DK_P2(Png2PdfCmd *,c,char *,ptr)
+{
+ char *s1;
+ int back;
+ $? "+ set_pdf_version %s %s", TR_PTR(c), TR_STR(ptr)
+ s1 = dkstr_start(ptr, NULL);
+ if(s1) {
+ dkstr_chomp(s1, NULL);
+ back = dkstr_array_index(versions, s1, 0);
+ if(back < 0) back = 0;
+ if(back > PNG2PDF_PDF_VERSION_MAX) back = PNG2PDF_PDF_VERSION_MAX;
+ c->pdf_version = back;
+ } $? "- set_pdf_version %d", back
+}
+
+
+
+static void
+configure_from_app DK_P1(Png2PdfCmd *,c)
+{
+ char buffer[128];
+ $? "+ configure_from_app %s", TR_PTR(c)
+ if(c->a) { $? ". app ok"
+ if(dkapp_get_pref(c->a, pk_mix_bg, buffer, sizeof(buffer), 0)) {
+ extract_background(c, buffer, 0);
+ }
+ if(dkapp_get_pref(c->a, pk_pdf_level, buffer, sizeof(buffer), 0)) {
+ set_pdf_version(c, buffer);
+ }
+ flag_from_pref(c, PNG2PDF_OPT_BGCMD, pk_bg_spec);
+ flag_from_pref(c, PNG2PDF_OPT_IMAGEMASK, pk_image_mask);
+ flag_from_pref(c, PNG2PDF_OPT_TRANSPARENCY, pk_transparency);
+ flag_from_pref(c, PNG2PDF_OPT_INVERTLEVELS, pk_inverted_levels);
+ flag_from_pref(c, PNG2PDF_OPT_FILLBACKGROUND, pk_fill_background);
+ flag_from_pref(c, PNG2PDF_OPT_ALPHA_TRANS, pk_alphatrans);
+ flag_from_pref(c, PNG2PDF_OPT_MAKE, pk_file_time_check);
+ flag_from_pref(c, PNG2PDF_OPT_INTERPOLATE, pk_interpolate);
+ } $? "- configure_from_app"
+}
+
+static void
+flag_from_opt_inv DK_P3(Png2PdfCmd *,c,int,v,char *,ptr)
+{
+ int back = 0;
+ $? "+ flag_from_opt_inv %s %d %s", TR_PTR(c), v, TR_STR(ptr)
+ if(ptr) {
+ if(*ptr) {
+ switch(*ptr) {
+ case '+': back = 1; break;
+ case '-': back = 0; break;
+ default : back = dkstr_is_on(ptr); break;
+ }
+ } else {
+ back = 1;
+ }
+ } else {
+ back = 1;
+ }
+ back = (back ? 0 : 1);
+ if(back) {
+ c->options |= v;
+ } else {
+ c->options &= (~v);
+ } $? "- flag_from_opt_inv %d", back
+}
+
+static void
+flag_from_opt DK_P3(Png2PdfCmd *,c,int,v,char *,ptr)
+{
+ int back = 0;
+ $? "+ flag_from_opt %s %d %s", TR_PTR(c),v,TR_STR(ptr)
+ if(ptr) {
+ if(*ptr) {
+ switch(*ptr) {
+ case '+': back = 1; break;
+ case '-': back = 0; break;
+ default : back = dkstr_is_on(ptr); break;
+ }
+ } else {
+ back = 1;
+ }
+ } else {
+ back = 1;
+ }
+ if(back) {
+ c->options |= v;
+ } else {
+ c->options &= (~v);
+ } $? "- flag_from_opt %d", back
+}
+
+
+
+static char *long_option_keywords[] = {
+ /* 0 */ "v$ersion",
+ /* 1 */ "h$elp",
+ /* 2 */ "c$onfigure",
+ /* 3 */ "s$how-configuration",
+ /* 4 */ "u$nconfigure",
+ /* 5 */ "r$eset",
+ /* 6 */ "mix-b$ackground",
+ /* 7 */ "mix-s$pecified",
+ /* 8 */ "im$age-mask",
+ /* 9 */ "inv$ert-levels",
+ /* 10 */ "fill$-background",
+ /* 11 */ "p$df-level",
+ /* 12 */ "t$ransparency",
+ /* 13 */ "a$lpha-transparency",
+ /* 14 */ "file$-time-check",
+ /* 15 */ "int$erpolation",
+ NULL
+};
+
+
+
+$*
+ Process the command line arguments.
+$*
+void
+png2pdf_process_args DK_P3(Png2PdfCmd *,c,int,argc,char **,argv)
+{
+ char *ptr, *valptr, **lfdptr;
+ int i;
+ $? "+ png2pdf_process_args %s %d %s", TR_PTR(c),argc,TR_PTR(argv)
+ if(c->a) { $? ". app ok"
+ configure_from_app(c);
+ }
+ lfdptr = argv; lfdptr++; i = 1;
+ while(i < argc) {
+ ptr = *lfdptr;
+ if(*ptr == '-') { $? ". option"
+ ptr++;
+ switch(*ptr) {
+ case '-' : { $? ". long option"
+ ptr++;
+ valptr = dkstr_chr(ptr, '=');
+ if(valptr) { *(valptr++) = '\0'; }
+ switch(dkstr_array_abbr(long_option_keywords, ptr, '$', 1)) {
+ case 0: {
+ c->cmd |= PNG2PDF_CMD_VERSION;
+ } break;
+ case 1: {
+ c->cmd |= PNG2PDF_CMD_HELP;
+ } break;
+ case 2: {
+ c->cmd |= PNG2PDF_CMD_CONFIGURE;
+ } break;
+ case 3: {
+ c->cmd |= PNG2PDF_CMD_SHOWCONF;
+ } break;
+ case 4: {
+ c->cmd |= PNG2PDF_CMD_UNCONFIGURE;
+ } break;
+ case 5: {
+ png2pdf_reset_cmd(c);
+ } break;
+ case 6: {
+ if(valptr) {
+ extract_background(c, valptr, 1);
+ } else {
+ c->options |= PNG2PDF_OPT_MIX;
+ }
+ } break;
+ case 7: {
+ flag_from_opt(c, PNG2PDF_OPT_BGCMD, valptr);
+ } break;
+ case 8: {
+ flag_from_opt(c, PNG2PDF_OPT_IMAGEMASK, valptr);
+ } break;
+ case 9: {
+ flag_from_opt(c, PNG2PDF_OPT_IMAGEMASK, valptr);
+ } break;
+ case 10: {
+ flag_from_opt(c, PNG2PDF_OPT_FILLBACKGROUND, valptr);
+ } break;
+ case 11: {
+ set_pdf_version(c, valptr);
+ } break;
+ case 12: {
+ flag_from_opt(c, PNG2PDF_OPT_TRANSPARENCY, valptr);
+ } break;
+ case 13: {
+ flag_from_opt(c, PNG2PDF_OPT_ALPHA_TRANS, valptr);
+ } break;
+ case 14: {
+ flag_from_opt(c, PNG2PDF_OPT_MAKE, valptr);
+ } break;
+ case 15: {
+ flag_from_opt(c, PNG2PDF_OPT_INTERPOLATE, valptr);
+ } break;
+ }
+ } break;
+ case 'v' : { $? ". version"
+ c->cmd |= PNG2PDF_CMD_VERSION;
+ } break;
+ case 'h' : { $? ". help"
+ c->cmd |= PNG2PDF_CMD_HELP;
+ } break;
+ case 'c' : { $? ". configure"
+ c->cmd |= PNG2PDF_CMD_CONFIGURE;
+ } break;
+ case 'C' : { $? ". show configuration"
+ c->cmd |= PNG2PDF_CMD_SHOWCONF;
+ } break;
+ case 'r' : { $? ". reset"
+ png2pdf_reset_cmd(c);
+ } break;
+ case 'u' : { $? ". unconfigure"
+ c->cmd |= PNG2PDF_CMD_UNCONFIGURE;
+ } break;
+ case 'm' : { $? ". mix against background"
+ ptr++;
+ if(!(*ptr)) {
+ lfdptr++; i++; ptr = NULL;
+ if(i < argc) { ptr = *lfdptr; }
+ }
+ if(ptr) {
+ if(*ptr) {
+ extract_background(c, ptr, 1);
+ }
+ }
+ } break;
+ case 's' : { $? ". specified background"
+ flag_from_opt(c, PNG2PDF_OPT_BGCMD, ++ptr);
+ } break;
+ case 'i' : { $? ". create image mask"
+ flag_from_opt(c, PNG2PDF_OPT_IMAGEMASK, ++ptr);
+ } break;
+ case 'l' : { $? ". levels inverted"
+ flag_from_opt(c, PNG2PDF_OPT_INVERTLEVELS, ++ptr);
+ } break;
+ case 'b' : { $? ". background filling"
+ flag_from_opt(c, PNG2PDF_OPT_FILLBACKGROUND, ++ptr);
+ } break;
+ case 'p' : { $? ". PDF format version"
+ ptr++;
+ if(!(*ptr)) {
+ ptr = NULL;
+ lfdptr++; i++;
+ if(i < argc) { ptr = *lfdptr; }
+ }
+ if(ptr) {
+ if(*ptr) {
+ set_pdf_version(c, ptr);
+ }
+ }
+ } break;
+ case 'a' : { $? ". write transparency"
+ flag_from_opt(c, PNG2PDF_OPT_TRANSPARENCY, ++ptr);
+ } break;
+ case 't' : { $? ". alpha=opacity"
+ flag_from_opt(c, PNG2PDF_OPT_ALPHA_TRANS, ++ptr);
+ } break;
+ case 'f' : { $? ". file time check"
+ flag_from_opt(c, PNG2PDF_OPT_MAKE, ++ptr);
+ } break;
+ case 'n' : {
+ flag_from_opt(c, PNG2PDF_OPT_INTERPOLATE, ++ptr);
+ } break;
+ }
+ } else { $? ". file name"
+ if(c->inputfilename) {
+ if(c->outputfilename) {
+ /* ERROR: Too many file names */
+ c->error_code = PNG2PDF_ERR_TOO_MANY_FILENAMES;
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 15);
+ } else {
+ c->outputfilename = ptr;
+ }
+ } else {
+ c->inputfilename = ptr;
+ }
+ }
+ lfdptr++; i++;
+ } $? "- png2pdf_process_args"
+}
+
+
+static int
+correct_bd DK_P2(int,v,int,bd)
+{
+ unsigned long a, b, back;
+ $? "+ correct_bd %d (%d)", v, bd
+ a = v; b = bd;
+ back = (255UL * a) / ((2UL ^ b) - 1UL);
+ $? "- correct_bd %d", (int)back
+ return (int)back;
+}
+
+#ifndef VERSNUMB
+#define VERSNUMB "developer"
+#endif
+
+
+static char str_eol[] = { "\r\n" };
+static char str_spc[] = { " " };
+static char str_obj[] = { "obj" };
+static char str_endobj[] = { "endobj" };
+static char str_dictopen[] = { "<<" };
+static char str_dictclose[] = { ">>" };
+static char str_bropen[] = { "(" };
+static char str_brclose[] = { ")" };
+static char str_ropen[] = { "[" };
+static char str_rclose[] = { "]" };
+static char str_producer[] = { "/Producer (png2pdf" VERSNUMB ")" };
+static char str_0[] = { "0" };
+static char str_R[] = { "R" };
+static char str_type_catalog[] = { "/Type /Catalog" };
+static char str_pages[] = { "/Pages" };
+static char str_type_pages[] = { "/Type /Pages" };
+static char str_type_page[] = { "/Type /Page" };
+static char str_kids[] = { "/Kids" };
+static char str_count[] = { "/Count" };
+static char str_mediabox[] = { "/MediaBox" };
+static char str_cropbox[] = { "/CropBox" };
+static char str_rotate[] = { "/Rotate" };
+static char str_parent[] = { "/Parent" };
+static char str_resources[] = { "/Resources" };
+static char str_procset[] = { "/ProcSet" };
+static char str_pdf[] = { "/PDF" };
+static char str_imagec[] = { "/ImageC" };
+static char str_imageb[] = { "/ImageB" };
+static char str_xobject[] = { "/XObject" };
+static char str_imagemask_true[] = { "/ImageMask true" };
+static char str_contents[] = { "/Contents" };
+static char str_length[] = { "/Length" };
+static char str_stream[] = { "stream" };
+static char str_endstream[] = { "endstream" };
+static char str_subtype[] = { "/Subtype" };
+static char str_image[] = { "/Image" };
+static char str_colorspace[] = { "/ColorSpace" };
+static char str_matte[] = { "/Matte" };
+static char str_g[] = { "g" };
+static char str_rgb[] = { "rg" };
+static char str_hf[] = { "re f" };
+static char str_devicergb[] = { "/DeviceRGB" };
+static char str_devicegray[] = { "/DeviceGray" };
+static char str_width[] = { "/Width" };
+static char str_height[] = { "/Height" };
+static char str_slashH[] = { "/H" };
+static char str_slashW[] = { "/W" };
+static char str_bpc8[] = { "/BPC 8" };
+static char str_slashCS[] = { "/CS" };
+static char str_slashG[] = { "/G" };
+static char str_slashRGB[] = { "/RGB" };
+static char str_filter_short[] = { "/F [/A85 /Fl]" };
+static char str_ID[] = { "ID" };
+static char str_BI[] = { "BI" };
+static char str_EI[] = { "EI" };
+static char str_bitspercomponent[] = { "/BitsPerComponent" };
+static char str_filtera85flate[]={ "/Filter [ /ASCII85Decode /FlateDecode ]" };
+static char str_slash[] = { "/" };
+static char str_mask[] = { "/Mask" };
+static char str_smask[] = { "/SMask" };
+static char str_type[] = { "/Type" };
+static char str_n[] = { "n" };
+static char str_f[] = { "f" };
+static char str_xref[] = { "xref" };
+static char str_trailer[] = { "trailer" };
+static char str_startxref[] = { "startxref" };
+static char str_eof[] = { "%%EOF" };
+static char str_size[] = { "/Size" };
+static char str_info[] = { "/Info" };
+static char str_root[] = { "/Root" };
+static char str_q[] = { "q" };
+static char str_Q[] = { "Q" };
+static char str_cm[] = { "cm" };
+static char str_do[] = { "Do" };
+static char str_interpolate[] = { "/Interpolate true" };
+static char str_moveto[] = { "m" };
+static char str_lineto[] = { "l" };
+static char str_clip[] = { "h W n" };
+
+#define NEXTOBJECT xr[xru++] = dkstream_get_bytes_written(c->os1)
+
+static void
+putdouble DK_P2(Png2PdfCmd *,c,double,d)
+{
+ char buffer[32];
+ sprintf(buffer, "%lf", d);
+ dkstream_puts(c->os1, buffer);
+}
+
+
+
+static void
+putul5 DK_P2(Png2PdfCmd *,c,unsigned long,x)
+{
+ char buffer[32];
+ sprintf(buffer, "%05lu", x);
+ dkstream_puts(c->os1, buffer);
+}
+
+static void
+putul10 DK_P2(Png2PdfCmd *,c,unsigned long,x)
+{
+ char buffer[32];
+ sprintf(buffer, "%010lu", x);
+ dkstream_puts(c->os1, buffer);
+}
+static void
+putul DK_P2(Png2PdfCmd *,c,unsigned long,x)
+{
+ char buffer[32];
+ sprintf(buffer, "%lu", x);
+ dkstream_puts(c->os1, buffer);
+}
+
+static void
+open_object DK_P2(Png2PdfCmd *,c,unsigned long,x)
+{
+ putul(c,x);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_obj);
+ dkstream_puts(c->os1,str_eol);
+}
+
+
+static int
+encoded_contents DK_P1(Png2PdfCmd *,c)
+{
+ int back = 1;
+ int fr, fg, fb, br, bg, bb, t;
+ char buffer[4];
+ unsigned long x, y;
+ png_bytep row, *rowp;
+ $? "+ encoded_contents"
+ if(!dkof_start_chunk(c->os2)) {
+ back = 0;
+ }
+ rowp = c->rows;
+ br = (c->bg_used).r; bg = (c->bg_used).g; bb = (c->bg_used).b;
+ for(y = 0UL; y < (c->he); y++) {
+ row = *(rowp++);
+ for(x = 0UL; x < (c->wi); x++) {
+ switch(c->ch) {
+ case 4: {
+ fr = row[x*((unsigned long)(c->ch))];
+ fg = row[1UL+x*((unsigned long)(c->ch))];
+ fb = row[2UL+x*((unsigned long)(c->ch))];
+ t = row[3UL+x*((unsigned long)(c->ch))];
+ if((c->options) & PNG2PDF_OPT_ALPHA_TRANS) {
+ t = 255 -t;
+ }
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ buffer[0] = fr; buffer[1] = fg; buffer[2] = fb;
+ } else {
+ buffer[0] = mix_colors(fr, br, t);
+ buffer[1] = mix_colors(fg, bg, t);
+ buffer[2] = mix_colors(fb, bb, t);
+ }
+ if(dkstream_write(c->os2, buffer, 3) != 3) {
+ back = 0;
+ }
+ } break;
+ case 3: {
+ fr = row[x*((unsigned long)(c->ch))];
+ fg = row[1UL+x*((unsigned long)(c->ch))];
+ fb = row[2UL+x*((unsigned long)(c->ch))];
+ buffer[0] = fr;
+ buffer[1] = fg;
+ buffer[2] = fb;
+ if(dkstream_write(c->os2, buffer, 3) != 3) {
+ back = 0;
+ }
+ } break;
+ case 2: {
+ fr = row[x*((unsigned long)(c->ch))];
+ t = row[1UL+x*((unsigned long)(c->ch))];
+ if((c->options) & PNG2PDF_OPT_ALPHA_TRANS) {
+ t = 255 - t;
+ }
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ buffer[0] = fr;
+ } else {
+ buffer[0] = mix_colors(fr, (c->bg_used).gray, t);
+ }
+ if(dkstream_write(c->os2, buffer, 1) != 1) {
+ back = 0;
+ }
+ } break;
+ case 1: {
+ fr = row[x*((unsigned long)(c->ch))];
+ buffer[0] = fr;
+ if(dkstream_write(c->os2, buffer, 1) != 1) {
+ back = 0;
+ }
+ } break;
+ }
+ }
+ }
+ if(!dkof_end_chunk(c->os2)) {
+ back = 0;
+ } $? "- encoded_contents %d", back
+ return back;
+}
+
+
+static unsigned char bits[] = {
+ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01
+};
+
+static int
+encoded_image_mask_or_transparency DK_P1(Png2PdfCmd *,c)
+{
+ int back = 1;
+ unsigned char uc; size_t bitno;
+ png_bytep row, *rowp;
+ unsigned long x, y, t;
+ $? "+ encoded_image_mask_or_transparency"
+ uc = 0; bitno = 0;
+ rowp = c->rows;
+ if(!dkof_start_chunk(c->os2)) {
+ back = 0;
+ $? "! failed to start chunk"
+ }
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ for(y = 0UL; y < (c->he); y++) {
+ row = *(rowp++);
+ for(x = 0UL; x < (c->wi); x++) {
+ t = row[((unsigned long)(c->ch))*(x+1UL)-1UL];
+ if((c->options) & PNG2PDF_OPT_ALPHA_TRANS) {
+ t = 255 - t;
+ }
+ uc = (unsigned char)t;
+ if(dkstream_write(c->os2, (void *)(&uc), 1) != 1) {
+ back = 0;
+ $? "! write failed"
+ }
+ }
+ }
+ } else {
+ for(y = 0UL; y < (c->he); y++) {
+ row = *(rowp++);
+ for(x = 0UL; x < (c->wi); x++) {
+ t = row[((unsigned long)(c->ch))*(x+1UL)-1UL];
+ if((c->options) & PNG2PDF_OPT_ALPHA_TRANS) {
+ t = 255 - t;
+ }
+ if((c->options) & PNG2PDF_OPT_INVERTLEVELS) {
+ if(t < 255) { t = 0; }
+ }
+ if(!t) {
+ uc |= bits[bitno];
+ }
+ bitno++;
+ if(bitno >= 8) {
+ if(dkstream_write(c->os2, (void *)(&uc), 1) != 1) {
+ back = 0;
+ $? "! write ffailed"
+ }
+ bitno = 0; uc = 0;
+ }
+ }
+ /* padding here */
+ if(bitno) {
+ if(dkstream_write(c->os2, (void *)(&uc), 1) != 1) {
+ back = 0;
+ $? "! write failed"
+ }
+ }
+ bitno = 0; uc = 0;
+ }
+ }
+ if(!dkof_end_chunk(c->os2)) {
+ back = 0;
+ $? "! error while ending chunk"
+ }
+ $? "- encoded_image_mask_or_transparency %d", back
+ return back;
+}
+
+static int
+write_output DK_P1(Png2PdfCmd *,c)
+{
+ int back = 1;
+ unsigned long xr[20];
+ size_t xru;
+ unsigned long x, y, rootxru, infoxru, l1, l2, xobjxru;
+ unsigned long xrefxru, i;
+ int mix, torc, createxobject;
+ double matter, matteg, matteb;
+
+ $? "+ write_output"
+ torc = 0; createxobject = 0;
+ x = (c->options) & PNG2PDF_OPT_HAVE_FILE_BG;
+ y = (c->options) & PNG2PDF_OPT_BGCMD;
+ if(x && (!y)) {
+ DK_MEMCPY(&(c->bg_used), &(c->bg_file), sizeof(Png2PdfRGB));
+ } else {
+ DK_MEMCPY(&(c->bg_used), &(c->bg_cmdl), sizeof(Png2PdfRGB));
+ }
+ matter = dkma_ul_to_double((unsigned long)((c->bg_used).r)) / 255.0;
+ matteg = dkma_ul_to_double((unsigned long)((c->bg_used).g)) / 255.0;
+ matteb = dkma_ul_to_double((unsigned long)((c->bg_used).b)) / 255.0;
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) torc = 1;
+ if((c->options) & PNG2PDF_OPT_IMAGEMASK) torc = 1;
+ if((c->options) & PNG2PDF_OPT_INTERPOLATE) createxobject = 1;
+ mix = 0;
+ if(((c->ch) == 2) || ((c->ch) == 4)) {
+ mix = 1;
+ } else {
+ torc = 0;
+ }
+ xru = 0;
+ dkstream_puts(c->os1, "%PDF-");
+ dkstream_puts(c->os1, versions[c->pdf_version]);
+ dkstream_puts(c->os1,str_eol);
+ /* Info */
+ NEXTOBJECT ;
+ infoxru = xru;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_producer); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Catalog */
+ NEXTOBJECT ;
+ rootxru = xru;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_type_catalog); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_pages);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Pages tree */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_type_pages); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_kids); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_ropen);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc); dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc); dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_count); dkstream_puts(c->os1, str_spc);
+ putul(c, 1UL); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Page */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_type_page); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_mediabox); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_ropen);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_cropbox); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_ropen);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_rotate); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_parent); dkstream_puts(c->os1, str_spc);
+ putul(c, (xru-1)); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_resources);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_spc); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_procset); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_ropen);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_pdf);
+ dkstream_puts(c->os1, str_spc);
+ switch(c->ch) {
+ case 1:
+ case 2: {
+ dkstream_puts(c->os1, str_imageb);
+ } break;
+ default: {
+ dkstream_puts(c->os1, str_imagec);
+ } break;
+ }
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rclose); dkstream_puts(c->os1,str_eol);
+ if(torc || createxobject) {
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_xobject);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+3));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_contents);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1, str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Page contents */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_length);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_stream);
+ dkstream_puts(c->os1,str_eol);
+ l1 = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_q); dkstream_puts(c->os1,str_eol);
+#if WRITE_CLIPPATH
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_moveto); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi); dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_lineto); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_lineto); dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_lineto); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_clip); dkstream_puts(c->os1, str_eol);
+#endif
+ if((c->options) & (PNG2PDF_OPT_IMAGEMASK|PNG2PDF_OPT_TRANSPARENCY)) {
+ if((c->options) & PNG2PDF_OPT_FILLBACKGROUND) {
+ switch(c->ch) {
+ case 1: case 2: {
+ putdouble(c, 0.3*matter+0.59*matteg+0.11*matteb);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_g);
+ } break;
+ default: {
+ putdouble(c, matter); dkstream_puts(c->os1, str_spc);
+ putdouble(c, matteg); dkstream_puts(c->os1, str_spc);
+ putdouble(c, matteb); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_rgb);
+ } break;
+ }
+ dkstream_puts(c->os1, str_eol);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he); dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_hf);
+ dkstream_puts(c->os1, str_eol);
+ }
+ }
+ putul(c, c->wi);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_cm);
+ dkstream_puts(c->os1,str_eol);
+ if(torc || createxobject) {
+ dkstream_puts(c->os1, str_slash);
+ dkstream_puts(c->os1, str_R);
+ xobjxru = xru + 3;
+ putul(c, (xru+3));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_do);
+ dkstream_puts(c->os1,str_eol);
+ } else {
+ /* Bild direkt hier schreiben */
+ dkstream_puts(c->os1, str_BI); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_slashW); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_slashH); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_bpc8);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_slashCS); dkstream_puts(c->os1, str_spc);
+ switch(c->ch) {
+ case 1: case 2: {
+ dkstream_puts(c->os1, str_slashG);
+ } break;
+ default: {
+ dkstream_puts(c->os1, str_slashRGB);
+ } break;
+ }
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_filter_short);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_ID); dkstream_puts(c->os1,str_eol);
+ if(!encoded_contents(c)) {
+ $? "! encoded_contents failed"
+ back = 0;
+ }
+ dkstream_puts(c->os1, str_EI); dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_Q); dkstream_puts(c->os1,str_eol);
+ l2 = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_endstream);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Stream length */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ putul(c, (l2-l1)); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ if(torc || createxobject) {
+ /* XObject name */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_slash);
+ dkstream_puts(c->os1, str_R);
+ putul(c, xobjxru);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, xobjxru);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ if(torc) {
+ dkstream_puts(c->os1, str_slash);
+ dkstream_puts(c->os1, str_R);
+ putul(c, (2UL+xobjxru));
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (2UL+xobjxru));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Image XObject */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_subtype);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_image);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_colorspace);
+ dkstream_puts(c->os1, str_spc);
+ switch(c->ch) {
+ case 1:
+ case 2: {
+ dkstream_puts(c->os1, str_devicegray);
+ } break;
+ default: {
+ dkstream_puts(c->os1, str_devicergb);
+ } break;
+ }
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_width); dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_height); dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_bitspercomponent);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 8UL);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_filtera85flate);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_length);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ if((c->options) & PNG2PDF_OPT_INTERPOLATE) {
+ dkstream_puts(c->os1, str_interpolate);
+ dkstream_puts(c->os1, str_eol);
+ }
+ if(torc) {
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ dkstream_puts(c->os1, str_smask);
+ } else {
+ dkstream_puts(c->os1, str_mask);
+ }
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+2));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_stream); dkstream_puts(c->os1,str_eol);
+ l1 = dkstream_get_bytes_written(c->os1);
+ if(!encoded_contents(c)) {
+ back = 0;
+ $? "! encoded_contents failed"
+ }
+ l2 = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_endstream); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* Image XObject stream length */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ putul(c, (l2-l1)); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ }
+ if(torc) {
+ /* image mask */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ dkstream_puts(c->os1, str_dictopen); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_type);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_xobject);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_subtype);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_image);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_width);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->wi);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_height);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, c->he);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_filtera85flate);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_length);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1UL));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1,str_eol);
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ dkstream_puts(c->os1, str_bitspercomponent);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 8UL);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_colorspace);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_devicegray);
+ dkstream_puts(c->os1,str_eol);
+ } else {
+ dkstream_puts(c->os1, str_imagemask_true);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_bitspercomponent);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 1UL);
+ dkstream_puts(c->os1,str_eol);
+ }
+ dkstream_puts(c->os1, str_dictclose); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_stream);
+ dkstream_puts(c->os1,str_eol);
+ l1 = dkstream_get_bytes_written(c->os1);
+ if(!encoded_image_mask_or_transparency(c)) {
+ back = 0;
+ $? "! encoded_image_mask_or_transparency failed"
+ }
+ l2 = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_endstream);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ /* length */
+ NEXTOBJECT ;
+ open_object(c, xru);
+ putul(c, (l2-l1)); dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_endobj); dkstream_puts(c->os1,str_eol);
+ }
+ /* xref section */
+ xrefxru = dkstream_get_bytes_written(c->os1);
+ dkstream_puts(c->os1, str_xref);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_0);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (xru+1));
+ dkstream_puts(c->os1,str_eol);
+ putul10(c, 0UL);
+ dkstream_puts(c->os1, str_spc);
+ putul5(c, 65535UL);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_f);
+ dkstream_puts(c->os1,str_eol);
+ for(i = 0UL; i < xru; i++) {
+ putul10(c, xr[i]);
+ dkstream_puts(c->os1, str_spc);
+ putul5(c, 0UL);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_n);
+ dkstream_puts(c->os1,str_eol);
+ }
+ /* trailer */
+ dkstream_puts(c->os1, str_trailer);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_dictopen);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_size);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, (1UL+xru));
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_info);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 1UL);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_root);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 2UL);
+ dkstream_puts(c->os1, str_spc);
+ putul(c, 0UL);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_R);
+ dkstream_puts(c->os1, str_spc);
+ dkstream_puts(c->os1, str_dictclose);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_startxref);
+ dkstream_puts(c->os1,str_eol);
+ putul(c, xrefxru);
+ dkstream_puts(c->os1,str_eol);
+ dkstream_puts(c->os1, str_eof);
+ dkstream_puts(c->os1,str_eol);
+ $? "- write_output %d", back
+ return back;
+}
+
+
+static char str_stdin[] = { "<standard input>" };
+
+
+static int
+run_conversion DK_P1(Png2PdfCmd *,c)
+{
+ int back = 0;
+ int ne, ns, np, alpha;
+ unsigned long y;
+ png_bytep *rowp;
+ $? "+ run_conversion"
+ ne = ns = np = alpha = 0;
+ c->options &= (~PNG2PDF_OPT_HAVE_FILE_BG);
+ /* correct command */
+ if((c->pdf_version) < PNG2PDF_PDF_VERSION_13) {
+ c->options &= (~PNG2PDF_OPT_IMAGEMASK);
+ c->options &= (~PNG2PDF_OPT_TRANSPARENCY);
+ c->options &= (~PNG2PDF_OPT_INVERTLEVELS);
+ c->options &= (~PNG2PDF_OPT_ALPHA_TRANS);
+ } else {
+ if((c->pdf_version) < PNG2PDF_PDF_VERSION_14) {
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) {
+ c->options |= PNG2PDF_OPT_IMAGEMASK;
+ }
+ c->options &= (~PNG2PDF_OPT_TRANSPARENCY);
+ }
+ }
+ if((c->options) & PNG2PDF_OPT_MIX) { alpha = 1; }
+ if((c->options) & PNG2PDF_OPT_IMAGEMASK) { alpha = 1; }
+ if((c->options) & PNG2PDF_OPT_TRANSPARENCY) { alpha = 1; }
+ c->bd = c->ct = c->cu = c->it = c->zt = c->ft = c->ch = 0;
+ c->bgp = &(c->bg);
+ c->pp = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ if(c->pp) {
+ c->pi = png_create_info_struct(c->pp);
+ if(c->pi) {
+ c->rows = NULL;
+#if HAVE_SETJMP_H
+ if(setjmp((c->pp)->jmpbuf) == 0) {
+#endif
+ png_init_io(c->pp, c->inf);
+ png_read_info(c->pp, c->pi);
+ png_get_IHDR(
+ c->pp, c->pi,
+ &(c->wi), &(c->he), &(c->bd), &(c->ct), &(c->it), &(c->zt), &(c->ft)
+ );
+ c->ch = png_get_channels(c->pp, c->pi);
+ c->cu = c->ct;
+ $? ". width = %lu", c->wi
+ $? ". height = %lu", c->he
+ $? ". bitdepth = %d", c->bd
+ $? ". colortype = %d", c->ct
+ $? ". interlace = %d", c->it
+ $? ". compressiontype = %d", c->zt
+ $? ". filtertype = %d", c->ft
+ $? ". channels = %d", c->ch
+ if(((c->ct) == PNG_COLOR_TYPE_PALETTE) && ((c->bd) <= 8)) {
+ ne = 1;
+ }
+ if(((c->ct) == PNG_COLOR_TYPE_GRAY) && ((c->bd) < 8)) {
+ ne = 1;
+ }
+ if(png_get_valid(c->pp, c->pi, PNG_INFO_tRNS)) {
+ ne = 1;
+ }
+ if((c->bd) > 8) {
+ ns = 1;
+ } else {
+ if((c->bd) < 8) {
+ np = 1;
+ }
+ }
+ if(ne) { png_set_expand(c->pp); }
+ if(ns) { png_set_strip_16(c->pp); }
+ if(np) { png_set_packing(c->pp); }
+ if(alpha) {
+ if(png_get_bKGD(c->pp, c->pi, &(c->bgp))) {
+ c->options |= PNG2PDF_OPT_HAVE_FILE_BG;
+ if((c->ct) & PNG_COLOR_MASK_PALETTE) {
+ png_colorp ptr; int num; $? ". paletted PNG"
+ if(png_get_PLTE(c->pp, c->pi, &ptr, &num)) {
+ if((c->bgp)->index < num) {
+ if((c->bd) != 8) {
+ (c->bg_file).r = correct_bd(ptr[(c->bgp)->index].red, (c->bd));
+ (c->bg_file).g = correct_bd(ptr[(c->bgp)->index].green, (c->bd));
+ (c->bg_file).b = correct_bd(ptr[(c->bgp)->index].blue, (c->bd));
+ } else {
+ (c->bg_file).r = ptr[(c->bgp)->index].red;
+ (c->bg_file).g = ptr[(c->bgp)->index].green;
+ (c->bg_file).b = ptr[(c->bgp)->index].blue;
+ }
+ } else {
+ /* ##### ERROR: Index out of range */
+ c->options &= (~PNG2PDF_OPT_HAVE_FILE_BG);
+ }
+ } else {
+ /* ERROR: Failed to obtain color palette */
+ c->options &= (~PNG2PDF_OPT_HAVE_FILE_BG);
+ simple_msg(c, DK_LOG_LEVEL_WARNING, 16);
+ }
+ } else {
+ if((c->bd) != 8) {
+ (c->bg_file).r = correct_bd((c->bgp)->red, (c->bd));
+ (c->bg_file).g = correct_bd((c->bgp)->green, (c->bd));
+ (c->bg_file).b = correct_bd((c->bgp)->blue, (c->bd));
+ } else {
+ (c->bg_file).r = (c->bgp)->red;
+ (c->bg_file).g = (c->bgp)->green;
+ (c->bg_file).b = (c->bgp)->blue;
+ }
+ }
+ }
+ } else {
+ if(png_get_bKGD(c->pp, c->pi, &(c->bgp))) {
+ png_set_background(c->pp, c->bgp, PNG_BACKGROUND_GAMMA_FILE,1,1.0);
+ } else {
+ png_set_background(c->pp, &(c->bg), PNG_BACKGROUND_GAMMA_SCREEN,0,1.0);
+ }
+ }
+ /* gamma correction and interlace handling would go here */
+ png_read_update_info(c->pp, c->pi);
+ c->ch = png_get_channels(c->pp, c->pi);
+ c->ct = png_get_color_type(c->pp, c->pi);
+ $? ". colortype now %d", c->ct
+ $? ". channels now %d", c->ch
+ c->rowbytes = png_get_rowbytes(c->pp, c->pi);
+ c->rows = dk_new(png_bytep,(c->he));
+ if(c->rows) {
+ back = 1;
+ rowp = c->rows;
+ for(y = 0; y < c->he; y++) {
+ *rowp = dk_new(png_byte,(c->rowbytes));
+ if(!(*rowp)) {
+ back = 0;
+ }
+ rowp++;
+ }
+ if(back) {
+ png_read_image(c->pp, c->rows);
+ back = write_output(c);
+ }
+ rowp = c->rows;
+ for(y = 0; y < c->he; y++) {
+ if(*rowp) { dk_delete((*rowp)); }
+ rowp++;
+ }
+ dk_delete((c->rows));
+ } else {
+ /* ERROR: Failed to allocate memory for rows */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 17);
+ }
+#if HAVE_SETJMP_H
+ } else {
+ char *fn;
+ fn = c->realfilename;
+ if(!fn) {
+ fn = str_stdin;
+ }
+ /* ERROR: Problem while reading PNG */
+ combined_msg(c, DK_LOG_LEVEL_ERROR, 18, 27, fn);
+ if(c->rows) {
+ rowp = c->rows;
+ for(y = 0; y < c->he; y++) {
+ if(*rowp) { dk_delete((*rowp)); }
+ rowp++;
+ }
+ dk_delete((c->rows));
+ }
+ }
+#endif
+ png_destroy_info_struct(c->pp, &(c->pi));
+ } else {
+ /* ERROR: Failed to create PNG info */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 19);
+ }
+ png_destroy_read_struct(&(c->pp), NULL, NULL);
+ } else {
+ /* ERROR: Failed to create PNG reader struct */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 20);
+ } $? "- run_conversion %d", back
+ return back;
+}
+
+
+
+int
+png2pdf_for_files DK_P1(Png2PdfCmd *,c)
+{
+ int back = 0;
+ c->os1 = dkstream_for_file(c->of);
+ if(c->os1) {
+ c->os2 = dkof_open(c->os1, 3);
+ if(c->os2) {
+ dkof_set_crnl(c->os2, 1);
+ back = 1;
+ if(!dkof_set(c->os2,0,DK_OF_TYPE_BUFFERED)) { back = 0; }
+ if(!dkof_set(c->os2,1,DK_OF_TYPE_ASCII85)) { back = 0; }
+ if(!dkof_set(c->os2,2,DK_OF_TYPE_FLATE)) { back = 0; }
+ if(back) {
+ back = run_conversion(c);
+ } else {
+ /* ERROR: Failed to set up encoding */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 21);
+ }
+ dkstream_close(c->os2); c->os2 = NULL;
+ } else {
+ /* ERROR: Failed to create encoding stream */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 22);
+ }
+ dkstream_close(c->os1); c->os1 = NULL;
+ } else {
+ /* ERROR: Failed to allocate stream */
+ simple_msg(c, DK_LOG_LEVEL_ERROR, 23);
+ }
+ return back;
+}
+
+
+#ifndef LINT
+static char sccs_id[] = {
+"@(#)png2pdf.ctr 1.25 07/18/06 (krause)\tPNG to PDF converter"
+};
+#endif
+
diff --git a/obsolete/support/png2pdf/png2pdf.h b/obsolete/support/png2pdf/png2pdf.h
new file mode 100644
index 0000000000..8536263ea8
--- /dev/null
+++ b/obsolete/support/png2pdf/png2pdf.h
@@ -0,0 +1,241 @@
+/*
+Copyright (c) 2003-2005, Dirk Krause
+All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided
+that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+* Redistributions in binary form must reproduce the above
+ opyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of the Dirk Krause nor the names of
+ its contributors may be used to endorse or promote
+ products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+*/
+
+#ifndef PNG2PDF_INCLUDED
+#define PNG2PDF_INCLUDED 1
+
+#include <dk.h>
+#include <dktypes.h>
+#include <dklic.h>
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#else
+#define HAVE_ZLIB_H 1
+#define HAVE_PNG_H 1
+#endif
+
+#include <stdio.h>
+#if DK_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_ZLIB_H
+#include <zlib.h>
+#else
+#error "You must install zlib to compile this package!"
+#endif
+#if HAVE_PNG_H
+#include <png.h>
+#else
+#error "You must install libpng to compile this package!"
+#endif
+
+#include <dkmem.h>
+#include <dkerror.h>
+#include <dkapp.h>
+#include <dkstream.h>
+#include <dkof.h>
+#include <dkstr.h>
+#include <dksf.h>
+#include <dkma.h>
+#include <dklogc.h>
+
+#ifndef DK_PNG2PDF_C
+#if !DK_HAVE_PROTOTYPES
+#define EXTERN extern
+#else
+#define EXTERN /* nix */
+#endif
+#else
+#define EXTERN /* nix */
+#endif
+
+typedef struct {
+ int r;
+ int g;
+ int b;
+ int gray;
+} Png2PdfRGB;
+
+typedef struct {
+ /*
+ Filled by main
+ */
+ /* application */
+ dk_app_t *a;
+ /* File name of input file (NULL=stdin) */
+ char *inputfilename;
+ /* real input filename to read PNG file */
+ char *realfilename;
+ /* File name of output file (NULL=stdout) */
+ char *outputfilename;
+ /* PDF format version */
+ int pdf_version;
+ /* background from PNG file */
+ Png2PdfRGB bg_file;
+ /* background from command line */
+ Png2PdfRGB bg_cmdl;
+ /* flags, see below */
+ int options;
+ /* command, see below */
+ int cmd;
+ /* localized messages */
+ char **msgptr;
+ /* error code for last error */
+ int error_code;
+ /*
+ Filled by run_normally
+ */
+ FILE *inf;
+ FILE *of;
+ /*
+ Filled by png2pdf_for_files
+ */
+ /* normal output stream */
+ dk_stream_t *os1;
+ /* flate/ASCII85 encoding stream */
+ dk_stream_t *os2;
+ /*
+ Filled by run_conversion
+ */
+ /* image width */
+ unsigned long wi;
+ /* image height */
+ unsigned long he;
+ /* bit depth */
+ int bd;
+ /* color type */
+ int ct;
+ int cu;
+ /* interlace type */
+ int it;
+ /* compression type */
+ int zt;
+ /* filter type */
+ int ft;
+ /* number of channels */
+ int ch;
+ /* background chunk data */
+ png_color_16 bg;
+ png_color_16p bgp;
+ /* PNG reader data */
+ png_structp pp;
+ png_infop pi;
+ /* pointer to rows */
+ int rowbytes;
+ png_bytep *rows;
+ Png2PdfRGB bg_used;
+} Png2PdfCmd;
+
+#define PNG2PDF_PDF_VERSION_12 0
+#define PNG2PDF_PDF_VERSION_13 1
+#define PNG2PDF_PDF_VERSION_14 2
+
+#define PNG2PDF_PDF_VERSION_MAX PNG2PDF_PDF_VERSION_14
+
+/* mix against background */
+#define PNG2PDF_OPT_MIX 1
+
+/* command line background has higher priority */
+#define PNG2PDF_OPT_BGCMD 2
+
+/* create image mask */
+#define PNG2PDF_OPT_IMAGEMASK 4
+
+/* write transparency data */
+#define PNG2PDF_OPT_TRANSPARENCY 8
+
+/* inverted levels for image mask */
+#define PNG2PDF_OPT_INVERTLEVELS 16
+
+/* fill with background before writing image */
+#define PNG2PDF_OPT_FILLBACKGROUND 32
+
+/* alpha channel is transparency */
+#define PNG2PDF_OPT_ALPHA_TRANS 64
+
+/* make style */
+#define PNG2PDF_OPT_MAKE 128
+
+/* background was obtained from PNG file */
+#define PNG2PDF_OPT_HAVE_FILE_BG 256
+
+/* set image interpolation flag */
+#define PNG2PDF_OPT_INTERPOLATE 512
+
+#define PNG2PDF_CMD_RUN 0
+#define PNG2PDF_CMD_HELP 1
+#define PNG2PDF_CMD_VERSION 2
+#define PNG2PDF_CMD_CONFIGURE 4
+#define PNG2PDF_CMD_UNCONFIGURE 8
+#define PNG2PDF_CMD_RESET 16
+#define PNG2PDF_CMD_SHOWCONF 32
+
+#define PNG2PDF_ERR_TOO_MANY_FILENAMES -1
+#define PNG2PDF_ERR_BACKGROUND_WRONG -2
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN int
+png2pdf_initialize_cmd DK_PR((Png2PdfCmd *c, dk_app_t *a));
+
+EXTERN void
+png2pdf_uninitialize_cmd DK_PR((Png2PdfCmd *c));
+
+EXTERN void
+png2pdf_process_args DK_PR((Png2PdfCmd *c, int xargc, char **xargv));
+
+EXTERN void
+png2pdf_save_configuration DK_PR((Png2PdfCmd *c));
+
+EXTERN void
+png2pdf_print_configuration DK_PR((Png2PdfCmd *c));
+
+EXTERN void
+png2pdf_reset_cmd DK_PR((Png2PdfCmd *c));
+
+EXTERN int
+png2pdf_for_files DK_PR((Png2PdfCmd *c));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/obsolete/support/png2pdf/png2pdf.str b/obsolete/support/png2pdf/png2pdf.str
new file mode 100644
index 0000000000..f717e692de
--- /dev/null
+++ b/obsolete/support/png2pdf/png2pdf.str
@@ -0,0 +1,153 @@
+# @(#)png2pdf.str 1.9 07/18/06
+#
+
+# png2pdf - PNG to PDF converter
+# Copyright (C) 2001 - Dirk Krause
+
+# Redistribution and use in source and binary forms,
+# with or without modification, are permitted provided
+# that the following conditions are met:
+#
+# * Redistributions of source code must retain the above
+# copyright notice, this list of conditions and the
+# following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# opyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials
+# provided with the distribution.
+# * Neither the name of the Dirk Krause nor the names of
+# its contributors may be used to endorse or promote
+# products derived from this software without specific
+# prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED.
+# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+# DAMAGE.
+
+$version 1.7
+$author Dirk Krause
+$comment String table for the png2pdf program
+
+"/m/00"
+en = "on"
+de = "ein"
+
+"/m/01"
+en = "off"
+de = "aus"
+
+"/m/02"
+en = "Mix against a given background"
+de = "Mixen gegen Hintergrund"
+
+"/m/03"
+en = "Background from command line overwrites background chunk"
+de = "Hintergrundfarbe von Kommandozeile hat Vorrang"
+
+"/m/04"
+en = "Create image mask"
+de = "Image mask erzeugen"
+
+"/m/05"
+en = "Inverted image mask levels"
+de = "Levels invertieren bei Erzeugung der Image mask"
+
+"/m/06"
+en = "Fill draw area before image writing"
+de = "Hintergrund füllen bevor Image gezeichnet wird"
+
+"/m/07"
+en = "PDF format version"
+de = "PDF-Format-Version"
+
+"/m/08"
+en = "Write transparency data to PDF"
+de = "Transparenz-Daten in PDF-Datei schreiben"
+
+"/m/09"
+en = "Alpha channel specifies transparency"
+de = "Alpha-Kanal gibt Durchsichtigkeit an"
+
+"/m/10"
+en = "Current configuration:"
+de = "Aktuelle Konfiguration:"
+
+"/m/11"
+en = "Check file times when running on directory"
+de = "Zeitvergleich zwischen Quell- u. Zieldatei bei Directory-Verarbeitung"
+
+"/m/12"
+en = "Processing input file \""
+de = "Die Eingabedatei \""
+
+"/m/13"
+en = "\"."
+de = "\" wird verarbeitet."
+
+"/m/14"
+en = "Image interpolation (smooth transitions for low resolution images)"
+de = "Image-Interpolation (sanftere Übergänge bei Bildern mit geringer Auflösung)"
+
+"/m/15"
+en = "Too many file names on the command line!"
+de = "Zu viele Dateinamen in der Kommandozeile!"
+
+"/m/16"
+en = "Failed to obtain color palette from file!"
+de = "Die Farbpalette wurde nicht gefunden!"
+
+"/m/17"
+en = "Not enough memory (RAM/swap space) for image data!"
+de = "Zu wenig Speicher (Hauptspeicher/Auslagerungsdatei) für Bilddaten!"
+
+"/m/18"
+en = "Failed to read PNG file \""
+de = "PNG-Datei \""
+
+"/m/19"
+en = "Not enough memory to create PNG info structure!"
+de = "Zu wenig Speicher (Hauptspeicher/Auslagerungsdatei) für PNG info!"
+
+"/m/20"
+en = "Not enough memory to create PNG read structure!"
+de = "Zu wenig Speicher für die Bilddaten!"
+
+"/m/21"
+en = "Not enough memory to set up encoding!"
+de = "Zu wenig Speicher, Encoding-Strukturen können nicht angelegt werden!"
+
+"/m/22"
+en = "Not enough memory to create encoding stream!"
+de = "Zu wenig Speicher, Encoding-Stream kann nicht angelegt werden!"
+
+"/m/23"
+en = "Not enough memory to create output stream!"
+de = "Zu wenig Speicher, Ausgabe-Stream kann nicht angelegt werden!"
+
+"/m/24"
+en = "Internal error: Failed to find name for directory entry"
+de = "Interner Fehler: Directory-Eintrag ohne gültigen Namen"
+
+"/m/25"
+en = "File name \""
+de = "Der Dateiname \""
+
+"/m/26"
+en = "\" is too long for buffer!"
+de = "\" ist zu lang für den Puffer!"
+
+"/m/27"
+en = "\" (file corrupted or not a PNG?)!"
+de = "\" nicht lesbar (kaputt oder falscher Typ?)!"
diff --git a/obsolete/support/png2pdf/png2pdfm.c b/obsolete/support/png2pdf/png2pdfm.c
new file mode 100644
index 0000000000..51205d7670
--- /dev/null
+++ b/obsolete/support/png2pdf/png2pdfm.c
@@ -0,0 +1,591 @@
+/*
+Copyright (c) 2003-2005, Dirk Krause
+All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided
+that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+* Redistributions in binary form must reproduce the above
+ opyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of the Dirk Krause nor the names of
+ its contributors may be used to endorse or promote
+ products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+*/
+
+#include <dk.h>
+#include <dksf.h>
+
+#include "png2pdf.h"
+
+#line 42 "png2pdfm.ctr"
+
+
+
+static int
+isdir DK_P1(char *,fn)
+{
+ int back = 0;
+ dk_stat_t st;
+
+ if(dkstat_get(&st, fn)) {
+ if((dkstat_filetype(&st) & (~DK_FT_SYMLINK)) == DK_FT_DIR) {
+ back = 1;
+ }
+ }
+
+ return back;
+}
+
+
+
+/* ********************************************************************* */
+/* * * */
+/* * Check whether we have to run silently or as a filter. * */
+/* * * */
+/* ********************************************************************* */
+
+#line 63 "png2pdfm.ctr"
+
+static void
+silence_check DK_P4(int,argc,char **,argv,int *,rs,int *,rf)
+{
+ char *filename, *ptr, **lfdptr; int i; int fn; int isd;
+
+ lfdptr = argv; lfdptr++; i = 1; fn = 0; isd = 0;
+ filename = NULL;
+ fn = 0;
+ while(i < argc) {
+ ptr = *lfdptr;
+ if(*ptr == '-') {
+ ptr++;
+ switch(*ptr) {
+ case 'p': case 'm': {
+ ptr++;
+ if(!(*ptr)) {
+ lfdptr++; i++;
+ }
+ } break;
+ }
+ } else {
+ fn++;
+ filename = ptr;
+
+ }
+ lfdptr++; i++;
+ }
+ if(fn < 2) {
+ if(fn == 1) {
+ if(filename) {
+ if(dksf_must_expand_filename(filename)) {
+ if(rf) { *rf = 1; }
+ } else {
+ if(!isdir(filename)) {
+ if(rf) { *rf = 1; }
+ }
+ }
+ } else {
+ if(rf) { *rf = 1; }
+ }
+ } else {
+ if(rf) { *rf = 1; }
+ }
+ }
+}
+
+
+static int
+run_for_filenames DK_P3(Png2PdfCmd *,c,char *,i,char *,o)
+{
+ int back = 0;
+
+ if(c->a) {
+ c->inf = dkapp_fopen(c->a, i, "rb");
+ if(c->inf) {
+ c->realfilename = dksf_get_last_filename(i);
+ if(o) {
+ c->of = dkapp_fopen(c->a, o, "wb");
+ if(c->of) {
+ back = png2pdf_for_files(c);
+ fclose(c->of); c->of = NULL;
+ } else {
+ dkapp_err_fopenw(c->a, o);
+ }
+ } else {
+ c->of = stdout;
+ dksf_set_file_binary(stdout);
+ back = png2pdf_for_files(c);
+ c->of = NULL;
+ }
+ fclose(c->inf); c->inf = NULL;
+ c->realfilename = NULL;
+ } else {
+ dkapp_err_fopenr(c->a, i);
+ }
+ } else {
+ c->inf = dksf_fopen(i, "rb");
+ if(c->inf) {
+ if(o) {
+ c->of = dksf_fopen(o, "wb");
+ if(c->of) {
+ back = png2pdf_for_files(c);
+ fclose(c->of); c->of = NULL;
+ } else {
+ }
+ } else {
+ c->of = stdout;
+ dksf_set_file_binary(stdout);
+ back = png2pdf_for_files(c);
+ c->of = NULL;
+ }
+ fclose(c->inf); c->inf = NULL;
+ } else {
+ }
+ }
+ return back;
+}
+
+
+
+static int
+source_newer DK_P3(Png2PdfCmd *,c,char *,src,char *,dst)
+{
+ int back = 0;
+ dk_stat_t st1, st2;
+ char *c1, *c2;
+ int ft;
+
+ if(dkstat_get(&st1, src)) {
+ back = 1;
+ if(dkstat_get(&st2, dst)) {
+ ft = dkstat_filetype(&st2);
+ if((ft & (~DK_FT_SYMLINK)) == DK_FT_REG) {
+ c1 = dkstat_mtime(&st1);
+ c2 = dkstat_mtime(&st2);
+
+ if(strcmp(c1,c2) > 0) {
+ back = 1;
+ } else {
+ back = 0;
+ }
+ } else {
+ back = 0;
+ /* ##### ERROR: destination no regular file */
+ }
+ } else {
+ }
+ } else {
+ }
+ return back;
+}
+
+
+
+static int
+is_png DK_P1(char *,n)
+{
+ int back = 0;
+ char *suffix;
+
+ suffix = dksf_get_file_type_dot(n);
+ if(suffix) {
+#if DK_HAVE_FNCASEINS
+ if(dkstr_casecmp(suffix, ".png") == 0) {
+
+ back = 1;
+ }
+#else
+ if(strcmp(suffix, ".png") == 0) {
+
+ back = 1;
+ }
+#endif
+ }
+ return back;
+}
+
+
+static int
+run_for_directory DK_P1(Png2PdfCmd *,c)
+{
+ int back = 0;
+ int ft;
+ char *ofbuffer, *in, *ins, *suffix;
+ unsigned long mpl;
+ dk_dir_t *dirptr;
+ mpl = dksf_get_maxpathlen();
+ ofbuffer = dk_new(char,mpl);
+ if(ofbuffer) {
+ dirptr = dkdir_open(c->inputfilename);
+ if(dirptr) {
+ back = 1;
+ while(dkdir_next(dirptr)) {
+ in = dkdir_get_fullname(dirptr);
+ if(in) {
+ ins = dkdir_get_shortname(dirptr);
+ if(ins) {
+ if(strcmp(ins, ".") && strcmp(ins, "..")) {
+ ft = dkdir_filetype(dirptr);
+ if((ft & (~DK_FT_SYMLINK)) == DK_FT_REG) {
+ if(is_png(in)) {
+ /*
+ + 3 because in worst case we have to replace
+ filename. by filename.pdf
+ */
+ if((strlen(in) + 3) < mpl) {
+ strcpy(ofbuffer, in);
+ suffix = dksf_get_file_type_dot(ofbuffer);
+ if(suffix) {
+ strcpy(suffix, ".pdf");
+ ft = 1;
+ if((c->options) & PNG2PDF_OPT_MAKE) {
+
+ ft = source_newer(c, in, ofbuffer);
+ }
+ if(ft) {
+ if((c->a) && (c->msgptr)) {
+ char *msgptr[3];
+ msgptr[0] = (c->msgptr)[12];
+ msgptr[1] = in;
+ msgptr[2] = (c->msgptr)[13];
+ dkapp_log_msg(c->a, DK_LOG_LEVEL_PROGRESS, msgptr, 3);
+ }
+ if(!run_for_filenames(c, in, ofbuffer)) {
+ back = 0;
+ }
+ }
+ } else {
+ back = 0;
+ /* no suffix in file name, already tested in is_png() */
+ }
+ } else {
+ /* File name too long, should not happen */
+ back = 0;
+ if((c->a) && (c->msgptr)) {
+ char *msgptr[3];
+ msgptr[0] = (c->msgptr)[25];
+ msgptr[1] = in;
+ msgptr[2] = (c->msgptr)[26];
+ dkapp_log_msg(c->a, DK_LOG_LEVEL_ERROR, msgptr, 3);
+ }
+ }
+ }
+ }
+ }
+ } else {
+ back = 0;
+ /* no short filename for entry */
+ if((c->a) && (c->msgptr)) {
+ dkapp_log_msg(c->a, DK_LOG_LEVEL_ERROR, &((c->msgptr)[24]), 1);
+ }
+ }
+ } else {
+ back = 0;
+ /* no filename for entry */
+ if((c->a) && (c->msgptr)) {
+ dkapp_log_msg(c->a, DK_LOG_LEVEL_ERROR, &((c->msgptr)[24]), 1);
+ }
+ }
+ }
+ dkdir_close(dirptr);
+ } else {
+ if(c->a) { dkapp_err_traverse_dir(c->a, c->inputfilename); }
+ }
+ dk_delete(ofbuffer);
+ } else {
+ if(c->a) { dkapp_err_memory(c->a, 1, mpl); }
+ }
+ return back;
+}
+
+
+
+static int
+run_for_output_name DK_P3(Png2PdfCmd *,c,char *,i,char *,o)
+{
+ int back = 0;
+
+ if(dksf_must_expand_filename(i)) {
+ dk_fne_t *ifne; char *in;
+ ifne = dkfne_open(i, 1, 0);
+ if(ifne) {
+ if(c->a) {
+ in = dkapp_fne_one(c->a, ifne, i);
+ if(in) {
+ back = run_for_filenames(c, in, o);
+ dk_delete(in);
+ } else {
+ }
+ } else {
+ if(dkfne_next(ifne)) {
+ in = dkfne_get_fullname(ifne);
+ if(in) {
+ back = run_for_filenames(c, in, o);
+ }
+ if(dkfne_next(ifne)) {
+ /* ERROR: Pattern not unique */
+ }
+ } else {
+ /* ERROR: No such file name */
+ }
+ }
+ dkfne_close(ifne);
+ } else {
+ if(c->a) { dkapp_err_memory(c->a, sizeof(dk_fne_t), 1); }
+ }
+ } else {
+ back = run_for_filenames(c, i, o);
+ }
+ return back;
+}
+
+
+static int
+run_normally DK_P1(Png2PdfCmd *,c)
+{
+ int back = 0;
+
+ if(c->inputfilename) {
+ if(c->outputfilename) {
+ if(dksf_must_expand_filename(c->outputfilename)) {
+ dk_fne_t *ofne; char *on;
+ ofne = dkfne_open(c->outputfilename, 1, 0);
+ if(ofne) {
+ if(c->a) {
+ on = dkapp_fne_one(c->a, ofne, c->outputfilename);
+ if(on) {
+ back = run_for_output_name(c, c->inputfilename, on);
+ dk_delete(on);
+ } else {
+ }
+ } else {
+ if(dkfne_next(ofne)) {
+ on = dkfne_get_fullname(ofne);
+ if(on) {
+ back = run_for_output_name(c, c->inputfilename, on);
+ }
+ } else {
+ /* ERROR: No such file */
+ }
+ }
+ dkfne_close(ofne);
+ } else {
+ if(c->a) { dkapp_err_memory(c->a, sizeof(dk_fne_t), 1); }
+ }
+ } else {
+ back = run_for_output_name(c, c->inputfilename, c->outputfilename);
+ }
+ } else {
+ if(dksf_must_expand_filename(c->inputfilename)) {
+
+ back = run_for_output_name(c, c->inputfilename, NULL);
+ } else {
+ if(isdir(c->inputfilename)) {
+
+ back = run_for_directory(c);
+ } else {
+
+ back = run_for_output_name(c, c->inputfilename, NULL);
+ }
+ }
+ }
+ } else {
+ c->inf = stdin;
+ c->of = stdout;
+ dksf_set_file_binary(stdin);
+ dksf_set_file_binary(stdout);
+ back = png2pdf_for_files(c);
+ c->inf = NULL; c->of = NULL;
+ }
+ return back;
+}
+
+
+#ifndef VERSNUMB
+#define VERSNUMB "1.0.12a"
+#endif
+static char versno[] = { VERSNUMB };
+
+
+
+static char *help_text[] = {
+"png2pdf [ <options> ] [ <inputfile> [ <outputfile> ] ]",
+"",
+"Options:",
+"-p PDF-level PDF-level: 1.2, 1.3 or 1.4",
+"-m r,g,b default background color (used if there is no background chunk)",
+"-s always use default background color from -m option",
+"-i create image mask",
+"-a write transparency data",
+"-b fill background before rendering image",
+"-f file time check when running on directory",
+"",
+"Permanent options handling:",
+"png2pdf -c <options> configures permanent options",
+"png2pdf -u removes all permanent options",
+"png2pdf -C shows the permanent options",
+"png2pdf -r <options> ... temporarily overrides permanent options",
+"",
+"Help and version information:",
+"png2pdf -h shows this help text",
+"png2pdf -v shows version information",
+"",
+ NULL
+};
+
+
+
+static char *license_terms[] = {
+"Redistribution and use in source and binary forms, with or without",
+"modification, are permitted provided that the following conditions are met:",
+"* Redistributions of source code must retain the above copyright notice, this",
+" list of conditions and the following disclaimer.",
+"* Redistributions in binary form must reproduce the above copyright notice,",
+" this list of conditions and the following disclaimer in the documentation",
+" and/or other materials provided with the distribution.",
+"* Neither the name of the Dirk Krause nor the names of other contributors may",
+" be used to endorse or promote products derived from this software without",
+" specific prior written permission.",
+"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"",
+"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE",
+"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE",
+"ARE DISCLAIMED.",
+"IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY",
+"DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES",
+"(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;",
+"LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND",
+"ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT",
+"(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS",
+"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.",
+NULL
+};
+
+
+
+static int
+run DK_P3(dk_app_t *,a,int,xargc,char **,xargv)
+{
+ int back = 0;
+ Png2PdfCmd c;
+
+ if(png2pdf_initialize_cmd(&c, a)) {
+ back = 1;
+ png2pdf_process_args(&c, xargc, xargv);
+ if(c.error_code) { c.cmd |= PNG2PDF_CMD_HELP; back = 0; }
+ if(c.cmd) {
+ if(c.cmd & (PNG2PDF_CMD_HELP | PNG2PDF_CMD_VERSION)) {
+ char **ptr;
+ fputc('\n', stdout);
+ fputs("png2pdf, version ", stdout);
+ fputs(versno, stdout);
+ fputc('\n', stdout);
+ fputs("Copyright (C) 2003-2005 Dipl.-Ing. D. Krause\n",
+ stdout);
+ fputs("http://png2pdf.sourceforge.net\n",
+ stdout);
+ ptr = license_terms;
+ while(*ptr) {
+ fputs(*(ptr++), stdout);
+ fputc('\n', stdout);
+ }
+ fputs("\nLibraries used:\n\n",
+ stdout);
+ fputs("libpng\tthe official PNG reference library\n",
+ stdout);
+ fputs("zlib\tgeneral compression library\n",
+ stdout);
+ fputs("dklibs\tportability layer and general purpose library\n",
+ stdout);
+ fputc('\n', stdout);
+ if(c.cmd & PNG2PDF_CMD_HELP) {
+ /* ##### print help */
+ dkapp_help(a, "png2pdf.txt", help_text);
+ }
+ } else {
+ if(c.cmd & PNG2PDF_CMD_UNCONFIGURE) {
+ png2pdf_reset_cmd(&c);
+ dkapp_unconfigure(a);
+ }
+ if(c.cmd & PNG2PDF_CMD_CONFIGURE) {
+ png2pdf_save_configuration(&c);
+ }
+ png2pdf_print_configuration(&c);
+ }
+ } else {
+ back = run_normally(&c);
+ }
+ png2pdf_uninitialize_cmd(&c);
+ }
+
+ return back;
+}
+
+#ifndef SYSCONFDIR
+#define SYSCONFDIR "/etc"
+#endif
+static char sysconfdir[] = { SYSCONFDIR };
+static char packagename[] = { "png2pdf" };
+
+#if DK_HAVE_PROTOTYPES
+int main(int argc, char *argv[])
+#else
+int main(argc,argv) int argc; char *argv[];
+#endif
+{
+ int exval = 0, rs = 0, rf = 0;
+ int xargc; char **xargv;
+ dk_app_t *app;
+
+#line 552 "png2pdfm.ctr"
+
+
+ silence_check(argc,argv,&rs,&rf);
+ if(!rs) { rs = dkapp_silence_check(argc,argv); }
+ app = dkapp_open_ext1(argc, argv, packagename, sysconfdir, rs, rf);
+ if(app) {
+ xargc = dkapp_get_argc(app);
+ xargv = dkapp_get_argv(app);
+ exval = run(app, xargc, xargv);
+ dkapp_close(app); app = NULL;
+ } else {
+ if(!rs) {
+ fputs("ERROR: Not enough memory!\n", stderr);
+ fflush(stderr);
+ }
+ }
+ exval = (exval ? 0 : 1);
+
+
+#line 570 "png2pdfm.ctr"
+
+ exit(exval); return exval;
+}
+
+#ifndef LINT
+static char sccs_id[] = {
+"@(#)png2pdfm.ctr 1.24 07/18/06 (krause)\tPNG to PDF converter"
+};
+#endif
+
diff --git a/obsolete/support/png2pdf/png2pdfm.ctr b/obsolete/support/png2pdf/png2pdfm.ctr
new file mode 100644
index 0000000000..3bc8d934a6
--- /dev/null
+++ b/obsolete/support/png2pdf/png2pdfm.ctr
@@ -0,0 +1,579 @@
+/*
+Copyright (c) 2003-2005, Dirk Krause
+All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided
+that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+* Redistributions in binary form must reproduce the above
+ opyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of the Dirk Krause nor the names of
+ its contributors may be used to endorse or promote
+ products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+*/
+
+#include <dk.h>
+#include <dksf.h>
+
+#include "png2pdf.h"
+$(trace-include)
+
+
+static int
+isdir DK_P1(char *,fn)
+{
+ int back = 0;
+ dk_stat_t st;
+ $? "+ isdir %s", TR_STR(fn)
+ if(dkstat_get(&st, fn)) {
+ if((dkstat_filetype(&st) & (~DK_FT_SYMLINK)) == DK_FT_DIR) {
+ back = 1;
+ }
+ }
+ $? "- isdir %d", back
+ return back;
+}
+
+
+$*
+ Check whether we have to run silently or as a filter.
+$*
+static void
+silence_check DK_P4(int,argc,char **,argv,int *,rs,int *,rf)
+{
+ char *filename, *ptr, **lfdptr; int i; int fn; int isd;
+ $? "+ DK_P4(int,argc,char"
+ lfdptr = argv; lfdptr++; i = 1; fn = 0; isd = 0;
+ filename = NULL;
+ fn = 0;
+ while(i < argc) {
+ ptr = *lfdptr;
+ if(*ptr == '-') {
+ ptr++;
+ switch(*ptr) {
+ case 'p': case 'm': {
+ ptr++;
+ if(!(*ptr)) {
+ lfdptr++; i++;
+ }
+ } break;
+ }
+ } else {
+ fn++;
+ filename = ptr;
+ $? ". filename = %s", TR_STR(filename)
+ }
+ lfdptr++; i++;
+ }
+ if(fn < 2) { $? ". run as filter"
+ if(fn == 1) { $? ". genau ein Dateiname"
+ if(filename) { $? ". Dateiname da"
+ if(dksf_must_expand_filename(filename)) {
+ if(rf) { *rf = 1; } $? ". rf=1 (1)"
+ } else { $? ". keine Expansion"
+ if(!isdir(filename)) { $? ". kein Verzeichnis"
+ if(rf) { *rf = 1; } $? ". rf=1 (2)"
+ }
+ }
+ } else {
+ if(rf) { *rf = 1; } $? ". rf=1 (3)"
+ }
+ } else {
+ if(rf) { *rf = 1; } $? ". rf=1 (4)"
+ }
+ } $? "- silence_check"
+}
+
+
+static int
+run_for_filenames DK_P3(Png2PdfCmd *,c,char *,i,char *,o)
+{
+ int back = 0;
+ $? "+ run_for_filenames %s %s %s", TR_PTR(c), TR_STR(i), TR_STR(o)
+ if(c->a) { $? ". have c->a"
+ c->inf = dkapp_fopen(c->a, i, "rb");
+ if(c->inf) { $? ". input file opened"
+ c->realfilename = dksf_get_last_filename(i);
+ if(o) { $? ". have output name"
+ c->of = dkapp_fopen(c->a, o, "wb");
+ if(c->of) { $? ". output file opened"
+ back = png2pdf_for_files(c);
+ fclose(c->of); c->of = NULL;
+ } else { $? "! failed to open output"
+ dkapp_err_fopenw(c->a, o);
+ }
+ } else { $? ". no output name"
+ c->of = stdout;
+ dksf_set_file_binary(stdout);
+ back = png2pdf_for_files(c);
+ c->of = NULL;
+ }
+ fclose(c->inf); c->inf = NULL;
+ c->realfilename = NULL;
+ } else { $? "! failed to open input"
+ dkapp_err_fopenr(c->a, i);
+ }
+ } else { $? ". no c->a"
+ c->inf = dksf_fopen(i, "rb");
+ if(c->inf) { $? ". input file opened"
+ if(o) { $? ". have output name"
+ c->of = dksf_fopen(o, "wb");
+ if(c->of) { $? ". output file opened"
+ back = png2pdf_for_files(c);
+ fclose(c->of); c->of = NULL;
+ } else { $? "! failed to open output"
+ }
+ } else { $? ". no output name"
+ c->of = stdout;
+ dksf_set_file_binary(stdout);
+ back = png2pdf_for_files(c);
+ c->of = NULL;
+ }
+ fclose(c->inf); c->inf = NULL;
+ } else { $? "! failed to open input"
+ }
+ } $? "- run_for_filenames %d", back
+ return back;
+}
+
+
+
+static int
+source_newer DK_P3(Png2PdfCmd *,c,char *,src,char *,dst)
+{
+ int back = 0;
+ dk_stat_t st1, st2;
+ char *c1, *c2;
+ int ft;
+ $? "+ source_newer %s %s %s", TR_PTR(c), TR_STR(src), TR_STR(dst)
+ if(dkstat_get(&st1, src)) { $? ". stat ok for input"
+ back = 1;
+ if(dkstat_get(&st2, dst)) { $? ". stat ok for output"
+ ft = dkstat_filetype(&st2);
+ if((ft & (~DK_FT_SYMLINK)) == DK_FT_REG) {
+ c1 = dkstat_mtime(&st1);
+ c2 = dkstat_mtime(&st2); $? ". output is regular file"
+ $? ". timestamps src=%s dst=%s", c1, c2
+ if(strcmp(c1,c2) > 0) {
+ back = 1;
+ } else {
+ back = 0;
+ }
+ } else { $? "! destination not a regular file"
+ back = 0;
+ /* ##### ERROR: destination no regular file */
+ }
+ } else { $? "! stat failed for output file"
+ }
+ } else { $? "! stat failed for input file"
+ } $? "- source_newer %d", back
+ return back;
+}
+
+
+
+static int
+is_png DK_P1(char *,n)
+{
+ int back = 0;
+ char *suffix;
+ $? "+ is_png %s", TR_STR(n)
+ suffix = dksf_get_file_type_dot(n);
+ if(suffix) { $? ". suffix found"
+#if DK_HAVE_FNCASEINS
+ if(dkstr_casecmp(suffix, ".png") == 0) {
+ $? ". is png file (1)"
+ back = 1;
+ }
+#else
+ if(strcmp(suffix, ".png") == 0) {
+ $? ". is png file (2)"
+ back = 1;
+ }
+#endif
+ } $? "- is_png %d", back
+ return back;
+}
+
+
+static int
+run_for_directory DK_P1(Png2PdfCmd *,c)
+{
+ int back = 0;
+ int ft;
+ char *ofbuffer, *in, *ins, *suffix;
+ unsigned long mpl;
+ dk_dir_t *dirptr;
+ mpl = dksf_get_maxpathlen();
+ ofbuffer = dk_new(char,mpl);
+ if(ofbuffer) { $? ". output name buffer ok"
+ dirptr = dkdir_open(c->inputfilename);
+ if(dirptr) { $? ". directory opened"
+ back = 1;
+ while(dkdir_next(dirptr)) { $? ". have dir entry"
+ in = dkdir_get_fullname(dirptr);
+ if(in) { $? ". dir entry name = \"%s\"", in
+ ins = dkdir_get_shortname(dirptr);
+ if(ins) { $? ". short name = \"%s\"", ins
+ if(strcmp(ins, ".") && strcmp(ins, "..")) {
+ ft = dkdir_filetype(dirptr); $? ". not . or .."
+ if((ft & (~DK_FT_SYMLINK)) == DK_FT_REG) { $? ". regular file"
+ if(is_png(in)) { $? ". PNG file"
+ /*
+ + 3 because in worst case we have to replace
+ filename. by filename.pdf
+ */
+ if((strlen(in) + 3) < mpl) { $? ". file name length ok"
+ strcpy(ofbuffer, in);
+ suffix = dksf_get_file_type_dot(ofbuffer);
+ if(suffix) { $? ". suffix found"
+ strcpy(suffix, ".pdf");
+ ft = 1;
+ if((c->options) & PNG2PDF_OPT_MAKE) {
+ $? ". timestamp check necessary"
+ ft = source_newer(c, in, ofbuffer);
+ }
+ if(ft) { $? ". must run"
+ if((c->a) && (c->msgptr)) {
+ char *msgptr[3];
+ msgptr[0] = (c->msgptr)[12];
+ msgptr[1] = in;
+ msgptr[2] = (c->msgptr)[13];
+ dkapp_log_msg(c->a, DK_LOG_LEVEL_PROGRESS, msgptr, 3);
+ }
+ if(!run_for_filenames(c, in, ofbuffer)) {
+ back = 0;
+ }
+ }
+ } else { $? ". no suffix in file name"
+ back = 0;
+ /* no suffix in file name, already tested in is_png() */
+ }
+ } else { $? "! file name too long"
+ /* File name too long, should not happen */
+ back = 0;
+ if((c->a) && (c->msgptr)) {
+ char *msgptr[3];
+ msgptr[0] = (c->msgptr)[25];
+ msgptr[1] = in;
+ msgptr[2] = (c->msgptr)[26];
+ dkapp_log_msg(c->a, DK_LOG_LEVEL_ERROR, msgptr, 3);
+ }
+ }
+ }
+ }
+ }
+ } else {
+ back = 0;
+ /* no short filename for entry */
+ if((c->a) && (c->msgptr)) {
+ dkapp_log_msg(c->a, DK_LOG_LEVEL_ERROR, &((c->msgptr)[24]), 1);
+ }
+ }
+ } else {
+ back = 0;
+ /* no filename for entry */
+ if((c->a) && (c->msgptr)) {
+ dkapp_log_msg(c->a, DK_LOG_LEVEL_ERROR, &((c->msgptr)[24]), 1);
+ }
+ }
+ }
+ dkdir_close(dirptr);
+ } else { $? "! failed to open directory"
+ if(c->a) { dkapp_err_traverse_dir(c->a, c->inputfilename); }
+ }
+ dk_delete(ofbuffer);
+ } else { $? "! failed to allocate memory for output name buffer"
+ if(c->a) { dkapp_err_memory(c->a, 1, mpl); }
+ }
+ return back;
+}
+
+
+
+static int
+run_for_output_name DK_P3(Png2PdfCmd *,c,char *,i,char *,o)
+{
+ int back = 0;
+ $? "+ run_for_output_name %s %s %s", TR_PTR(c), TR_STR(i), TR_STR(o)
+ if(dksf_must_expand_filename(i)) {
+ dk_fne_t *ifne; char *in; $? ". must expand filename"
+ ifne = dkfne_open(i, 1, 0);
+ if(ifne) { $? ". file name expander ok"
+ if(c->a) { $? ". c->a available"
+ in = dkapp_fne_one(c->a, ifne, i);
+ if(in) { $? ". pattern ok"
+ back = run_for_filenames(c, in, o);
+ dk_delete(in);
+ } else { $? "! no such file or multiple files"
+ }
+ } else { $? ". c->a not available"
+ if(dkfne_next(ifne)) { $? ". next file name ok"
+ in = dkfne_get_fullname(ifne);
+ if(in) {
+ back = run_for_filenames(c, in, o);
+ }
+ if(dkfne_next(ifne)) { $? "! multiple files"
+ /* ERROR: Pattern not unique */
+ }
+ } else { $? "! no such file name"
+ /* ERROR: No such file name */
+ }
+ }
+ dkfne_close(ifne);
+ } else { $? "! failed to create file name expander"
+ if(c->a) { dkapp_err_memory(c->a, sizeof(dk_fne_t), 1); }
+ }
+ } else { $? ". not necessary to expand file name"
+ back = run_for_filenames(c, i, o);
+ } $? "- run_for_output_name %d", back
+ return back;
+}
+
+
+static int
+run_normally DK_P1(Png2PdfCmd *,c)
+{
+ int back = 0;
+ $? "+ run_normally %s", TR_PTR(c)
+ if(c->inputfilename) { $? ". have input filename"
+ if(c->outputfilename) { $? ". have output file name"
+ if(dksf_must_expand_filename(c->outputfilename)) {
+ dk_fne_t *ofne; char *on; $? ". must expand output file name"
+ ofne = dkfne_open(c->outputfilename, 1, 0);
+ if(ofne) { $? ". expander created"
+ if(c->a) { $? ". c->a ok"
+ on = dkapp_fne_one(c->a, ofne, c->outputfilename);
+ if(on) { $? ". file name found"
+ back = run_for_output_name(c, c->inputfilename, on);
+ dk_delete(on);
+ } else { $? "! problem with file name pattern"
+ }
+ } else { $? ". no c->a"
+ if(dkfne_next(ofne)) {
+ on = dkfne_get_fullname(ofne);
+ if(on) {
+ back = run_for_output_name(c, c->inputfilename, on);
+ }
+ } else { $? "! no such file"
+ /* ERROR: No such file */
+ }
+ }
+ dkfne_close(ofne);
+ } else { $? "! failed to create output name expander"
+ if(c->a) { dkapp_err_memory(c->a, sizeof(dk_fne_t), 1); }
+ }
+ } else { $? ". no need to expand output file name"
+ back = run_for_output_name(c, c->inputfilename, c->outputfilename);
+ }
+ } else { $? ". no output file name specified"
+ if(dksf_must_expand_filename(c->inputfilename)) {
+ $? ". input name contains wildcards"
+ back = run_for_output_name(c, c->inputfilename, NULL);
+ } else { $? ". no wildcards in input name"
+ if(isdir(c->inputfilename)) {
+ $? ". input is directory"
+ back = run_for_directory(c);
+ } else {
+ $? ". input is file"
+ back = run_for_output_name(c, c->inputfilename, NULL);
+ }
+ }
+ }
+ } else { $? ". run for standard input / standard output"
+ c->inf = stdin;
+ c->of = stdout;
+ dksf_set_file_binary(stdin);
+ dksf_set_file_binary(stdout);
+ back = png2pdf_for_files(c);
+ c->inf = NULL; c->of = NULL;
+ } $? "- run_normally %d", back
+ return back;
+}
+
+
+#ifndef VERSNUMB
+#define VERSNUMB "developer"
+#endif
+static char versno[] = { VERSNUMB };
+
+
+
+static char *help_text[] = {
+"png2pdf [ <options> ] [ <inputfile> [ <outputfile> ] ]",
+"",
+"Options:",
+"-p PDF-level PDF-level: 1.2, 1.3 or 1.4",
+"-m r,g,b default background color (used if there is no background chunk)",
+"-s always use default background color from -m option",
+"-i create image mask",
+"-a write transparency data",
+"-b fill background before rendering image",
+"-f file time check when running on directory",
+"",
+"Permanent options handling:",
+"png2pdf -c <options> configures permanent options",
+"png2pdf -u removes all permanent options",
+"png2pdf -C shows the permanent options",
+"png2pdf -r <options> ... temporarily overrides permanent options",
+"",
+"Help and version information:",
+"png2pdf -h shows this help text",
+"png2pdf -v shows version information",
+"",
+ NULL
+};
+
+
+
+static char *license_terms[] = {
+"Redistribution and use in source and binary forms, with or without",
+"modification, are permitted provided that the following conditions are met:",
+"* Redistributions of source code must retain the above copyright notice, this",
+" list of conditions and the following disclaimer.",
+"* Redistributions in binary form must reproduce the above copyright notice,",
+" this list of conditions and the following disclaimer in the documentation",
+" and/or other materials provided with the distribution.",
+"* Neither the name of the Dirk Krause nor the names of other contributors may",
+" be used to endorse or promote products derived from this software without",
+" specific prior written permission.",
+"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"",
+"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE",
+"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE",
+"ARE DISCLAIMED.",
+"IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY",
+"DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES",
+"(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;",
+"LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND",
+"ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT",
+"(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS",
+"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.",
+NULL
+};
+
+
+
+static int
+run DK_P3(dk_app_t *,a,int,xargc,char **,xargv)
+{
+ int back = 0;
+ Png2PdfCmd c;
+ $? "+ run %s %d %s", TR_PTR(a), xargc, TR_PTR(xargv)
+ if(png2pdf_initialize_cmd(&c, a)) {
+ back = 1;
+ png2pdf_process_args(&c, xargc, xargv);
+ if(c.error_code) { c.cmd |= PNG2PDF_CMD_HELP; back = 0; }
+ if(c.cmd) {
+ if(c.cmd & (PNG2PDF_CMD_HELP | PNG2PDF_CMD_VERSION)) {
+ char **ptr;
+ fputc('\n', stdout);
+ fputs("png2pdf, version ", stdout);
+ fputs(versno, stdout);
+ fputc('\n', stdout);
+ fputs("Copyright (C) 2003-2005 Dipl.-Ing. D. Krause\n",
+ stdout);
+ fputs("http://png2pdf.sourceforge.net\n",
+ stdout);
+ ptr = license_terms;
+ while(*ptr) {
+ fputs(*(ptr++), stdout);
+ fputc('\n', stdout);
+ }
+ fputs("\nLibraries used:\n\n",
+ stdout);
+ fputs("libpng\tthe official PNG reference library\n",
+ stdout);
+ fputs("zlib\tgeneral compression library\n",
+ stdout);
+ fputs("dklibs\tportability layer and general purpose library\n",
+ stdout);
+ fputc('\n', stdout);
+ if(c.cmd & PNG2PDF_CMD_HELP) {
+ /* ##### print help */
+ dkapp_help(a, "png2pdf.txt", help_text);
+ }
+ } else {
+ if(c.cmd & PNG2PDF_CMD_UNCONFIGURE) {
+ png2pdf_reset_cmd(&c);
+ dkapp_unconfigure(a);
+ }
+ if(c.cmd & PNG2PDF_CMD_CONFIGURE) {
+ png2pdf_save_configuration(&c);
+ }
+ png2pdf_print_configuration(&c);
+ }
+ } else { $? ". run normally"
+ back = run_normally(&c);
+ }
+ png2pdf_uninitialize_cmd(&c);
+ }
+ $? "- run %d", back
+ return back;
+}
+
+#ifndef SYSCONFDIR
+#define SYSCONFDIR "/etc"
+#endif
+static char sysconfdir[] = { SYSCONFDIR };
+static char packagename[] = { "png2pdf" };
+
+#if DK_HAVE_PROTOTYPES
+int main(int argc, char *argv[])
+#else
+int main(argc,argv) int argc; char *argv[];
+#endif
+{
+ int exval = 0, rs = 0, rf = 0;
+ int xargc; char **xargv;
+ dk_app_t *app;
+ $(trace-init png2pdf.deb)
+ $? "+ main"
+ silence_check(argc,argv,&rs,&rf); $? ". rs=%d rf=%d", rs, rf
+ if(!rs) { rs = dkapp_silence_check(argc,argv); }
+ app = dkapp_open_ext1(argc, argv, packagename, sysconfdir, rs, rf);
+ if(app) {
+ xargc = dkapp_get_argc(app);
+ xargv = dkapp_get_argv(app);
+ exval = run(app, xargc, xargv);
+ dkapp_close(app); app = NULL;
+ } else {
+ if(!rs) {
+ fputs("ERROR: Not enough memory!\n", stderr);
+ fflush(stderr);
+ }
+ }
+ exval = (exval ? 0 : 1);
+ $? "- main %d", exval
+ $(trace-end)
+ exit(exval); return exval;
+}
+
+#ifndef LINT
+static char sccs_id[] = {
+"@(#)png2pdfm.ctr 1.24 07/18/06 (krause)\tPNG to PDF converter"
+};
+#endif
+
diff --git a/obsolete/support/png2pdf/pod/pod1/png2pdf.pod b/obsolete/support/png2pdf/pod/pod1/png2pdf.pod
new file mode 100644
index 0000000000..2f340ada40
--- /dev/null
+++ b/obsolete/support/png2pdf/pod/pod1/png2pdf.pod
@@ -0,0 +1,169 @@
+=head1 NAME
+
+png2pdf - PNG to PDF converter
+
+=head1 SYNOPSIS
+
+png2pdf I<options> I<inputfile> I<outputfile>
+
+png2pdf I<options> I<directory>
+
+=head1 DESCRIPTION
+
+The png2pdf program converts images from the PNG file format to the
+PDF file format. Different PDF levels can be choosen for output.
+An alpha channel in the PNG file can be used -- depending on the
+output PDF level -- to mix the PNG image against a specified
+background color, to create a PDF image mask or to create a
+transparency channel in the PDF file.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-p> I<pdf-level>
+
+chooses the PDF format level, may be either "1.2", "1.3" or "1.4".
+
+=item B<-n>
+
+adds an entry to the PDF image dictionary suggesting PDF viewers
+to show an interpolated image. This is useful for stretched images
+(small images shown in a large screen area).
+
+=item B<-m> I<background-rgb>
+
+specifies a background RGB color for mixing. This background color
+is used only if the PNG file does not contain a background chunk
+or if the B<-s> option is used.
+
+=item B<-s>
+
+assigns the RGB background color specified using the B<-m> option
+a higher priority than the background color from the PNG background chunk.
+
+=item B<-i>
+
+converts the alpha channel from the PNG file into an image mask
+(if there is an alpha channel).
+
+=item B<-a>
+
+converts the alpha channel from the PNG file (if present) into a
+PDF transparency channel. Note: B<-a> and B<-i> can not be used
+at same time.
+
+=item B<-l>
+
+inverts the triggering level for image mask creation (see B<-i>).
+By default only opacity=0 pixels are masked. Using B<-l> the
+opacity<255 pixels are masked.
+
+=item B<-t>
+
+interprets the alpha channel data as transparency (by default it
+is opacity).
+
+=item B<-f>
+
+activates ``make'' style behaviour (checks file modification times)
+when png2pdf is run on a directory.
+
+=item B<-h>
+
+prints a help text
+
+=item B<-v>
+
+prints version information.
+
+=item B<-c> I<option>
+
+stores permanent options.
+
+=item B<-u>
+
+removes all permanent options.
+
+=item B<-r> ...
+
+ignores all permanent options for this one program invokation. The
+B<-r> options must be used before any other option.
+
+=item B<-C>
+
+shows the permanent options.
+
+=cut
+
+=head1 RETURN VALUE
+
+The program returns exit code 0 on success, positive values on error.
+
+=head1 EXAMPLES
+
+ png2pdf -m 255.255.255 x.png x.pdf
+
+converts x.png to x.pdf. If there is an alpha channel in x.png this
+is used to mix against either the background specified in the
+background chunk (if there is one) or against the user specified
+background color white.
+
+ png2pdf -s -m 255.255.255 x.png x.pdf
+
+converts x.png to x.pdf. If there is an alpha channel in x.png this
+is used to mix against the user supplied background color (white).
+The background chunk possibly contained in the PNG file is ignored.
+
+=head1 SEE ALSO
+
+By default a PDF manual is installed ``near'' with the binary.
+If
+
+ which png2pdf
+
+finds the binary ``/usr/local/bin/png2pdf'', check for a file named
+``/usr/local/share/doc/png2pdf/png2pdf.pdf''.
+
+=head1 AUTHOR
+
+Dirk Krause
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (c) 2001-2005, Dirk Krause
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+=over 4
+
+=item * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+=item * Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+=item * Neither the name of the Dirk Krause nor the names of its contributors
+may be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+=back
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=head1 LAST MODIFICATION
+
+2005/03/22
+
diff --git a/obsolete/support/png2pdf/prep-dist.sh b/obsolete/support/png2pdf/prep-dist.sh
new file mode 100755
index 0000000000..0429dc0fad
--- /dev/null
+++ b/obsolete/support/png2pdf/prep-dist.sh
@@ -0,0 +1,11 @@
+#! /bin/sh
+echo Running prep-dist.sh
+
+find . -name compile-archive -exec chmod 755 {} \;
+find . -name create-jar -exec chmod 755 {} \;
+
+SRCFILES=*.java
+DIR=Java/Png2PdfGUI/src
+[ -d $DIR ] || (mkdir -p $DIR; chmod 755 $DIR)
+mv $SRCFILES $DIR
+
diff --git a/obsolete/support/png2pdf/share/png2pdf/de/png2pdf.txt b/obsolete/support/png2pdf/share/png2pdf/de/png2pdf.txt
new file mode 100755
index 0000000000..2e5a4d0e58
--- /dev/null
+++ b/obsolete/support/png2pdf/share/png2pdf/de/png2pdf.txt
@@ -0,0 +1,112 @@
+
+png2pdf - Konvertierung von PNG nach PDF
+========================================
+
+Kommandozeile:
+
+png2pdf -h
+png2pdf --help
+
+ zeigt diesen Hilfetext.
+
+png2pdf -v
+png2pdf --version
+
+ zeigt die Versiosnummer an.
+
+png2pdf -c <options>
+png2pdf --configure <options>
+
+ setzt permanente Optionen.
+
+png2pdf -C
+png2pdf --show-configuration
+
+ zeigt die aktuell in Gebrauch befindlichen permanenten
+ Optionen an.
+
+png2pdf -u
+png2pdf --unconfigure
+
+ löscht alle permanenten Optionen.
+
+png2pdf -r <options>
+png2pdf --reset <options>
+
+ setzt die permanenten Optionen für diesen Programmlauf außer Kraft.
+
+Optionen:
+---------
+
+-p <pdf-level>
+--pdf <pdf-level>
+
+ gibt das PDF-Format an (1.2, 1.3 oder 1.4)
+
+-n
+--interpolation
+
+ schreibt einen Eintrag in das Image-Dictionary der PDF-Datei,
+ der PDF-Anzeigeprogrammen vorschlägt, das Bild interpoliert
+ anzuzeigen. Dies ist insbesondere für Bilder sinnvoll, die
+ stark vergrößert werden.
+
+-m <background-rgb>
+--mix-background <background-rgb>
+
+ mischt die PNG-Daten gegen den Hintergrund aus dem background chunk
+ des PNG-Files oder gegen den hier vorgegebenen Hintergrund, falls
+ die Datei keinen background chunk aufweist.
+
+-s
+--mix-specified[=bool]
+
+ gibt vor, daß der in der -m-Option angegebene Hintergrund
+ höhere Priorität hat als der Hintergrund aus dem background chunk.
+
+-i
+--image-mask[=bool]
+
+ schreibt eine Image mask in die Ausgabedatei.
+
+-a
+--transparency[=bool]
+
+ schreibt Transparenz-Daten in die Ausgabedatei.
+
+-l
+--invert-levels[=bool]
+
+ invertiert das Entscheidungslevel für die Erzeugung der Image mask.
+ Normalerweise werden nur die Punkte mit Deckungskraft 0 ausmaskiert.
+ Diese Option führt dazu, daß alle Punkte mit Deckungskraft 0...254
+ ausmaskiert werden.
+
+-t
+--alpha-transparency[=bool]
+
+ behandelt den Alpha-Kanal als Durchsichtigkeit. Normalerweise
+ stellt der Alpha-Kanal die Deckungskraft dar.
+
+-f
+--file-time-check[=bool]
+
+ führt einen Zeitvergleich zwischen Quell- und Zieldatei
+ durch, wenn png2pdf für ein Verzeichnis gestartet wurde.
+
+Beispiele:
+----------
+
+png2pdf -c -p 1.4
+ legt fest, dass PDF-Format-Version 1.4 genutzt wird.
+
+png2pdf -m 255,255,255 x.png x.pdf
+ konvertiert x.png zu x.pdf. Falls in x.png ein background chunk
+ enthalten ist, wird gegen die dort angegebene Hintergrundfarbe
+ gemischt, ansonsten gegen weissen Hintergrund.
+
+png2pdf -m 204,204,255 -s x.png x.pdf
+ konvertiert x.png zu x.pdf und mischt mit einem hellblauen
+ Hintergrund, unabhängig davon, ob ein background chunk in x.png
+ vorhanden ist oder nicht.
+
diff --git a/obsolete/support/png2pdf/share/png2pdf/en/png2pdf.txt b/obsolete/support/png2pdf/share/png2pdf/en/png2pdf.txt
new file mode 100755
index 0000000000..be03282e0d
--- /dev/null
+++ b/obsolete/support/png2pdf/share/png2pdf/en/png2pdf.txt
@@ -0,0 +1,112 @@
+
+png2pdf - A converter from PNG to PDF
+=====================================
+
+Usage:
+
+png2pdf -h
+png2pdf --help
+
+ shows this help text.
+
+png2pdf -v
+png2pdf --version
+
+ shows version information
+
+png2pdf -c <options>
+png2pdf --configure <options>
+
+ sets permanent options. See below for options you can set
+
+png2pdf -C
+png2pdf --show-configuration
+
+ shows the current set of permanent options.
+
+png2pdf -u
+png2pdf --unconfigure
+
+ removes the permanent options.
+
+png2pdf -r <options>
+png2pdf --reset <options>
+
+ temporarily overrides the permanent options.
+
+Options:
+--------
+
+-p <pdf-level>
+--pdf <pdf-level>
+
+ specifies the PDF level. Maybe 1.2, 1.3 or 1.4.
+
+-n
+--interpolation
+
+ adds an entry to the image dictionary suggesting PDF viewers
+ to show an interpolated image. This is usefull for stretched
+ images (small images shown in a large screen area).
+
+-m <background-rgb>
+--mix-background <background-rgb>
+
+ mixes against the background contained in the file's background
+ chunk or against the specified background color if the file
+ doesn't have a background chunk.
+
+-s
+--mix-specified[=bool]
+
+ sets the background specified in the -m option to have
+ higher priority than the background from the file's background chunk.
+
+-i
+--image-mask[=bool]
+
+ writes an image mask based on the PNG file's alpha channel
+ if available.
+
+-a
+--transparency[=bool]
+
+ writes transparency data based on the PNG file's alpha channel
+ if available.
+
+-l
+--invert-levels[=bool]
+
+ inverts the decision level for image mask creation. Normally
+ only pixels having 0 opacity are masked out. This option
+ masks all pixel having opacity in range 0...254.
+
+-t
+--alpha-transparency[=bool]
+
+ treats the alpha channel data as transparency. By default the
+ alpha channel is treated as opacity data.
+
+-f
+--file-time-check[=bool]
+
+ When running on a directory we do it in make style. A new PDF
+ file is created only for those PNG files which are newer
+ than the appropriate PDFs.
+
+Examples:
+---------
+
+png2pdf -c -p 1.4
+ sets PDF format level to 1.4.
+
+png2pdf -m 255,255,255 x.png x.pdf
+ converts x.png to x.pdf. If x.png has a background chunk the color
+ from that chunk is used for color mixing, otherwise we mix
+ against a white background.
+
+png2pdf -m 204,204,255 -s x.png x.pdf
+ converts x.png to x.pdf mixing against a light blue background
+ regardless whether or not there is a background chunk in the file.
+
+
diff --git a/obsolete/support/png2pdf/sources.lst b/obsolete/support/png2pdf/sources.lst
new file mode 100644
index 0000000000..6124a4fcc9
--- /dev/null
+++ b/obsolete/support/png2pdf/sources.lst
@@ -0,0 +1,8 @@
+png2pdf
+png2pdfm
+
+Png2PdfController
+Png2PdfDialog
+Png2PdfFileFilter
+Png2PdfGUI
+Png2PdfWindow
diff --git a/obsolete/support/prv/prv b/obsolete/support/prv/prv
new file mode 100755
index 0000000000..8aee8e2909
--- /dev/null
+++ b/obsolete/support/prv/prv
@@ -0,0 +1,1907 @@
+#!/usr/bin/perl -w
+# prv - compile, preview, and print LaTeX document
+$version_num = '0.7'; # version history at the end
+
+=head1 NAME
+
+ prv - compile, preview, and print LaTeX document
+
+=head1 SYNOPSIS
+
+Options are shown in logically identical pairs, with the full version
+in the second column and the minimum shorthand (without any parameters)
+in the first:
+
+ prv [-b] [-batch <selection>]
+ [-cl] [-clean]
+ [-co] [-continue]
+ [-dr] [-draft]
+ [-dv] [-dvi_filter <filter>]
+ [-f] [-full_clean]
+ [-g] [-go]
+ [-h] [-help]
+ [-ig] [-ignore_missing_includes]
+ [-in] [-intensity_draft <intensity>]
+ [-l] [-landscape]
+ [-m] [-message_draft <message>]
+ [-pr] [-printout]
+ [-ps] [-ps]
+ [-ps_] [-ps_filter <filter>]
+ [-pv] [-pv]
+ [-pvc] [-pvc]
+ [-q] [-quiet]
+ [-r] [-rcfile <rcfile]
+ [-scal] [-scale_draft <scale>]
+ [-scan] [-scan]
+ [-scan_] [-scan_force]
+ [file ...]
+
+Boolean options can be negated by a no-prefix. So -noquiet makes a
+previous -quiet undone. Useful in combination with rcfiles.
+
+=cut
+
+# more pod at the end
+
+use Getopt::Long;
+use Carp;
+use Cwd;
+use Env;
+use File::Basename;
+use Config;
+use Term::ReadKey qw(ReadLine);
+
+# following initialized because of -w noise
+use vars qw ( $quiet $help $version
+ $message_draft $scan_force $scan $go
+ $name
+ );
+$msdos = $Config{'osname'} =~ /ms/i;
+$texfile_search=$clean_ext=$full_clean_ext="";
+@cus_dep_list=();
+$comline=join(' ',@ARGV);
+
+if ($msdos) {
+ $TEMP= "\\tmp\\";
+ $tonull = "> ${TEMP}tonull";
+ $fromnull = "< ${TEMP}fromnull";
+ system("echo > ${TEMP}fromnull");
+ $systemrcfile = "\\lib\\prv\\prv";
+ $userrcfile = "$HOME\\prv.rc";
+ $rc_file = "prv.rc";
+ $copy = "copy";
+ $lpr = 'print';
+ $ps_previewer = 'gv';
+ $ps_previewer_landscape = 'gv';
+ $dvi_previewer = 'windvi';
+ $dvi_previewer_landscape = 'windvi';
+ $dvi_cont_previewer = 'dviwin2 -1 -c';
+ $dvi_cont_previewer_landscape = 'dviwin2 -1 -c';
+} else {
+ $TEMP= "/tmp/";
+ $tonull = "> /dev/null";
+ $fromnull = "< /dev/null";
+ $systemrcfile = '/etc/prvrc';
+ $userrcfile = "$HOME/.prvrc";
+ $rc_file = ".prvrc";
+ $copy = "cp -p";
+ $lpr = 'lpr';
+ $ps_previewer = 'gv';
+ $ps_previewer_landscape = 'gv -swap';
+ $dvi_previewer = 'xdvi';
+ $dvi_previewer_landscape = 'xdvi -paper a4r';
+ $dvi_cont_previewer = 'xdvi';
+ $dvi_cont_previewer_landscape = 'xdvi -paper a4r';
+}
+-d $TEMP or die "Missing directory $TEMP\n";
+-w $TEMP or die "Unwritable directory $TEMP\n";
+
+## default document processing programs.
+$latex = 'latex';
+$bibtex = 'bibtex -terse';
+$makeindex = 'makeindex';
+$dvips = 'dvips -s';
+$dvips_landscape= 'dvips -tlandscape';
+$pscmd = 'ps x'; # This works for SunOs. Solaris should just be 'ps'
+$touch = 'touch';
+$psselect = 'psselect';
+$pstops = 'pstops';
+$diff = 'diff';
+$dvi_filter = "";
+$ps_filter = "";
+$leader=$trailer= "";
+
+# default flag settings.
+$bibtex_mode = 0; # is there a bibliography needing bibtexing?
+$index_mode = 0; # is there an index needing makeindex run?
+$sleep_time = 2; # time to sleep b/w checks for file changes in -pvc mode
+
+# Read rc files.
+for ($systemrcfile,$userrcfile,$rc_file) {
+ -e $_ and do $_;
+}
+
+print_help() unless @ARGV;
+
+# Process command line args.
+$batch='';
+GetOptions(
+ "die" => \$die,
+ "intensity_draft=f" => \$intensity_draft,
+ "message_draft=s" => \$message_draft,
+ "scale_draft=i" => \$scale_draft,
+ "batch=s" => \$batch,
+ "clean!" => \$clean,
+ "full_clean!" => \$full_clean,
+ "draft!" => \$draft,
+ "dvi_filter=s" => \$dvi_filter,
+ "continue!" => \$continue,
+ "ignore_missing_includes!" => \$ignore_missing_includes,
+ "go!" => \$go,
+ "help" => \$help,
+ "scan!" => \$scan,
+ "scan_force!" => \$scan_force,
+ "landscape!" => \$landscape,
+ "printout!" => \$printout,
+ "ps!" => \$ps,
+ "ps_filter=s" => \$ps_filter,
+ "pv!" => \$pv,
+ "pvc!" => \$pvc,
+ "quiet!" => \$quiet,
+ "rcfile=s" => \$rcfile,
+ "version" => \$version,
+) or print_help("Option problem in `".$comline."'");
+
+# $batch must contain valid printing commands:
+if ($batch) {
+ for (split(/\s+/,$batch)) {
+ CASE: {
+ /^q$/ and last CASE; # drop on n of q
+ /^x[0-9]+$/ and last CASE; # x3 -> lpr -#3
+ /^b$/ and last CASE; # print a5 booklet
+ /^t$/ and last CASE; # print twosided
+ /^a$/ and last CASE; # print all
+ /^(([0-9]+-?[0-9]*|[0-9]*-?[0-9]+),?)+$/ # n-m or n- or -m
+ and last CASE;
+ die "Illegal argument for -batch option: $batch\nUse q if you want no printout\n";
+ }
+ }
+}
+
+$version and warn "\nprv $version_num\n";
+$help and print_help("");
+$pvc and $quiet=1;
+$draft=1 if $message_draft;
+$scale_draft = 220 unless $scale_draft;
+$intensity_draft = 0.95 unless $intensity_draft;
+$message_draft = 'DRAFT' unless $message_draft;
+do $rcfile if $rcfile;
+$clean=1 if $full_clean;
+$pv=0 if $batch or $pvc;
+($intensity_draft <0 || $intensity_draft > 1) and
+ die "Banner intensity must be 0 - 1\n";
+($scale_draft <10 || $scale_draft > 10000) and
+ die "Banner scale must be 10 - 10000\n";
+
+# If no files specified, try and find some
+@ARGV=glob($texfile_search) unless @ARGV;
+
+# If still no files, exit.
+print_help("prv: No filename specified\n") if (!@ARGV);
+
+# If landscape mode, change modes
+if ( $landscape ) {
+ $dvips = $dvips_landscape;
+ $dvi_previewer = $dvi_previewer_landscape;
+ $dvi_cont_previewer = $dvi_cont_previewer_landscape;
+ $ps_previewer = $ps_previewer_landscape;
+}
+
+if ($quiet) {
+ $dvips.=" -q";
+ $dvips_landscape.=" -q";
+}
+
+=pod
+
+This is how it works:
+
+=head2 do some initializations.
+
+=head2 read the rc-files for customization:
+
+ /etc/prvrc, $HOME/.prvrc, and ./.prvrc, in that order under Unix, or
+ \\lib\\prv\\prv", $HOME\\prv.rc", and prv.rc" under MD-DOS
+
+These files may contain Perl-statements that set some variables
+
+=head2 handle the command line options and get the filename(s) to be compiled
+
+prv looks for filenames on the command line and, if there are none, in the
+variable $texfile_search that may have been set in an rc-file.
+
+=head2 save current working directory
+
+=head2 for each source to be compiled:
+
+return to the starting directory, get the source's path and
+chdir to the source's directory.
+If the file is'nt found there,
+
+=cut
+
+
+# save current working directory, we'll want to get back here:
+$startdir=cwd;
+
+RESTART:
+# Process for each file.
+for $filename ( @ARGV ) {
+ chdir $startdir; # look from here, for relative paths
+
+ # add a .tex extension if it lacks.
+ # if a path is given, move to it
+ ($root_filename,$path,$ext)=fileparse($filename,'\.tex');
+ $tex_filename="$root_filename.tex";
+ $linenum=1; # editing sessions start at this line
+ @filestack=($tex_filename); # file to be edited
+ chdir $path;
+ if ( (! -f $tex_filename) && # if the file is not found here
+ ($path eq "./") && # and no path was specified
+ ($leader || $trailer)) { # then try adding leader and trailers
+ # to the original name:
+ $filename=$leader.$filename.$trailer;
+ redo;
+ }
+ -f $tex_filename or die "No file $path$tex_filename found\n";
+
+ if ($clean) {
+ warn "Cleaning for $root_filename\n" unless $quiet;
+ # Do clean if necessary
+ cleanup();
+ cleanup_full() if ($full_clean);
+ } else {
+ # Make file
+ # Find includes
+ $includes = '';
+ $read_depend = 0; # True to read depend file, false to generate it.
+ $depfile = "$root_filename.dep";
+
+ # Figure out if we read the dependency file or generate a new one.
+ if ( ! $scan_force ) {
+ if ( $scan ) {
+ if ( -e $depfile ) {
+ # Compare timestamp of dependency file and root tex file.
+ $dep_mtime = &get_mtime("$depfile");
+ $tex_mtime = &get_mtime("$tex_filename");
+ $read_depend = 1 if ( $tex_mtime < $dep_mtime );
+ }
+ } elsif ( -e $depfile ) { # If dependency file already exists.
+ $read_depend = 1;
+ }
+ }
+
+ if ( $read_depend ) {
+ # Read the dependency file
+ open(DEPFILE,$depfile) ||
+ die "prv: Couldn't open dependency file [$root_filename.dep]\n";
+ while(<DEPFILE>) { eval; }
+ close(DEPFILE);
+ } else {
+ # Generate dependency file.
+ # get search paths for includes.
+ if (!$TEXINPUTS) { $TEXINPUTS = '.'; }
+ if (!$BIBINPUTS) { $BIBINPUTS = $TEXINPUTS; }
+
+ &scan_for_includes("$tex_filename");
+ &update_depend_file;
+ }
+
+ ## put root tex file into list of includes.
+ $includes .= " $tex_filename";
+
+ ## before munging, save existing .aux file.
+ ## - if latex bombs, kill .aux, restore this backup to get back most
+ ## useful bib/ref info.
+ sys("$copy $root_filename.aux $root_filename.auk $tonull")
+ if -f "$root_filename.aux";
+
+ #************************************************************
+
+ &make_dependents("$includes");
+ &make_latex_dvi;
+ &make_dvi_filtered;
+ &make_preview_continuous;
+ &make_postscript;
+ &make_preview;
+ &make_printout;
+ }
+}
+
+#************************************************************
+#### Subroutines
+#************************************************************
+
+sub make_latex_dvi {
+ $changed_dvi = 0 ; # flag if anything changed.
+ ## get initial last modified times.
+ $tex_mtime = &get_latest_mtime($includes);
+ $aux_mtime = &get_mtime("$root_filename.aux");
+ $bbl_mtime = &get_mtime("$root_filename.bbl");
+ $ilg_mtime = &get_mtime("$root_filename.ilg");
+ $ind_mtime = &get_mtime("$root_filename.ind");
+
+ ## - if no dvi file, or .aux older than tex file or bib file, run latex.
+ if ( $go || !(-e "$root_filename.dvi")
+ || ($aux_mtime < $tex_mtime)
+ || ($aux_mtime < $bbl_mtime)
+ || ($aux_mtime < $ilg_mtime)
+ || ($aux_mtime < $ind_mtime)
+ || !(-e "$root_filename.aux")) {
+ message("Running first $latex [$tex_filename]");
+ &backup_toc;
+ unlink "$root_filename.dvi"; # just in case latex produces no output...
+ $return = run_latex();
+ unless (-f "$root_filename.dvi") {
+ warn "Latex produced no output!\n" unless $return;
+ $return=1;
+ }
+ die "Giving up...\n" if $return && $die;
+ $changed_dvi = 1;
+
+ if (!$continue && $return) {
+ message("$latex found an error in\n$startdir/$root_filename.tex");
+ unlink "$startdir/$root_filename.dvi";
+ edit(1);
+ }
+
+ if ($index_mode) {
+ message("Running $makeindex [$root_filename]");
+ $return = sys("$makeindex $root_filename");
+
+ if (!$continue && $return) {
+ &exit_msg('Makeindex found an error');
+ }
+ $ilg_mtime = &get_mtime("$root_filename.ilg");
+ $ind_mtime = &get_mtime("$root_filename.ind");
+ }
+ }
+
+ $bib_mtime = &get_latest_mtime($bib_files);
+ ## if no .bbl or .bib changed since last bibtex run, run bibtex.
+ if ($bibtex_mode && (&check_for_bad_citation || !(-e "$root_filename.bbl")
+ || ($bbl_mtime < $bib_mtime))) {
+ message("Running $bibtex [$root_filename]");
+ $return = sys("$bibtex $root_filename");
+ $bbl_mtime = &get_mtime("$root_filename.bbl");
+ }
+
+ if ($bibtex_mode && &check_for_bibtex_errors) {
+ if (!$continue) {
+ # touch a .bib file so that will rerun bibtex to fix errors.
+ @split_bib_files = split(' ',$bib_files);
+ sys("$touch $split_bib_files[0]");
+ &exit_msg('Bibtex reported an error',0);
+ }
+ }
+
+ ## now, if need to, rerun latex up to twice to generate valid .dvi
+ ## w/ citations resolved.
+
+ $dvi_mtime = &get_mtime("$root_filename.dvi");
+ if ( ($dvi_mtime <= $bbl_mtime) || &check_for_reference_change
+ || ($dvi_mtime <= $ilg_mtime)
+ || ($dvi_mtime <= $ind_mtime)
+ || (&check_toc)) {
+ message("Running second $latex [$tex_filename]");
+ &backup_toc;
+ $return = run_latex();
+ $changed_dvi = 1;
+ }
+
+ if (!$continue && $return) {
+ &exit_msg('$latex found an error',1);
+ }
+
+ if (&check_for_reference_change || &check_toc) {
+ message("Running third $latex [$tex_filename]");
+ &backup_toc;
+ $return = run_latex();
+ $changed_dvi = 1;
+ }
+
+ if (!$continue && &check_for_bad_reference) {
+ &exit_msg('$latex could not resolve all references');
+ }
+
+ if (!$continue && &check_for_bad_citation) {
+ &exit_msg('$latex could not resolve all citations or labels');
+ }
+ return(1);
+}
+
+#************************************************************
+
+sub make_dvi_filtered {
+ return if ( length($dvi_filter) == 0 );
+ message("Running $dvi_filter [$root_filename]");
+ sys("$dvi_filter < $root_filename.dvi > $root_filename.dvf");
+}
+
+#************************************************************
+
+sub make_dependents {
+ local($file,$dep,$base_name,$ch,$toext,$fromext,
+ $proptoext,$must,$func_name,$return);
+
+ for $file (split(' ',$_[0])) { $ch = '';
+ $toext = '';
+ $base_name = $file;
+ while (( $ch ne '.' ) && ( $ch ne '/' ) && ( $base_name ne '' )) {
+ $toext = $ch . $toext;
+ $ch = chop $base_name;
+ }
+ if (( $ch eq '.' ) && ( $base_name ne '' )) {
+ #Extracted proper extension.
+ for $dep ( @cus_dep_list ) {
+ ($fromext,$proptoext,$must,$func_name) = split(' ',$dep);
+ if ( $toext eq $proptoext ) {
+ # Found match
+ if ( -e "$base_name.$fromext" ) {
+ # From file exists, now check if it is newer
+ if (( ! (-e "$base_name.$toext" ))
+ || ( &get_mtime("$base_name.$toext")
+ < &get_mtime("$base_name.$fromext") )) {
+ message("Running $func_name [$base_name]");
+ $return = &$func_name($base_name);
+ if ( !$continue && $return ) {
+ &exit_msg("$func_name found an error");
+ }
+ }
+ } else {
+ if ( !$continue && ( $must != 0 )) {
+ &exit_msg("File '$base_name.$fromext' does not exist".
+ "to build '$base_name.$toext'\n");
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+#************************************************************
+
+sub make_printout {
+ $printout or return;
+ $batch=~/^q$/ and return;
+
+ local ($ext);
+ $ext = $ps_filter ? '.psF' : '.ps';
+ my $tmp = "${TEMP}$$";
+ my $sel="${tmp}sel";
+ my $print_prompt="printer ready? then turn pack and type return ";
+ my $front_spec='"4:-3L@.707(210mm,0)+0L@.707(210mm,148.5mm)"';
+ my $back_spec='"4:1L@.707(210mm,0)+-2L@.707(210mm,148.5mm)"';
+
+ while (1) {
+ my ($selection,$booklet,$twosided,$lpropt)=ask_selection($batch);
+ defined($selection) or return;
+ if ($selection) { # if anything was set
+ print STDERR "\n";
+ make_postscript();
+ $selection =~ /[1-9]/ or $selection.=" -e -o ";
+ sys("$psselect -q $selection $root_filename.ps $sel");
+ if ($booklet) {
+ sys("$pstops -q $front_spec $sel >$tmp"); # no piping: non-Unix OS
+ sys("$lpr $lpropt $tmp"); # can get problems
+ print STDERR $print_prompt; ReadLine 0;
+ sys("$pstops -q $back_spec $sel >$tmp");
+ sys("$lpr $lpropt $tmp");
+ unlink $tmp;
+ } elsif ($twosided) {
+ sys("$pstops 2:0 $sel >$tmp");
+ sys("$lpr $lpropt $tmp");
+ print STDERR $print_prompt; ReadLine 0;
+ sys("$pstops 2:1 $sel >$tmp");
+ sys("$lpr $lpropt $tmp");
+ } else {
+ sys("$lpr $lpropt $sel");
+ }
+ }
+ unlink $sel;
+ last if $batch;
+ }
+}
+
+sub ask_selection {
+ my $prompt='Pages ([range[,range...]|a] [b|t] [x<n>])? ';
+ my $com=shift || ask($prompt);
+ chomp($com);
+ my ($booklet,$twosided,$selection,$lpropt)=('','','','');
+ for (split(/\s+/,$com)) {
+ CASE: {
+ /^q$/ # drop on q
+ and return undef;
+ /^e$/ # edit $root_filename.tex, then exit
+ and edit(0);
+ /^x[0-9]+$/ # x3 -> lpr -#3
+ and do {
+ s/x//;
+ $batch or print STDERR " $_ copies";
+ $lpropt = '-#'.$_;
+ $selection.=" -q";
+ },
+ last CASE;
+ /^b$/ # print a5 booklet
+ and do {
+ $selection.=" -q ";
+ $batch or print STDERR " booklet";
+ $booklet=1;
+ },
+ last CASE;
+ /^t$/ # print twosided
+ and do {
+ $selection.=" -q";
+ $twosided=1;
+ $batch or print STDERR " twosided";
+ },
+ last CASE;
+ /^a$/ # print all
+ and do {
+ $selection="-e -o";
+ $batch or print STDERR " all pages";
+ },
+ last CASE;
+ /^(([0-9]+-?[0-9]*|[0-9]*-?[0-9]+),?)+$/ # n-m or n- or -m
+ and do {
+ s/^-/1-/;
+ ($selection=$_) =~ s/,$//;
+ $batch or print STDERR " pages: $selection";
+ },
+ last CASE;
+
+ warn
+ "Illegal specification(s)\n".
+ "Examples of page specifications:\n".
+ "5 to print page 5\n".
+ "5- to print pages 5 through the end\n".
+ "5-7 to print pages 5, 6 and 7\n".
+ "-7 to print the first 7 pages\n".
+ "5-7,19- to print pages 5, 6, 7 and 19 through the end\n".
+ "a to print the whole document\n".
+ "a x3 to print 3 copies of the document\n".
+ "x3 the same\n".
+ "5 x3 to print 3 copies of page 5\n".
+ "t print the whole document twosided\n".
+ "t 2- print twosided starting at page 2\n".
+ "b to print the whole document as an a5 size booklet\n".
+ "b -12 to print the first 12 pages as an a5 size booklet\n".
+ "e edit the tex source and rerun prv\n".
+ "q quit\n".
+ "";
+
+ }
+ }
+ ($selection,$booklet,$twosided,$lpropt)
+}
+sub ask {
+ print $_[0];
+ my $x=ReadLine 0;
+ chomp($x);
+ $x;
+}
+
+#************************************************************
+sub edit {
+ $EDITOR or die "EDITOR environment variable undefined\n";
+ my $x;
+ if ($_[0]) {
+ while(($x=ask("=====> e(dit) q(uit) "))!~/^(q|e)$/) { warn "you must type e or q\n" }
+ $x eq 'q' and exit;
+ }
+ die unless $linenum;
+ system("$EDITOR +$linenum ".(pop(@filestack)));
+ goto RESTART;
+}
+
+sub make_postscript {
+ if ( ! $draft ) {
+ return if (!$ps && !$printout);
+ }
+ local ($tmpfile,$header,$dvi_file);
+
+ # Figure out the dvi file name
+ if ( length($dvi_filter) == 0 ) {
+ $dvi_file = "$root_filename.dvi";
+ } else {
+ $dvi_file = "$root_filename.dvf";
+ }
+
+ # Do banner stuff
+ if ( $draft ) {
+ ## Make temp banner file
+ local(*OUTFILE,$count);
+
+ $tmpfile = "${TEMP}prv.$$";
+ $count = 0;
+ while ( -e $tmpfile ) {
+ $count = $count + 1;
+ $tmpfile = "${TEMP}prv.$$.$count";
+ }
+ if ( ! open(OUTFILE, ">$tmpfile") ) {
+ die "prv: Could not open temporary file [$tmpfile]\n"; }
+ print OUTFILE "userdict begin /bop-hook{gsave 200 30 translate\n";
+ print OUTFILE "65 rotate /Times-Roman findfont $scale_draft".
+ "scalefont setfont\n";
+ print OUTFILE "0 0 moveto $intensity_draft setgrays".
+ "($message_draft) show grestore}def end\n";
+ close(OUTFILE);
+ $header = "-h $tmpfile";
+ } else {
+ $header = ''
+ }
+
+ $ps_mtime = &get_mtime("$root_filename.ps");
+ $dvi_mtime = &get_mtime("$dvi_file");
+ if (( $ps_mtime < $dvi_mtime ) || $draft ) {
+ message("Running $dvips [$root_filename]");
+ sys("$dvips $header $dvi_file -o $root_filename.ps");
+ }
+ unlink("$tmpfile") if $draft;
+
+ ## Do we have postscript filtering?
+ if ( length($ps_filter) != 0 ) {
+ message("Running $ps_filter [$root_filename]");
+ sys("$ps_filter < $root_filename.ps > $root_filename.psF");
+ }
+}
+
+#************************************************************
+# run appropriate previewer.
+
+sub make_preview {
+ return if (!$pv);
+ $viewer = $dvi_previewer;
+ $ext = '.dvi';
+ if ($ps) {
+ $viewer = $ps_previewer;
+ $ext = '.ps';
+ if ( length($ps_filter) != 0 ) {
+ $ext = '.psF';
+ }
+ } else {
+ if ( length($dvi_filter) != 0 ) {
+ $ext = '.dvf';
+ }
+ }
+ message("Starting previewer: $viewer $root_filename$ext");
+ sys("$viewer $root_filename$ext");
+}
+
+sub backup_toc {
+ if ( -e "$root_filename.toc" ) {
+ sys("$copy $root_filename.toc $root_filename.tok $tonull");
+ }
+}
+
+#************************************************************
+# Compare the toc file with the backup. If they differ then
+# return non-zero.
+sub check_toc {
+ local($return);
+
+ if ( -e "$root_filename.toc" ) {
+ if ( -e "$root_filename.tok" ) {
+ $return = sys("$diff $root_filename.tok $root_filename.toc $tonull");
+ } else {
+ $return = 1
+ }
+ } else {
+ $return = 0;
+ }
+ return($return);
+}
+
+#************************************************************
+# arg1 = name
+
+sub find_process_id {
+ local(@command);
+ @ps_output = `$pscmd`;
+ shift(@ps_output); # Discard the header line from ps
+ for (@ps_output) {
+ ($pid,$tt,$tt,$tt,@command) = split(' ',$_);
+ return($pid) if "@command" eq "$_[0]";
+ }
+ return(0);
+}
+
+#************************************************************
+
+sub make_preview_continuous {
+ return if (!$pvc);
+ #
+ local ($dvi_file);
+ # get the value of SIGUSR1, defaults to Linux value.
+ # try kill -l to figure your value out
+ if (!(do 'signal.ph'))
+ {
+ eval 'sub SIGUSR1 {10;}';
+ }
+ # Figure out the dvi file name
+ if ( length($dvi_filter) == 0 )
+ {
+ $dvi_file = "$root_filename.dvi";
+ }
+ else
+ {
+ $dvi_file = "$root_filename.dvf";
+ }
+ # note, we only launch a previewer if one isnt already running...
+ # otherwise we'll send reopen signals to the existing previewer.
+ if ($msdos) {
+ warn "$dvi_cont_previewer $dvi_file\n";
+ sys("$dvi_cont_previewer $dvi_file");
+ } else {
+ if ($previewer_pid = &find_process_id("$dvi_cont_previewer $dvi_file")) {
+ message("Reattached to existing previewer, pid=$pid");
+ kill &SIGUSR1,$previewer_pid;
+ } else {
+ if (!($previewer_pid = fork)) {
+ # in forked child, close off from parent so previewer runs on
+ # after parent 'prv' dies.
+ setpgrp($$,0);
+ message("$dvi_cont_previewer $dvi_file");
+ exec("$dvi_cont_previewer $dvi_file");
+ }
+ }
+ }
+ # Loop forever, rebuilding .dvi as necessary.
+ while ( 1 )
+ {
+ sleep($sleep_time);
+ &make_latex_dvi;
+ if ($changed_dvi)
+ {
+ kill &SIGUSR1,$previewer_pid;
+ }
+ }
+}
+
+#************************************************************
+
+sub get_mtime {
+ my $m=(stat($_[0]))[9];
+ $m ? $m : 0;
+}
+
+#************************************************************
+
+sub check_for_reference_change {
+ local($logfile) = "$root_filename.log";
+ open(LOGFILE,$logfile) ||
+ die "prv: Could not open log file to check for reference check\n";
+ while(<LOGFILE>) {
+ return(1) if (/Rerun/);
+ }
+ 0;
+}
+
+#************************************************************
+
+sub check_for_bad_reference {
+ local($logfile) = "$root_filename.log";
+ open(LOGFILE,$logfile) ||
+ die "prv: Could not open log file to check for bad reference\n";
+ while (<LOGFILE>)
+ {
+ if (/LaTeX Warning: Reference[^\001]*undefined./) { return 1; }
+ }
+ 0;
+}
+
+#************************************************************
+# check for citation which latex couldnt resolve.
+
+sub check_for_bad_citation {
+ local($logfile) = "$root_filename.log";
+ open(LOGFILE,$logfile) ||
+ die "prv: Could not open log file to check for bad citation\n";
+ while (<LOGFILE>)
+ { chomp;
+ warn WHITE,ON_RED,BOLD,substr($_,2),RESET,"\n" if /^--/;
+ if (/LaTeX Warning: Citation[^\001]*undefined./) { return 1; }
+ }
+ 0;
+}
+
+#************************************************************
+# check for citation which bibtex didnt find.
+
+sub check_for_bibtex_errors {
+ local($logfile) = "$root_filename.blg";
+ open(LOGFILE,$logfile) ||
+ die "prv: Could not open bibtex log file error check\n";
+ while (<LOGFILE>)
+ {
+# if (/Warning--/) { return 1; }
+ if (/error message/) { return 1; }
+ }
+ 0;
+}
+
+#************************************************************
+# cleanup
+# - erases all generated files, exits w/ no other processing.
+
+sub cleanup {
+ unlink("$root_filename.aux");
+ unlink("$root_filename.auk");
+ unlink("$root_filename.bbl");
+ unlink("$root_filename.blg");
+ unlink("$root_filename.log");
+ unlink("$root_filename.ind");
+ unlink("$root_filename.idx");
+ unlink("$root_filename.ilg");
+ unlink("$root_filename.toc");
+ unlink("$root_filename.tok");
+ unlink("$root_filename.lof");
+ unlink("$root_filename.lot");
+ unlink("$root_filename.dep");
+ unlink("texput.log");
+ unlink("texput.aux");
+
+ # .aux files are also made for \include'd files
+ if ($includes) {
+ for $include (split(' ',$includes)) {
+ $include =~ s/\.[^\.]*$/.aux/;
+ unlink($include);
+ }
+ }
+ # Do any other file extensions specified
+ for $ext (split(' ',$clean_ext))
+ {
+ unlink("$root_filename.$ext");
+ }
+}
+
+#************************************************************
+sub cleanup_full {
+ unlink("$root_filename.dvi");
+ unlink("$root_filename.ps");
+ unlink("$root_filename.dvf");
+ unlink("$root_filename.psF");
+ unlink("texput.dvi");
+ # Do any other file extensions specified
+ for $ext (split(' ',$full_clean_ext)) {
+ unlink("$root_filename.$ext");
+ }
+}
+
+#************************************************************
+sub print_help {
+ exit(1) if $full_clean;
+ while (<DATA>) { print STDERR }
+ $_=$_[0] and die "\nError in prv version $version_num: $_[0]\n";
+ exit(1);
+}
+
+#************************************************************
+# - stats all files listed in first arg, returns most recent modify time of all.
+
+sub get_latest_mtime {
+ return 0 unless $_[0];
+ local($return_mtime) = 0;
+ for $include (split(' ',$_[0])) {
+ $include_mtime = &get_mtime($include);
+ if ($include_mtime > $return_mtime)
+ {
+ $return_mtime = $include_mtime;
+ }
+ }
+ $return_mtime;
+}
+
+#************************************************************
+# - looks recursively for included & inputted and graphics files and puts
+# them into $includes.
+# - note only primitive comment removal: cannot deal with escaped %s, but then,
+# when would they occur in any line important to prv??
+
+sub scan_for_includes {
+ message("Generating Dependency File [$root_filename]");
+ $bib_files=$includes=$graphicspath='';
+ &scan_for_includes_($_[0]);
+}
+
+sub scan_for_includes_ {
+ local(*FILE,$orgfile); # because this sub calls itself
+ my %commands=('include' =>'.tex',
+ 'input' =>'.tex',
+ 'includegraphics'=>'.ps',
+ 'verbatimfile' =>'.tex',
+ 'verbatiminput' =>'.tex',
+ 'bibliography' =>'',
+ 'graphicspath' =>'',
+ );
+ if (!open(FILE,$_[0])) {
+ warn "prv: could not open input file [$_[0]]\n";
+ return;
+ }
+ while(<FILE>) {
+ chomp;
+ s/^%\\input/\input/; # a line beginning with %\input can be used to
+ # indicate dependency files that would not be
+ # recognised otherwise
+ s/%.*//;
+ /^\\documentclass.*landscape/ and do {
+ warn " Detected landscape mode\n" unless $quiet;
+ $landscape = 1;
+ };
+ /\\makeindex/ and do {
+ warn " Detected index mode\n" unless $quiet;
+ $index_mode = 1;
+ };
+ s/\\\\//g; # remove newlines
+ s/\[.*?\]//g; # remove optional parameters
+ s/([^\\])%.*/$1/; # remove comment
+ /\\verb(.)/ and s/\\verb$1.*?$1//g; # remove \verb!...!
+ next unless /\\/; # skip if no commands
+ s/.*?\\/\\/; # remove upto first \backslash
+ for ((split(/\\/))) {
+ s/{{(.*)}}/{$1}/; # graphicspath{{p1}{p2}} -> ...path{p1}{p2}
+ s/}{/:/g; # -> ...path{p1,p2}
+ s/(.*}).*/$1/; # remove all after last }
+ s/\s*([{}])\s*/$1/g; # remove space around { and }
+ s/}.*//; # remove all after }
+ $keys=join('|',(keys %commands)); # input|include|...
+
+ next unless /^($keys)(\[.*?\])?{(.*)/;
+ $orgfile=$file=$3;
+ $command=$1;
+ if ($command eq 'bibliography') {
+ $file=~s/\.bib\b//g; # remove .bib extensions
+ my $com="kpsewhich ".join(".bib ",split(/,/,$file)).".bib";
+ $bib_files=join(' ',(split(/\n/,`$com`)));
+ warn " Found bibliography files [$bib_files]\n" unless $quiet;
+ $bibtex_mode = 1;
+ } elsif ($command eq 'graphicspath') {
+ ($graphicspath = $file) =~ s/{(.*?)}/:$1/g;
+ } else {
+ next if $file=~/#/; # skip if it is a parameter in a command
+ my $opt=$command eq 'includegraphics' && $graphicspath ? "--path=$graphicspath" : '';
+ my $ext=$commands{$command};
+ $file=~/$ext$/ or $file.=$ext; # append default extension if its lacks
+ chomp($file = `kpsewhich $opt $file`); # lookup in the tex-tree
+ $file||chomp($file=`kpsewhich $opt $orgfile`); # on fail, try without default extension
+
+ if ($file) {
+ $includes.="$file ";
+ warn " Added '$file'\n" unless $quiet;
+ $file=~/\.tex$/ and scan_for_includes_($file);
+ } else {
+ warn "Missing file $orgfile for \\$command command\n";
+ die "Quitting....\n" unless $ignore_missing_includes;
+ }
+ }
+ }
+ }
+}
+
+#************************************************************
+sub exit_msg
+{ my ($message,$fatal)=@_;
+ warn "\n------------\n";
+ carp "prv: $message.\n";
+ warn "-- Use the -continue option to force complete processing.\n";
+ sys("grep 'LaTeX Warning' $root_filename.log");
+ if ($fatal) {
+ warn "prv: restoring last $root_filename.aux file\n";
+ sys("$copy $root_filename.auk $root_filename.aux $tonull");
+ exit(1);
+ }
+}
+
+#************************************************************
+
+sub update_depend_file
+{
+ message("Writing dependency file [$root_filename.dep]\n");
+ $rc_file = ">$root_filename.dep";
+ open(RCFILE,$rc_file) ||
+ die "prv: Unable to open dependency file [$rc_file] for updating\n";
+ print RCFILE '$includes = \'' . "$includes';\n";
+ print RCFILE '$bib_files = \'' . "$bib_files';\n";
+ print RCFILE '$bibtex_mode = 1;' . "\n" if $bibtex_mode;
+ print RCFILE '$index_mode = 1;' . "\n" if $index_mode;
+ close RCFILE;
+}
+
+#************************************************************
+
+sub message {
+ return 0 if $quiet;
+ my $mess=shift;
+ carp "----------\n$mess\n----------\n";
+}
+
+#************************************************************
+
+sub run_latex {
+ my $myquiet=$quiet;
+ my $err=$myquiet ? sys("$latex $tex_filename $tonull $fromnull")
+ : sys("$latex $tex_filename");
+ if ($err) {
+ @filestack=($filestack[0]); # empty @filestack except for the first entry (the main document)
+ warn "found error $err\n";
+ open(IN,"$root_filename.log");
+ while(<IN>) {
+ my $line=$_;
+ $line=~s/\(.*?\)//g; # remove (...)
+ while ($line=~/\)/g) { pop(@filestack) } # each ) closes a previous file
+ $line=~/\(([^(]*)/ and push(@filestack,$1); # push new filename
+ /^l\.(\d+)/ and $linenum=$1; # error's linenumber
+ if ($quiet) { # just report the error
+ last if /^(\?|Type X)/ && !$myquiet;
+ $myquiet=0 if /^\!/ || /^Runaway/;
+ print STDERR unless $myquiet;
+ } else { # report everything
+ print STDERR;
+ }
+ }
+ close(IN);
+ return $err;
+ } else { # check log file to see if a rerun is needed:
+ open(LOG,"$root_filename.log");
+ while (<LOG>) {
+ /LaTeX Warning.*Rerun/ and run_latex(),last;
+ }
+ close LOG;
+ }
+ return 0;
+}
+
+sub sys {
+ my $command=shift;
+ print STDERR "system call: $command\n" unless $quiet;
+ system($command);
+}
+
+=pod
+
+=head1 DESCRIPTION
+
+B<prv> completely automates the process of generating a LaTeX
+document. Essentially, it is a highly specialized relative of the
+general make utility. Given the source files for a document,
+B<prv> issues the appropriate sequence of commands to generate a
+.dvi, .ps or hardcopy version of the document.
+
+B<prv> will scan source files for all included files, placing the
+resulting dependency information into a dependency file with the same
+name as the root file with the extension .dep. This option allows the
+user to essentially leave all the work to B<prv>. The program will
+find all LaTeX \include, \input, and \includegraphics commands which
+input other source files. As a special case, B<prv> will interpret lines
+beginning with exactly "%\input" as if they were lines beginning with
+"\input". You can use such lines to force recognition of file
+dependencies that would not otherwise be recognized. For example, the moreverb.sty
+package has a command \listinginput that includes a file, but would not be found
+by B<prv>.
+
+When B<prv> is run, it will examine the
+timestamps on those files and run the various LaTeX processing
+programs as necessary, if any of the source files have been changed
+since the last document generation. If the dependencies of the
+document are changed (e.g., by adding or removing a \include command),
+an additional pass of B<prv> -scan or prv -scan_force will update the
+dependency file.
+
+By default, if no dependency exists, the source files are scanned and
+the dependency file generated. If the dependency file exists, it is
+read instead (even if the root file is newer than the dependency file
+(see -scan option))
+
+B<prv> has two different previewing options. In the simple -pv
+option, a postscript or dvi previewer is automatically run after
+generating the postscript or dvi version of the document. The type of
+viewer is selected automatically depending on the -ps option. When a
+document is reaching the final stages of editing, the user frequently
+wants to make small changes to the source files and examine the
+effects in a previewer; for this phase, B<prv> provides the
+powerful -pvc option (mnemonic: "preview continuously"). With this
+option, B<prv> forks a child process to run an xdvi (or other
+specified) previewer on the document, and then B<prv> repeatedly
+monitors the source files of the document to see if any changes have
+been made since the last .dvi file was produced. When changes are
+detected, B<prv> runs the appropriate LaTeX commands to regenerate
+the .dvi file, and then sends a signal to xdvi job, indicating that
+the previewer should update its display. Thus the user can simply
+edit a file and, when the changes are written to disk, B<prv>
+completely automates the cycle of updating the .dvi and refreshing the
+previewer's display. It's not quite WYSIWYG, but LaTeX has never been
+closer.
+
+B<prv> has the ability to print a banner in gray diagonally across
+each page when making the postscript file.
+
+This script is derived from LatexMk version 2.0, which has undergone a
+major revision by wybo@servalys.nl. In particular, the options
+have been renamed to long names using the Getops::Long module. And
+page and print-format selection has been built in.
+
+=head1 OPTIONS
+
+Before evaluating any options, B<prv> will try to read a system rc-file,
+a user rc-file, and, finally an rc-file in the current directory.
+The system rc-file, if it exists, is /etc/prvrc (\prv.rc for
+MSDOS users), the user rc-file is $HOME/.prvrc ($HOME\prv.rc for MSDOS users) and the
+local one is .prvrc (prv.rc for MSDOS).
+Options can be set in the rc-files with statements like:
+
+ $quiet=1;
+ $message_draft="ENTWURF";
+
+So if you usually like B<prv> to work quietly, you can indicate so in your rc-file
+and change your mind in some cases by using the -noquiet (or perhaps -noq) option.
+See also the section on RC FILES.
+
+=over 4
+
+=item file
+
+One or more files can be specified. If no files are specified,
+B<prv> will run on any files that match any file masks specified
+in the $texfile_search variable.
+
+B<prv> requires source files to have a .tex extension. If the filename
+is specified without it, it is automatically appended.
+So if you specify:
+
+ prv foo
+
+then B<prv> will try to operate on the file "foo.tex".
+
+=item -batch <printing command string>
+
+Prevents the -printout option the interrogate the user about pages to be
+printed. Instead the document is printed according to the mandatory <print command string>.
+Also sets previewing off.
+Thus the command
+
+ prv -batch '2-3 x3' test
+
+print 3 copies of pages 2 and 3 of test.tex, without previewing.
+
+=item -clean
+
+Clean up (remove) all unnecessary files generated by latex and bibtex
+except dvi and postscript.
+
+=item -continue
+
+Force B<prv> to continue document processing despite errors.
+Normally, when B<prv> detects that latex has found an error which
+will not be resolved by further processing, the program terminates.
+
+=item -draft
+
+Set draft mode. This prints the banner message "DRAFT" across your
+page when converting the dvi file to postscript. Size and intensity
+can be modified with the -scale_draft and -intensity_draft options.
+The -message_draft option will override this option as this is really
+just a short way of specifying:
+
+B<prv> -message_draft DRAFT
+
+Note that if the -draft option is specified, the -ps option is assumed
+and the postscript file is always generated, even if it is newer than
+the dvi file.
+
+=item -dvi_filter
+
+Dvi file filtering. The argument to this option is a filter which
+will generate a filtered dvi file with the extension ".dvf". All
+extra processing (e.g. conversion to postscript, preview, printing)
+will then be performed on this filtered dvi file.
+
+Exampe usage: Use dviselect to select only the even pages of the dvi
+file:
+
+B<prv> -dvi_filter 'dviselect even' foo.tex
+
+=item -full_clean
+
+Clean up (remove) all unnecessary files generated by latex and bibtex
+including dvi and postscript.
+
+=item -go
+
+Force B<prv> to process document, disregarding the timestamps of
+the source files. This option is particularly useful when updating
+style files, which are not included in the file dependency
+information.
+
+=item -help
+
+Print help information.
+
+=item -ignore_missing_includes
+
+Force B<prv> to include files that don't exist when generating
+dependency files. A warning is produced instead of an error message
+and the program terminating. If the file name is not an absolute
+path, it is assumed to be relative to the current working directory.
+
+=item -intensity_draft <intensity>
+
+How dark to print the banner message. A decimal number between 0 and
+1. 0 is black and 1 is white, default is 0.95 which is ok unless your
+toner cartridge is getting low.
+
+=item -landscape
+
+Run in landscape mode, using the landscape mode previewers and dvi to
+postscript converters.
+
+=item -message_draft <message>
+
+A banner message to print diagonally accross each page when converting
+the dvi file to postscript. The message must be a single argument on
+the command line so be careful with quoting spaces and such.
+
+Note that if the -message_draft option is specified, the -ps option
+is assumed and the postscript file is always generated, even if it is
+newer than the dvi file.
+
+=item -printout
+
+Print out the file using lpr after generating the postscript version.
+Unless the -batch option was given, the user is given the opportunity
+to select pages and double-sided or booklet printing formats (see
+section on PAGE SELECTION. With the -batch option the complete
+document will be printed.
+
+=item -ps
+
+Generate postscript version of document.
+
+=item -ps_filter
+
+Postscript file filtering. The argument to this option is a filter
+which will generate a filtered postscript file with the extension
+".psF". All extra processing (e.g. preview, printing) will then be
+performed on this filtered postscript file.
+
+Exampe usage: Use psnup to print two pages on the one page:
+
+B<prv> -ps -ps_filter 'psnup -2' foo.tex
+
+=item -pv
+
+Run file previewer; if -ps is specified, will run postscript previewer,
+otherwise runs dvi previewer.
+
+=item -pvc
+
+Run a dvi-previewer and continually update the .dvi file whenever
+changes are made to source files (see the Description above). Note
+that if B<prv> dies because it encounters an error, the forked
+previewer will continue to run. Successive invocations with the -pvc
+option will not fork new previewers, but will find the existing
+previewer and send it the signals indicating the .dvi has been
+updated. This option implies the -quiet option.
+
+For xdvi you need at least version 21.27k to have this
+option work properly.
+
+You normally use this option by typing:
+
+ prv -pvc file.tex&
+ vi file.tex # or another editor
+
+=item -quiet
+
+Suppresses messages about the progress B<prv> is making.
+However, Latex log-file messages starting with -- will be printed in red to
+STDERR, even in quiet mode. You can use this to run quietly and nevertheless
+tell yourself urgent messages, like:
+
+ \typeout{-- please use colored paper for this job}
+
+or
+
+ \typeout{-- print frontpages separately on glossy paper}
+
+=item -rcfile <rcfile>
+
+Read specified RC file before processing. The contents of the RC file
+may override options specified before the -rcfile option, therefore it
+is a good idea have the habit of specifying the -rcfile option first.
+
+=item -scale_draft <scale>
+
+A decimal number that specifies how large the banner message will be
+printed. Experimentation is necessary to get the right scale for your
+message, as a rule of thumb the scale should be about equal to 1100
+divided by the number of characters in the message. Default is 220.0
+which is just right for 5 character messages.
+
+=item -scan
+
+Scan source files and generate new dependency file if root file is
+newer than dependency file or dependency file does not exist.
+
+=item -scan_force
+
+Always scan source files and generate new dependency file, even if
+newer dependency file exists. This forces a scan.
+
+=item -version
+
+Print version number of B<prv>.
+
+
+=back
+
+If -ps is specified when the dependency file is created or
+updated, then these options are stored in the dependency file. This
+means that these options will automatically be activated without
+having to be explicitly specified on the command line in future runs.
+Of coarse, if the dependency file is updated or deleted, these
+automatic settings will be lost.
+
+Options -pv and -pvc require one and only one filename specified on
+the command line.
+
+Options -pv and -pvc are mutually exclusive.
+
+=head1 PAGE SELECTION
+
+When you select the -printout option, and you did not also
+use the -batch option, B<prv> interrogates you about the pages you
+want to print. To that end the following prompt appears:
+
+Pages ([range[,range...]|a] [b|t] [x<n>])?
+
+You can react to this as in the following examples:
+
+ 5 # to print page 5
+ 5- # to print pages 5 through the end
+ 5-7 # to print pages 5, 6 and 7
+ -7 # to print the first 7 pages
+ 5-7,19- # to print pages 5, 6, 7 and 19 through the end
+ a # to print the whole document
+ a x3 # to print 3 copies of the document
+ x3 # the same
+ 5 x3 # to print 3 copies of page 5
+ t # print the whole document twosided
+ t 2- # print twosided starting at page 2
+ b # to print the whole document as an a5 size booklet
+ b -12 # to print the first 12 pages as an a5 size booklet
+ e # edit the tex sourcefile and rerun prv
+ q # quit
+
+If you use b to print a booklet, or t to print twosided, then you will
+have to arrange your printer such that, with the printed sides up, the
+first page printed will be at the bottom of the stack, and the last
+page printed will be on top. Normally you will then have your output
+come out the back of your printer.
+
+B<prv> will first print one side of the
+paper and prompt you for a return when the printer is ready and you
+have turned the stack and put it back in the paper feed.
+
+Finally, if you used the b option to print a booklet, you will have to
+reshuffle your pages manually as follows:
+- take the bottom page from the stack and put it aside without
+ changing its position
+- take the top page from the stack and put it upside down on the
+ bottom page
+- repeat these two actions until the stack is empty
+- if you find out how to prevent this manual action, please tell me how
+ you did it!! (wybo@servalys.nl)
+
+When you use B<e> to edit the tex sourcefile, the environment variable EDITOR
+must point to your editor. Or you car set this variable in your startup file:
+$EDITOR='my_favorite_editor';
+
+=head1 EXAMPLES
+
+ % prv thesis # scan for includes, setup thesis.dep
+ # if thesis.tex is does not exist
+
+ % prv -include thesis # scan for includes, setup thesis.dep
+ # if thesis.tex is newer
+
+ % prv -scan_force thesis # scan for includes, setup thesis.dep
+
+ % prv -clean # remove .aux, .log, .bbl, .blg, .dep,
+ # .dvi, .ps & .bbe files
+
+=head1 EMACS
+
+You can use prv for previewing and printing under emacs by creating functions
+for it in your .emacs file like this:
+
+ (defun prv ()
+ "preview latex document in the current buffer
+ after saving the buffer if necessary"
+ (interactive)
+ (save-buffer)
+ (message "Running prv.....")
+ (shell-command (concat "prv -noprintout " buffer-file-name))
+ (message "")
+ )
+
+ (defun prvpr (selection)
+ "print (a selection of pages from) the latex document
+ in the current buffer after saving it if necessary and
+ asking the user for a selection"
+ (interactive "sPages ([range[,range...]|a] [b|t] [x<n>]) [a] ")
+ (if (equal selection "")(setq selection "a"))
+ (save-buffer)
+ (message "Running prv.....")
+ (shell-command (concat "prv -b " selection " " buffer-file-name))
+ (message "")
+ )
+
+and binding those to function keys:
+
+ (global-set-key [f3] 'prv)
+ (global-set-key [\C-f3] 'prvpr)
+
+=HEAD1 VI
+
+You can use prv for previewing and printing under vi by adding this line to your .vimrc file:
+
+ map <F3> :w^M:!prv %^M
+
+Pressing F3 then shows an xdvi preview (or error messages...) and after quitting this you can
+print (part of) your document and return to vi.
+
+=head1 RC FILE
+
+There are four RC files that B<prv> can read at startup:
+
+The system RC file: UNIX: /etc/prvrc MSDOS: C:\lib\prv\prv
+
+The user's RC file: UNIX: $HOME/.prvrc MSDOS: $HOME\prv.rc
+
+The local RC file: UNIX: .prvrc MSDOS: prv.rc
+
+The command-line RC files specified on the command line with the -rcfile option.
+
+=head1 RC VARIABLES
+
+The available variables that can be set are shown below. Syntax is of
+the form:
+
+ $bibtex='bibtex';
+
+Default values are indicated in brackets.
+
+=over 4
+
+=item $leader and $trailer ['']
+
+If non-empty and a filename is a non-existing file, it will be given another try
+after packing it between $leader and $trailer. So if you like to have you latex files
+in ~/mydata/<some_number>/main.tex you can preview from any directory with:
+
+ prv 2134
+
+which will give you ~/mydata/2134/main.tex.
+
+=item $draft [0]
+
+The equivalent of the -draft option.
+
+=item $intensity_draft [0.95]
+
+The equivalent of the -intensity_draft option.
+
+=item $message_draft ['DRAFT']
+
+The equivalent to the -message_draft option.
+
+=item $scale_draft [220.0]
+
+The equivalent of the -scale_draft option.
+
+=item $bibtex ['bibtex']
+
+The BibTeX processing program.
+
+=item $bibtex_mode [0]
+
+If nonzero, the document has a bibtex bibliography. Set by the
+-scan and -scan_force options and saved in the dependency
+file. Should not need to set this in an RC file.
+
+=item $clean [0]
+
+The equivalent of the -clean option. Recommend that this is not
+set from an RC file.
+
+=item $clean_ext ['']
+
+Extra extensions of files for B<prv> to remove when the -clean
+option is selected.
+
+=item $full_clean_ext ['']
+
+Extra extensions of files for B<prv> to remove when the
+-full_clean option is selected.
+
+=item $cus_dep_list [empty]
+
+Custom dependency list (see below).
+
+=item $dvi_cont_previewer ['xdvi']
+
+The dvi-previewer to run with the -pvc option.
+
+=item $dvi_cont_previewer_landscape ['xdvi']
+
+The dvi-previewer to run with the -pvc option in landscape mode.
+
+=item $dvi_filter [empty]
+
+The equivalent of the -dvi_filter option.
+
+=item $dvi_previewer ['xdvi']
+
+The dvi-previewer to run with the -pv option.
+
+=item $dvi_previewer_landscape ['xdvi -paper a4r']
+
+The dvi-previewer to run with the -pv option in landscape mode.
+
+=item $dvips ['dvips']
+
+The program to used as a filter to convert a .dvi file to a .ps file.
+
+=item $dvips_landscape ['dvips -tlandscape']
+
+The program to used as a filter to convert a .dvi file to a .ps file
+in landscape mode.
+
+=item $scan_force [0]
+
+The equivalent of the -scan_force option.
+
+=item $continue [0]
+
+The equivalent of the -continue option.
+
+=item $ignore_missing_includes [0]
+
+The equivalent of the -ignore_missing_includes option.
+
+=item $scan [0]
+
+The equivalent of the -scan option.
+
+=item $go [0]
+
+The equivalent of the -go option.
+
+=item $index_mode [0]
+
+If nonzero, run makeindex to produce index of document. Set by the
+-scan and -scan_force options and saved in the dependency file.
+Should not need to set this in an RC file.
+
+
+=item $landscape [0]
+
+The equivalent of the -landscape option.
+
+=item $latex ['latex']
+
+The LaTeX processing program.
+
+=item $lpr ['lpr']
+
+The printing program.
+
+=item $makeindex ['makeindex']
+
+The index processing program.
+
+=item $ps [0]
+
+Equivalent to the -ps option.
+
+=item $pvc [0]
+
+The equivalent of the -pvc option.
+
+=item $preview [0]
+
+The equivalent of the -pv option.
+
+=item $printout [0]
+
+The equivalent of the -printout
+option. Recommend that this is not set from an RC file or you could
+waste lots of paper.
+
+=item $pscmd ['ps B<-x>']
+
+Command used to get all the processes currently run by the user. This
+is used by the -pvc option to try and reattach itself to the already
+existing previewer from a previous run with -pvc on the same file. The
+default works for SunOS (BSD UNIX?). For Solaris (System V?) try 'ps'
+in the B<prv> RC file.
+
+=item $ps_filter [empty]
+
+The equivalent of the -ps_filter option.
+
+=item $ps_previewer ['gs']
+
+The postscript previewer to run with the -pv option.
+
+=item $ps_previewer_landscape ['gs -swap']
+
+The postscript previewer to run with the -pv option in landscape mode.
+
+=item $sleep_time [2]
+
+The time to sleep (in seconds) between checking for source file
+changes when running the -pvc option.
+
+=item $texfile_search ['']
+
+If no files were specified on the command line, then B<prv> will
+search for files that match the file mask specifed in this variable.
+
+e.g.: $texfile_search = "$texfile_search *.ftex *.c.tex";
+
+=item $tmpdir [$TMP]
+
+Directory to store very small temporary files that B<prv>
+generates while running.
+
+=back
+
+=head1 CUSTOM DEPENDENCIES
+
+In any RC file a set of custom dependencies can be set up to convert a
+file with one extension to a file with another. An example use of
+this would be to allow B<prv> to convert a .fig file to
+dependencies are set up by using the @cus_dep_list array. Each string
+in the array has four arguments, separated by a space:
+
+=over 4
+
+=item from extension:
+
+The extension of the file we are converting from (e.g. "fig").
+
+=item to extension:
+
+The extension of the file we are converting to (e.g. "eps").
+
+=item must:
+
+If non-zero, the file we are converting from must exist, if it doesn't
+exist B<prv> will give an error message and exit unless the -continue
+option is specified. If must is zero and the file we are converting
+from doesn't exist, then no action is taken.
+
+
+=item function:
+
+The name of the subroutine that B<prv> should call to perform the
+file conversion. The first argument to the subroutine is the base
+name of the file to be converted without any extension. The
+subroutines are declared in the syntax of perl.
+
+=back
+
+Example in an RC file to convert a .fig file to a .eps file:
+
+@cus_dep_list = (@cus_dep_list, "fig eps 0 fig2eps");
+
+sub fig2eps {
+system("fig2dev -Lps $_[0].fig $_[0].eps"); }
+
+The subroutine fig2eps will only be called if the .fig file was
+modified more recently then the .eps file, or the .eps file does not
+exist.
+
+If the return value of the subroutine is non-zero, then B<prv>
+will assume an error occurred during the execution of the subroutine.
+
+=head1 ENVIRONMENT
+
+B<prv> needs several external programs; the following tabulates
+their function, default Unix name and default MS-Dos name:
+
+=over 4
+
+=item
+
+Function: Unix: MS-Dos:
+
+latex latex latex
+
+bibtex bibtex bibtex
+
+makeindex makeindex makeindex
+
+dvips dvips -s dvips -s
+
+dvips_landscape dvips -tlandscape dvips -tlandscape
+
+pscmd ps -x ps -x
+
+touch touch touch
+
+psselect psselect psselect
+
+pstops pstops pstops
+
+diff diff diff
+
+copy cp -p copy
+
+lpr lpr print
+
+ps_previewer gv gv
+
+ps_previewer_landscape gv -swap gv
+
+dvi_previewer xdvi windvi
+
+dvi_previewer_landscape xdvi -paper a4r windvi
+
+dvi_cont_previewer xdvi dviwin2 -1 -c
+
+dvi_cont_previewer_landscape xdvi -paper a4r dviwin2 -1 -c
+
+=back
+
+B<prv> needs the following environment variables:
+
+ HOME user's home directory, for rc files
+ TEXINPUTS user's directory for style files etc.
+ EDITOR editor to be used, is needed
+
+=head1 SEE ALSO
+
+latex(1), bibtex(1).
+
+=head1 BUGS
+
+If you use macros for generating input file names in your document,
+B<prv> will not be able to figure out what the name should be when
+trying to generate a dependency file. Using the -ignore_missing_includes option
+will make B<prv> ignore these, but B<prv> will also obviously
+not have a complete dependency list.
+
+\includegraphics[...]{ is unseen
+\includegraphics{file} is treated as \includegraphics{file.tex}
+
+=head1 IDENTIFICATION
+
+Modifications and enhancements by Wybo Dekker
+(wybo@servalys.nl), based on LatexMk by Evan McLean (Version
+2.0), original script called "go" by David J. Musliner (RCS Version
+3.2)
+
+=cut
+
+# This script is derived from LatexMk version 2.0, which has undergone a
+# major revision by wybo@servalys.nl. In particular:
+# - The options have been renamed to long names using the Getops::Long module.
+# - Page and print-format selection has been built in.
+# - The manpage has been converted to pod
+# - Works now also under MSDOS/Windows-95/NT
+# - Allows for interactive pages selection in the printing phase
+# - Facilities for printing reduced size booklets have been built in
+# - the -quiet option was added for silencing both prv and latex
+
+# version history
+# 0.2
+# - previous version did not work under MSDOS because of open(IN,"latex|")
+# construction.
+# - if a filename contains a path specification it is now detected and latex
+# is run in the directory where the .tex file is. Previously, it was run in
+# the starting directory, causing .aux, etcetera files to be created there
+# - source files are now required to have a .tex extension. The extension is
+# added if it is lacking.
+# - replaced .dviF with dvf for sake of MSDOS
+# - moved system rc file to /etc
+# - negation of boolean options built in (-noq besides -q)
+# - for path-less filenames another try is now given by packing it
+# between $leader and $trailer (which can be defined in an rc-file
+# - added -s option to dvips. Prevents bop-hooks to be copied documents
+# printed later
+# - changed the -batch option: now needs a string for format/page selection
+# - system calls now reported unless $quiet
+# - \typeout messages starting with -- now are printed in red to STDERR,
+# even in quiet mode
+# 0.3
+# - moved some variable from the `use vars' statement to an ="" statement,
+# because of uninitialized messages.
+# 0.4
+# - latex now runs in batchmode (-interaction=batchmode);
+# with the quiet option, if latex finds an error, only the error and
+# its explanation is reported.
+# 0.5
+# - revised testing of included files, removing tests on
+# \blackandwhite, \colorslides, \psfig, \epsfig, \epsfbox, \epsffile, but
+# adding \includegraphics
+# - if TEXINPUTS path ends in ::, the last dir is now searched with find
+# - Environment variable TMP *must* have been set now and must not end
+# in a / (MSDOS: \) any more
+# - new option e introduced in print menu: can be used to edit the source file
+# and rerun prv.
+# - lines beginning with exactly %\input can now be used to make prv recognise
+# dependency files that it would not find otherwise. For example, the moreverb
+# package has a command \listinginput{file}, or a user can create his own
+# commands for file inclusion.
+# - bibtex warnings are not seen as an error anymore
+# 0.6
+# - replaced Term::ReadLine interface with Term::Query
+# - for unix, replaced /tmp/{to,from}null with /dev/null
+# - sub latex_run now checks log file for Rerun request.
+# - removed slitex
+# - if no sourcefiles are given on the command line prv does not try to compile
+# *.tex anymore, since this would also imply compilation of input and include files.
+# Prv still looks in the variable $texfile_search though
+# - prv now offers the included file for editing if it contains the error
+# - the editor starts on the erroneous line
+# - temporary files are removed
+# - added comment about previewing under vi
+# - choosing -pvc now automatically cancels -pv instead of dying
+# - "Runaway argument" error messages now also displayed in quiet mode
+# 0.7
+# - removed requirement of environment variable TMP.
+# prv now supposes /tmp (\tmp for msdos) to be present and writable.
+# - search for included files now performed with kpsewhich
+# - $opt_variables renamed to the same without $opt_
+# - included files now are searched with their default extension appended,
+# but if that fails, the search is tried without it.
+# - Latex correctly producing no output is now seen as an error
+__DATA__
+Usage: prv [prv_options] [filename ...]
+
+prv_options:
+
+-b -batch <selection> run in batchmode, printing the selection
+-cl -clean clean up (remove) all nonessential files
+-co -continue force continued processing past errors
+-dr -draft Print `DRAFT' across the page (in PostScript)
+-dv -dvi_filter <filter> Filter to apply to dvi file
+-f -full_clean remove nonessential files including .dvi + .ps
+-g -go process regardless of file timestamps
+-h -help print help
+-ig -ignore_missing_includes Ignore missing files when making dependencies
+-in -intensity_draft <intensity> Set contrast or intensity of banner
+-l -landscape force landscape mode
+-m -message_draft <message> Print message across the page (in PostScript)
+-pr -printout print document after generating postscript
+-ps -ps generate postscript
+-ps_ -ps_filter <filter> Filter to apply to postscript file
+-pv -pv preview document
+-pvc -pvc preview document and continuously update
+-q -quiet Operate silently
+-r -rcfile <file> Read custom RC file
+-scal -scale_draft <scale> Set scale for draft-string
+-scan -scan rescan for includes if .dep older than .tex
+-scan_ -scan_force force rescan for includes
+-v -version display program version
+
+filename: the root filename of LaTeX document
+
+Remarks:
+-printout, -pv and -pvc are mutually exclusive
+-help, -clean and -full_clean overide all other options: they just help/clean.
+-pv and -pvc require exactly one filename specified
+-rcfile's file contents override earlier options on the command line
diff --git a/obsolete/support/prv/prvps b/obsolete/support/prv/prvps
new file mode 100755
index 0000000000..230d8aed9b
--- /dev/null
+++ b/obsolete/support/prv/prvps
@@ -0,0 +1,183 @@
+#!/usr/bin/perl -w
+use Env;
+use Config;
+use Term::ReadLine;
+
+=head1 NAME
+
+prvps - preview postscript document and eventually print it
+
+=head1 SYNOPSIS
+
+system call:
+
+ prvps [<filename>]
+
+=head1 DESCRIPTION
+
+B<prvps> previews PostScript documents and eventually
+prints them, letting you choose the pages and the output
+format. Without a F<filename>, standard input is used.
+If a file with F<filename> does not exist, F<filename.eps> is tried or,
+if that also does not exist, F<filename.ps>.
+B<prvps> displays your Postscript document
+using B<gv>, and then interrogates you about the pages you
+want to print. To that end the following prompt appears:
+
+Pages ([range[,range...]|a] [b|t] [x<n>])?
+
+You can react to this as in the following examples:
+
+ 5 # to print page 5
+ 5- # to print pages 5 through the end
+ 5-7 # to print pages 5, 6 and 7
+ -7 # to print the first 7 pages
+ 5-7,19- # to print pages 5, 6, 7 and 19 through the end
+ a # to print the whole document
+ a x3 # to print 3 copies of the document
+ x3 # the same
+ 5 x3 # to print 3 copies of page 5
+ t # print the whole document twosided
+ t 2- # print twosided starting at page 2
+ b # to print the whole document as an a5 size booklet
+ b -12 # to print the first 12 pages as an a5 size booklet
+
+If you use b to print a booklet, or t to print twosided, then you will
+have to arrange your printer such that, with the printed sides up, the
+first page printed will be at the bottom of the stack, and the last
+page printed will be on top. Normally you will then have your output
+come out the back of your printer.
+
+B<prvps> will first print one side of the
+paper and prompt you for a return when the printer is ready and you
+have turned the stack and put it back in the paper feed.
+
+Finally, if you used the b option to print a booklet, you will have to
+reshuffle your pages manually as follows:
+- take the bottom page from the stack and put it aside without
+ changing its position
+- take the top page from the stack and put it upside down on the
+ bottom page
+- repeat these two actions until the stack is empty
+- if you find out how to prevent this manual action, please tell me how
+ you did it!! (wybo@servalys.hobby.nl)
+
+=cut
+
+$term=new Term::ReadLine 'test';
+
+$TMP='/tmp' unless $TMP;
+$in = "$TMP/$$.in"; # temp file for saving standard input
+$sel = "$TMP/$$.sel"; # temp file for selected pages
+$front = "$TMP/$$.front"; # temp file for front pages
+$back = "$TMP/$$.back"; # temp file for back pages
+$print = $Config{'lpr'} or $print='lpr';
+$booklet=$selection=$lpropt=$doit="";
+$prompt='Pages ([range[,range...]|a] [b|t] [x<n>])? ';
+$print_prompt="printer ready? then turn pack and type return ";
+
+$file=shift or $file=""; # empty -> stdin
+if ($file) { # if a filename was given
+ if (! -f $file) { # and it does not exist
+ if (-f "$file.ps") { $file.=".ps" }
+ elsif (-f "$file.eps") { $file.='.eps' }
+ else { die "no file $file.eps or $file.ps found\n" }
+ }
+} else {
+ $file=$in;
+ open(OUT,">$in") or die("Could not open $file");
+ while(<>) { print OUT }; close OUT;
+}
+
+# look in the first non-empty line to check if it is right:
+open(IN,$file); do { chomp($_=<IN>) } until $_; close IN;
+
+/^%!PS/ or die("Input file is not a PostScript file\n");
+
+system "gv -scale 2 -spartan $file";
+
+
+$front_spec='"4:-3L@.707(210mm,0)+0L@.707(210mm,148.5mm)"';
+$back_spec='"4:1L@.707(210mm,0)+-2L@.707(210mm,148.5mm)"';
+while (1) {
+ if ($selection) { # if anything was set
+ print STDERR "\n";
+ $selection =~ /[1-9]/ or $selection.=" -e -o ";
+ system("psselect -q $selection $file $sel");
+ if ($booklet) {
+ system("pstops -q $front_spec $sel >$front");
+ system("$print $lpropt $front");
+ $term->readline($print_prompt);
+ system("pstops -q $back_spec $sel >$back");
+ system("$print $lpropt $back");
+ } elsif ($twosided) {
+ system("pstops 2:0 $sel >$front");
+ system("$print $lpropt $front");
+ $term->readline($print_prompt);
+ system("pstops 2:1 $sel >$back");
+ system("$print $lpropt $back");
+ } else {
+ system("$print $lpropt $sel");
+ }
+ }
+ $booklet=$twosided=$selection=$lpropt=$doit="";
+
+ $com=$term->readline($prompt);
+
+ for (split(/\s+/,$com)) {
+ CASE: {
+ /^q$/ # die on n of q
+ and goto READY; # don't just exit: may be called with do
+ /^x[0-9]+$/ # x3 -> lpr -#3
+ and do { s/x//;
+ print STDERR " $_ copies";
+ $lpropt = '-#'.$_;
+ $selection.=" -q";
+ },
+ last CASE;
+ /^b$/ # print a5 booklet
+ and do { $selection.=" -q ";
+ print STDERR " booklet";
+ $booklet=1;
+ },
+ last CASE;
+ /^t$/ # print twosided
+ and do { $selection.=" -q";
+ $twosided=1;
+ print STDERR " twosided";
+ },
+ last CASE;
+ /^a$/ # print all
+ and do { $selection="-e -o";
+ print STDERR " all pages";
+ },
+ last CASE;
+ /^(([0-9]+-?[0-9]*|[0-9]*-?[0-9]+),?)+$/ # n-m or n- or -m
+ and do { ($selection=$_) =~ s/,$//;
+ print STDERR " pages: $selection";
+ },
+ last CASE;
+
+ warn
+ "Illegal specification(s)\n".
+ "Examples of page specifications:\n".
+ "5 to print page 5\n".
+ "5- to print pages 5 through the end\n".
+ "5-7 to print pages 5, 6 and 7\n".
+ "-7 to print the first 7 pages\n".
+ "5-7,19- to print pages 5, 6, 7 and 19 through the end\n".
+ "a to print the whole document\n".
+ "a x3 to print 3 copies of the document\n".
+ "x3 the same\n".
+ "5 x3 to print 3 copies of page 5\n".
+ "t print the whole document twosided\n".
+ "t 2- print twosided starting at page 2\n".
+ "b to print the whole document as an a5 size booklet\n".
+ "b -12 to print the first 12 pages as an a5 size booklet\n";
+
+ }
+ }
+}
+READY:
+for (glob "/tmp/$$*") { unlink $_ }
+
diff --git a/obsolete/support/texshell/ts-9804.Readme.HPUX b/obsolete/support/texshell/ts-9804.Readme.HPUX
new file mode 100644
index 0000000000..a6501df389
--- /dev/null
+++ b/obsolete/support/texshell/ts-9804.Readme.HPUX
@@ -0,0 +1,10 @@
+Reported Problem width HP-UX
+============================
+
+If you get a message like "file ts not found", please change
+the third line of ts (default directory: /usr/local/lib/ts-9804)
+from
+ wish $0 $*
+to
+ wish /usr/local/lib/ts-9804/ts $*
+
diff --git a/obsolete/support/texshell/ts.lsm b/obsolete/support/texshell/ts.lsm
new file mode 100644
index 0000000000..598a9f04e0
--- /dev/null
+++ b/obsolete/support/texshell/ts.lsm
@@ -0,0 +1,19 @@
+Begin3
+Title: TS: TeXShell for X-Window (Tcl/Tk)
+Version: 1998/04 (Beta)
+Entered-date:
+Description: TS is an easy to use TeX shell for X-Windows. It includes
+ a powerful build-in editor with up to nine edit windows.
+ TS works mostly like MS-DOS texshell by Schlegelmilch.
+ You can use many hot keys (F3 - Edit, F6 -Compose, ...)
+Keywords: TeXShell, TeX Environment
+Author: poenisch@wirtschaft.tu-chemnitz.de (Jens Poenisch)
+Maintained-by:
+Primary-site: sunsite.unc.edu /pub/Linux/apps/tex
+ 250K ts-YYMM.tgz
+ ts.lsm
+Alternate-site:
+Original-site:
+Platform: X11R6, Tcl/Tk8.0
+Copying-policy: GPL
+End
diff --git a/obsolete/support/ttf2tex/README b/obsolete/support/ttf2tex/README
new file mode 100644
index 0000000000..0b76c5c415
--- /dev/null
+++ b/obsolete/support/ttf2tex/README
@@ -0,0 +1,102 @@
+$Id: README,v 0.70 2004/09/30 00:00:00 lehman pub $
+
+END-OF-LIFE ANNOUNCEMENT
+
+As of September 30, 2004, ttf2tex is no longer maintained or in any
+way supported by its original author. Active development of the
+script has in fact already stopped in September 2002. Be advised
+that, even though ttf2tex may still work, there is no support in
+case of a problem and there will be no further updates.
+
+ABOUT
+
+ttf2tex is a script for the Bash shell which generates all files
+required to use TrueType fonts from a set of .ttf files. In short,
+it will do for TrueType fonts what fontinst's \latinfamily command
+does for Type 1 Postscript fonts. In addition to that, it creates
+map files and installs all files according to the TeX Directory
+Structure.
+
+The script is designed for Unix systems running teTeX. It should
+also work with TeX Live on Unix. It was reported to work under
+several Linux flavors, FreeBSD, and MacOS X with Fink. See the file
+ttf2tex.pdf for requirements, usage instructions, and some general
+information concerning the use of TrueType fonts with TeX.
+
+LICENSE
+
+ttf2tex is copyright (c) 2000--2002, 2004 Philipp Lehman. This
+program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
+LICENSE for details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+CHANGES
+
+2004-09-30 0.70
+ * Added configuration file ttf2tex.cfg
+ * Moved path and file definitions to configuration file
+ * End-of-life announcement
+
+2003-06-04 0.61
+ * Documentation update only
+ * Added FAQ to manual
+
+2002-09-30 0.60
+ * Extended user feedback including installation paths
+ * Fix in T1-WGL4.enc for '/Zdotaccent' and '/zdotaccent'
+ * Added debugging hooks
+ * Extended manual, new section on upgrading ttf2tex
+
+2002-05-21 0.50
+ * Added preliminary support for OpenType fonts (TT outlines only)
+ * Added support for real small caps
+ * Added support for old style figures
+ * Added support for -n and -N switches of ttf2tfm
+ * Added new option to disable hyphenation (for 'typewriter' typefaces)
+ * Added new option to overwrite files when installing
+ * Added new option to dump internal vectors
+ * Check availability of required binaries first
+ * Changed default path for .ttf files
+ * Updated and extended manual
+
+2002-01-21 0.41
+ * Minor fixes and improvements
+ * Extended manual
+
+2001-11-05 0.40
+ * Revised weight substitution logic
+ * Added new option to create session log
+ * Minor fixes and improvements
+ * Updated and extended manual
+
+2001-10-15 0.31
+ * Add tags to all map files
+ * Bug fixes
+
+2001-10-08 0.30
+ * Added support for TS1 encoding
+ * Added support for user-defined small caps
+ * Added support for user-defined slanted shapes
+ * Revised command line switches
+ * Updated manual
+
+2001-03-09 0.20
+ * Added support for multiple weights
+ * Added smart weight substitution logic
+ * Create one pdftex map file per font family
+ * Added improved user feedback
+ * Added user manual
+
+2000-10-25 0.10
+ * Initial release
diff --git a/obsolete/support/ttf2tex/ttf2tex.cfg b/obsolete/support/ttf2tex/ttf2tex.cfg
new file mode 100644
index 0000000000..311d1af4ed
--- /dev/null
+++ b/obsolete/support/ttf2tex/ttf2tex.cfg
@@ -0,0 +1,129 @@
+# $Id: ttf2tex.cfg,v 0.70 2004/09/30 00:00:00 lehman pub $
+
+# Configuration file for ttf2tex.sh
+
+# The script ttf2tex.sh will look for the following configuration
+# files, in this order:
+#
+# ./ttf2tex.cfg
+# ~/.ttf2tex.cfg
+# /etc/ttf2tex.cfg
+#
+# The first match will be used.
+
+# The configuration file is not parsed by ttf2tex.sh, but rather
+# input directly using a 'source' command (which is comparable to
+# TeX's \input). This implies that it must be a valid Bash script,
+# even if it only defines some variables.
+#
+# The hash mark (#) indicates a comment. Everything from the # to the
+# end of the line is ignored by the shell. Variables are defined as
+# follows:
+#
+# variable=value
+#
+# Spaces around the equal sign are invalid. If the value includes any
+# spaces, it should be enclosed in double quotes:
+#
+# variable="value with spaces"
+#
+# It's a good idea to use quotes around the value in any case.
+
+# Please adjust the following variables to your installation.
+#
+# All subdirectories below must be given relative to the top of your
+# local and private Tex tree!
+#
+# If unsure, run "kpsexpand \$TEXMFLOCAL" and "kpsexpand \$HOMETEXMF"
+# to query kpathsea for these paths.
+
+# Subdirectory for .afm files
+#
+# If unsure, run "kpsewhich --show-path=afm" to query kpathsea for the
+# complete afm search path and strip $TEXMF.
+#
+# The default should work fine on most systems.
+
+path_afm="fonts/afm"
+
+# Subdirectory for .tfm files
+#
+# If unsure, run "kpsewhich --show-path=tfm" to query kpathsea for the
+# complete tfm search path and strip $TEXMF.
+#
+# The default should work fine on most systems.
+
+path_tfm="fonts/tfm"
+
+# Subdirectory for .vf files
+#
+# If unsure, run "kpsewhich --show-path=vf" to query kpathsea for the
+# complete vf search path and strip $TEXMF.
+#
+# The default should work fine on most systems.
+
+path_vf="fonts/vf"
+
+# Subdirectory for .ttf files
+#
+# If unsure, run "kpsexpand \$TTFONTS" to query kpathsea for the ttf
+# search path and strip $TEXMF.
+#
+# For older versions of teTeX this used to be "fonts/ttf" while newer
+# versions use "fonts/truetype" instead.
+
+path_ttf="fonts/truetype"
+
+# Subdirectory for .fd files
+#
+# This should be under "tex/latex/" by convention. The last part is
+# arbitrary.
+#
+# The default should work fine on most systems.
+
+path_fd="tex/latex/ttfonts"
+
+# Subdirectory and file name for ttf2pk's map file
+#
+# This is the subdirectory in which the map file used by ttf2pk
+# resides. This file is usually called ttfonts.map. Consult the man
+# page for ttf2pk and the FreeType documentation if you are unsure.
+
+path_map_ttf2pk="ttf2pk"
+
+# This is the actual file name. ttfonts.map is the default and should
+# be fine. If this map file already exists and resides somewhere
+# outside of your local Tex tree simply make use of symbolic links as
+# required.
+
+file_map_ttf2pk="ttfonts.map"
+
+# Subdirectory for ttf2pk's encoding vectors
+#
+# This is the subdirectory in which the enc file used by ttf2pk
+# resides. This will usually not differ from the map file path.
+
+path_map_ttf2pk="ttf2pk"
+
+# Subdirectory for pdftex's map files
+#
+# This is the subdirectory in which the map files for pdftex reside.
+# Since pdftex can use multiple map files, we will create one file for
+# each font family ("<fontfamily>.map") and put it there.
+
+path_map_pdftex="pdftex/config"
+
+# Subdirectory for pdftex's encoding vectors
+#
+# This is the subdirectory in which the enc files for pdftex reside.
+# Depending on your TeX distribution, this may differ from the path
+# used for map files.
+
+path_enc_pdftex="pdftex/config"
+
+# The latest versions of TeX Live and teTeX use separate paths for
+# map files and encoding vectors. In this case, the paths should be
+# "fonts/map/pdftex/config" and "fonts/enc/pdftex/config". Inspect
+# the global tree of your installation if you are unsure.
+
+# That's it.
diff --git a/obsolete/support/ttf2tex/ttf2tex.pdf b/obsolete/support/ttf2tex/ttf2tex.pdf
new file mode 100644
index 0000000000..82a4ea90c8
--- /dev/null
+++ b/obsolete/support/ttf2tex/ttf2tex.pdf
Binary files differ
diff --git a/obsolete/support/ttf2tex/ttf2tex.sh b/obsolete/support/ttf2tex/ttf2tex.sh
new file mode 100644
index 0000000000..c44480eb7e
--- /dev/null
+++ b/obsolete/support/ttf2tex/ttf2tex.sh
@@ -0,0 +1,2565 @@
+#!/bin/bash -e
+
+# $Id: ttf2tex.sh,v 0.70 2004/09/30 00:00:00 lehman pub $
+
+# Copyright (c) 2000-2002,2004 Philipp Lehman <lehman@gmx.net>
+#
+# ttf2tex is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any
+# later version.
+#
+# ttf2tex is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place Suite 330, Boston, MA 02111-1307
+# USA.
+
+# Internal variables
+
+myname="${0##*/}"
+fullname="ttf2tex"
+version="v0.7"
+released="2004-09-30"
+maintainer="<no maintainer>" # email address of maintainer
+confpath="./ $HOME/. /etc/"
+logfile="${fullname}.log"
+date="$(date '+%Y-%m-%d %H:%M:%S')"
+texdate="$(date '+%Y/%m/%d')"
+debug_cmdline="$0 -b $*"
+transcript=0
+
+# Global auxiliary funtions
+
+info() {
+ trap error_internal ERR
+ echo -e "$myname: $*"
+ if [ $transcript = 1 ]; then echo -e "$myname: $*" >>$logfile; fi
+}
+
+info_external() {
+ trap error_internal ERR
+ if [ -n "$2" ]; then echo -e "$1: $2"; fi
+ if [ -n "$2" -a $transcript = 1 ]; then echo -e "$1: $2" >>$logfile; fi
+}
+
+error() {
+ trap error_internal ERR
+ if [ -n "$*" ]; then info "$*"; else info "Unknown error"; fi
+ info "Aborting..."
+ exit 1
+}
+
+error_usage() {
+ trap error_internal ERR
+ usage
+ exit 1
+}
+
+error_internal() {
+ if [ "$DEBUG" = "1" ]; then return; fi
+ cat <<-EOF
+
+ An internal error occured! Please send a bug report to $maintainer.
+ I will now try to run $fullname again with the same options and debugging
+ turned on. The output will be written to the file 'debug.log'. Please
+ attach this file to your bug report.
+
+ Please note that 'debug.log' will contain a full dump of the current
+ environment. If you set passwords or any other sensitive data in your
+ environment, remove the relevant parts from 'debug.log'.
+ EOF
+
+ if [ "$confirm" != "0" ]; then
+ echo -e "\nPress <enter> to proceed or <ctrl-c> to abort"
+ read
+ fi
+ BASH_OPTIONS="$-"
+ export BASH_OPTIONS
+ echo -e "+++ ENVIRONMENT +++\n\n$(set)\n\n+++ DEBUG LOG +++\n" >debug.log
+ (DEBUG="1"; export DEBUG; bash -ex $debug_cmdline 2>>debug.log)
+ echo -e "\nOutput written to debug.log"
+ exit 1
+}
+
+clean() {
+ trap error_internal ERR
+ if [ "$DEBUG" = "1" ]; then return; fi
+ info "Cleaning up..."
+ for file in *.enc ttf2tfm.log ttf2afm.log mktexlsr.log $file_map_ttf2pk $pdftexmap \
+ ${basefamily}*.afm ${basefamily}*.tfm ${basefamily}*.vf ${basefamily}*.fd ${basefamily}*.vpl
+ do
+ if [ -e $file ]; then rm $file; fi
+ done
+}
+
+usage() {
+ trap error_internal ERR
+ cat <<-EOF
+ $fullname $version $released
+ Usage:
+ $myname --help
+ $myname --dump-vectors
+ $myname [options] --foundry <foundry> --font <font> <family>
+ $myname [options] --user --foundry <foundry> --font <font> <family>
+ $myname [options] --install --foundry <foundry> --font <font> <family>
+ Options:
+ -h|--help print usage summary and exit
+ --dump-vectors dump encoding vectors and exit
+ -b|--batch run in batch mode
+ -l|--log write session log to $logfile
+ -n|--ps-names pass the -n switch to ttf2tfm
+ -N|--ps-names-only pass the -N switch to ttf2tfm
+ -t|--typewriter font is a typewriter font, disable hyphenation
+ -x|--expert expert mode, use small caps and old style figures
+ -u|--user install files into user TeX tree
+ -i|--install install files into local TeX tree
+ --overwrite overwrite files when installing, use with care!
+ -c|--caps <real> use <real> as height of small caps (default: ${capsheight})
+ -s|--slant <real> use <real> as obliqueness factor (default: ${slantfactor})
+ -f|--foundry <foundry> use <foundry> as foundry name
+ -o|--font <font> use <font> as font name
+ <family> the font family code
+ EOF
+}
+
+# Hash required binaries to check if they are available
+
+check_requirements() {
+ trap error_internal ERR
+
+ hash ttf2tfm >/dev/null 2>&1 || {
+ info "Failed to find ttf2tfm!"
+ error "Make sure that the freetype tools are installed and that \$PATH is set correctly!"
+ }
+
+ hash ttf2afm >/dev/null 2>&1 || {
+ info "Failed to find ttf2afm!"
+ error "Make sure that \$PATH is set correctly!"
+ }
+
+ hash vptovf >/dev/null 2>&1 || {
+ info "Failed to find vptovf!"
+ error "Make sure that \$PATH is set correctly!"
+ }
+}
+
+# Confirmation prompt
+
+prompt_confirm() {
+ trap error_internal ERR
+ if [ $confirm = 1 ]; then
+ echo
+ info "Press <enter> to proceed or <ctrl-c> to abort"
+ read
+ fi
+}
+
+# Display install paths
+
+info_paths() {
+ trap error_internal ERR
+
+ if [ -n "$texmfinstall" ]; then
+ local install="$texmfinstall"
+ else
+ local install="$PWD"
+ fi
+ info "------------------------"
+ info " INSTALLATION PATHS"
+ info "------------------------"
+ info "Configuration file: $conffile"
+ info "Root directory: $install/"
+ info "Font metrics: $install/$path_afm/$foundry/$fontname/*.afm"
+ info "TeX font metrics: $install/$path_tfm/$foundry/$fontname/*.tfm"
+ info "Virtual fonts: $install/$path_vf/$foundry/$fontname/*.vf"
+ info "TrueType fonts: $install/$path_ttf/$foundry/$fontname/*.ttf"
+ info "pdfTeX map files: $install/$path_map_pdftex/*.map"
+ info "pdfTeX enc files: $install/$path_enc_pdftex/*.enc"
+ info "ttf2pk map file: $install/$path_map_ttf2pk/$file_map_ttf2pk"
+ info "ttf2pk enc files: $install/$path_enc_ttf2pk/*.enc"
+ info "Font definitions: $install/$path_fd/$foundry/$fontname/*.fd"
+}
+
+# Check for available weights
+
+check_available() {
+ trap error_internal ERR
+
+ # ultra light
+
+ if [ -f "${basefamily}a${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries a"
+ mffallback="ul"
+ fi
+
+ # extra light
+
+ if [ -f "${basefamily}j${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries j"
+ mffallback="el"
+ fi
+
+ # light
+
+ if [ -f "${basefamily}l${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries l"
+ mffallback="l"
+ fi
+
+ # book
+
+ if [ -f "${basefamily}k${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries k"
+ mffallback="k"
+ fi
+
+ # regular
+
+ if [ -f "${basefamily}r${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries r"
+ mffallback="m"
+ fi
+
+ # poster
+
+ if [ -f "${basefamily}p${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries p"
+ bffallback="pb"
+ ubdefault="pb"
+ fi
+
+ # ultra bold
+
+ if [ -f "${basefamily}u${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries u"
+ bffallback="ub"
+ ubdefault="ub"
+ fi
+
+ # black
+
+ if [ -f "${basefamily}c${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries c"
+ bffallback="cb"
+ ebdefault="cb"
+ fi
+
+ # heavy
+
+ if [ -f "${basefamily}h${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries h"
+ bffallback="hb"
+ ebdefault="hb"
+ fi
+
+ # extra bold
+
+ if [ -f "${basefamily}x${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries x"
+ bffallback="eb"
+ ebdefault="eb"
+ fi
+
+ # medium
+
+ if [ -f "${basefamily}m${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries m"
+ bffallback="mb"
+ bfdefault=$bffallback
+ fi
+
+ # demibold
+
+ if [ -f "${basefamily}d${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries d"
+ bffallback="db"
+ bfdefault=$bffallback
+ fi
+
+ # semibold
+
+ if [ -f "${basefamily}s${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries s"
+ bffallback="sb"
+ bfdefault=$bffallback
+ fi
+
+ # bold
+
+ if [ -f "${basefamily}b${rawenc_wgl}.ttf" ]; then
+ fontseries="$fontseries b"
+ bffallback="b"
+ fi
+
+ # sanity checks
+
+ [ -n "$mffallback" -o -n "$bffallback" ] || error "No font files found!"
+
+ if [ -z "$mffallback" ]; then
+ mffallback="$bffallback"
+ fi
+
+ if [ -z "$bffallback" ]; then
+ bffallback="$mffallback"
+ fi
+
+ if [ -z "$bfdefault" ]; then
+ bfdefault=$bffallback
+ fi
+}
+
+# Auxiliary functions for info_map_available
+
+info_map_upright() {
+ trap error_internal ERR
+
+ local family="$1"
+ local toweight="$2"
+ local fromweight="$3"
+
+ info "${family}/${fromweight}/n --> ${basefamily}${toweight}${rawenc_wgl}.ttf"
+ info "${family}/${fromweight}/sc --> ${basefamily}${toweight}${rawenc_wgl}.ttf"
+ info "${family}/${fromweight}/sl --> ${basefamily}${toweight}${rawenc_wgl}.ttf"
+}
+
+info_map_italic() {
+ trap error_internal ERR
+
+ local family="$1"
+ local toweight="$2"
+ local fromweight="$3"
+
+ info "${family}/${fromweight}/it --> ${basefamily}${toweight}i${rawenc_wgl}.ttf"
+}
+
+info_map_substitution() {
+ trap error_internal ERR
+
+ local family="$1"
+ local toweight="$2"
+ local fromweight="$3"
+
+ info "[sub] ${family}/${fromweight} --> ${family}/${toweight}"
+}
+
+info_map_substseries() {
+ trap error_internal ERR
+
+ local family="$1"
+ local toweight="$2"
+ local fromweight="$3"
+
+ info "[sub] ${family}/${fromweight}/n --> ${family}/${toweight}/n"
+ info "[sub] ${family}/${fromweight}/sc --> ${family}/${toweight}/sc"
+ info "[sub] ${family}/${fromweight}/sl --> ${family}/${toweight}/sl"
+ info "[sub] ${family}/${fromweight}/it --> ${family}/${toweight}/it"
+}
+
+# Display available weights
+
+info_map_available() {
+ trap error_internal ERR
+
+ info "------------------------"
+ info " FONT MAPPING"
+ info "------------------------"
+
+ local family="$1"
+
+ # ultra light
+
+ if [ -f "${basefamily}a${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "a" "ul"
+ if [ -f "${basefamily}ai${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "a" "ul"
+ else
+ info_map_substitution "$family" "ul/sl" "ul/it"
+ fi
+ fi
+
+ # extra light
+
+ if [ -f "${basefamily}j${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "j" "el"
+ if [ -f "${basefamily}ji${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "j" "el"
+ else
+ info_map_substitution "$family" "el/sl" "el/it"
+ fi
+ fi
+
+ # light
+
+ if [ -f "${basefamily}l${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "l" "l"
+ if [ -f "${basefamily}li${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "l" "l"
+ else
+ info_map_substitution "$family" "l/sl" "l/it"
+ fi
+ fi
+
+ # book
+
+ if [ -f "${basefamily}k${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "k" "k"
+ if [ -f "${basefamily}ki${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "k" "k"
+ else
+ info_map_substitution "$family" "k/sl" "k/it"
+ fi
+ fi
+
+ # regular
+
+ if [ -f "${basefamily}r${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "r" "m"
+ if [ -f "${basefamily}ri${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "r" "m"
+ else
+ info_map_substitution "$family" "m/sl" "m/it"
+ fi
+ fi
+
+ # poster
+
+ if [ -f "${basefamily}p${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "p" "pb"
+ if [ -f "${basefamily}pi${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "p" "pb"
+ else
+ info_map_substitution "$family" "pb/sl" "pb/it"
+ fi
+ fi
+
+ # ultra bold
+
+ if [ -f "${basefamily}u${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "u" "ub"
+ if [ -f "${basefamily}ui${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "u" "ub"
+ else
+ info_map_substitution "$family" "ub/sl" "ub/it"
+ fi
+ else
+ if [ -n "$ubdefault" ]; then
+ info_map_substseries "$family" "$ubdefault" "ub"
+ fi
+ fi
+
+ # black
+
+ if [ -f "${basefamily}c${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "c" "cb"
+ if [ -f "${basefamily}ci${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "c" "cb"
+ else
+ info_map_substitution "$family" "cb/sl" "cb/it"
+ fi
+ fi
+
+ # heavy
+
+ if [ -f "${basefamily}h${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "h" "hb"
+ if [ -f "${basefamily}hi${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "h" "hb"
+ else
+ info_map_substitution "$family" "hb/sl" "hb/it"
+ fi
+ fi
+
+ # extra bold
+
+ if [ -f "${basefamily}x${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "x" "eb"
+ if [ -f "${basefamily}xi${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "x" "eb"
+ else
+ info_map_substitution "$family" "eb/sl" "eb/it"
+ fi
+ else
+ if [ -n "$ebdefault" ]; then
+ info_map_substseries "$family" "$ebdefault" "eb"
+ fi
+ fi
+
+ # medium
+
+ if [ -f "${basefamily}m${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "m" "mb"
+ if [ -f "${basefamily}mi${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "m" "mb"
+ else
+ info_map_substitution "$family" "mb/sl" "mb/it"
+ fi
+ fi
+
+ # demibold
+
+ if [ -f "${basefamily}d${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "d" "db"
+ if [ -f "${basefamily}di${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "d" "db"
+ else
+ info_map_substitution "$family" "db/sl" "db/it"
+ fi
+ fi
+
+ # semibold
+
+ if [ -f "${basefamily}s${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "s" "sb"
+ if [ -f "${basefamily}si${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "s" "sb"
+ else
+ info_map_substitution "$family" "sb/sl" "sb/it"
+ fi
+ fi
+
+ # bold
+
+ if [ -f "${basefamily}b${rawenc_wgl}.ttf" ]; then
+ info_map_upright "$family" "b" "b"
+ if [ -f "${basefamily}bi${rawenc_wgl}.ttf" ]; then
+ info_map_italic "$family" "b" "b"
+ else
+ info_map_substitution "$family" "b/sl" "b/it"
+ fi
+ fi
+
+ # substitutions
+
+ if [ -z "$mffallback" ]; then
+ info_map_substseries "$family" "$bffallback" "m"
+ elif [ "$mffallback" != "m" ]; then
+ info_map_substseries "$family" "$mffallback" "m"
+ fi
+
+ if [ -z "$bffallback" ]; then
+ info_map_substseries "$family" "$mffallback" "b"
+ elif [ "-$bffallback" != "-b" ]; then
+ info_map_substseries "$family" "$bffallback" "b"
+ fi
+
+ info_map_substseries "$family" "$bfdefault" "bx"
+}
+
+# Built-in encoding vectors ;)
+
+dump_vectors() {
+ trap error_internal ERR
+
+ info "Creating encoding vector T1-WGL4.enc"
+ cat <<-EOF >T1-WGL4.enc
+ % T1-WGL4.enc
+ % Created by $fullname $version on $date
+ % This file should be put in a tex inputs directory
+ %
+ % Note: This encoding vector was installed by $fullname
+ % $version. It is based on the T1-WGL4.enc file
+ % distributed with FreeType versions 1.3.x and 1.4.
+ %
+ % Future versions of $fullname may ship with an
+ % updated version of this file.
+ %
+ % Derived from T1-WGL4.enc by Philipp Lehman <lehman@gmx.net>
+ %
+ % Version 1.1 2002-05-20
+ %
+ % LaTeX T1 mapping for Unicode encoded TrueType fonts (WGL4)
+ %
+ % Note that /hyphen appears twice: at the T1 code points
+ % 0x2d (hyphen) and 0x7f (hyphenchar)
+ %
+ % LIGKERN space l =: lslash ;
+ % LIGKERN space L =: Lslash ;
+ % LIGKERN question quoteleft =: questiondown ;
+ % LIGKERN exclam quoteleft =: exclamdown ;
+ % LIGKERN hyphen hyphen =: endash ;
+ % LIGKERN endash hyphen =: emdash ;
+ % LIGKERN quoteleft quoteleft =: quotedblleft ;
+ % LIGKERN quoteright quoteright =: quotedblright ;
+ % LIGKERN comma comma =: quotedblbase ;
+ % LIGKERN less less =: guillemotleft ;
+ % LIGKERN greater greater =: guillemotright ;
+ %
+ % LIGKERN f i =: fi ;
+ % LIGKERN f l =: fl ;
+ % LIGKERN f f =: ff ;
+ % LIGKERN ff i =: ffi ;
+ % LIGKERN ff l =: ffl ;
+ %
+ % Remove kerns to and from spaces and remove any kerns from
+ % the numbers.
+ %
+ % LIGKERN space {} * ; * {} space ;
+ % LIGKERN zero {} * ; * {} zero ;
+ % LIGKERN one {} * ; * {} one ;
+ % LIGKERN two {} * ; * {} two ;
+ % LIGKERN three {} * ; * {} three ;
+ % LIGKERN four {} * ; * {} four ;
+ % LIGKERN five {} * ; * {} five ;
+ % LIGKERN six {} * ; * {} six ;
+ % LIGKERN seven {} * ; * {} seven ;
+ % LIGKERN eight {} * ; * {} eight ;
+ % LIGKERN nine {} * ; * {} nine ;
+
+ /T1Encoding [ % now 256 chars follow
+ % 0x00
+ /grave /acute /circumflex /tilde
+ /dieresis /hungarumlaut /ring /caron
+ /breve /macron /dotaccent /cedilla
+ /ogonek /quotesinglbase /guilsinglleft /guilsinglright
+ % 0x10
+ /quotedblleft /quotedblright /quotedblbase /guillemotleft
+ /guillemotright /endash /emdash /compwordmark
+ /perthousandzero /dotlessi /dotlessj /ff
+ /fi /fl /ffi /ffl
+ % 0x20
+ /visualspace /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus
+ /comma /hyphen /period /slash
+ % 0x30
+ /zero /one /two /three
+ /four /five /six /seven
+ /eight /nine /colon /semicolon
+ /less /equal /greater /question
+ % 0x40
+ /at /A /B /C
+ /D /E /F /G
+ /H /I /J /K
+ /L /M /N /O
+ % 0x50
+ /P /Q /R /S
+ /T /U /V /W
+ /X /Y /Z /bracketleft
+ /backslash /bracketright /asciicircum /underscore
+ % 0x60
+ /quoteleft /a /b /c
+ /d /e /f /g
+ /h /i /j /k
+ /l /m /n /o
+ % 0x70
+ /p /q /r /s
+ /t /u /v /w
+ /x /y /z /braceleft
+ /bar /braceright /asciitilde /hyphen
+ % 0x80
+ /Abreve /Aogonek /Cacute /Ccaron
+ /Dcaron /Ecaron /Eogonek /Gbreve
+ /Lacute /Lcaron /Lslash /Nacute
+ /Ncaron /Eng /Odblacute /Racute
+ % 0x90
+ /Rcaron /Sacute /Scaron /Scedilla
+ /Tcaron /Tcedilla /Udblacute /Uring
+ /Ydieresis /Zacute /Zcaron /Zdotaccent
+ /IJ /Idot /dmacron /section
+ % 0xA0
+ /abreve /aogonek /cacute /ccaron
+ /dcaron /ecaron /eogonek /gbreve
+ /lacute /lcaron /lslash /nacute
+ /ncaron /eng /odblacute /racute
+ % 0xB0
+ /rcaron /sacute /scaron /scedilla
+ /tcaron /tcedilla /udblacute /uring
+ /ydieresis /zacute /zcaron /zdotaccent
+ /ij /exclamdown /questiondown /sterling
+ % 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde
+ /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+ % 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /OE
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /Germandbls
+ % 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+ % 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /oe
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /germandbls
+ ] def
+
+ % eof
+ EOF
+
+ info "Creating encoding vector T1-OSF.enc"
+ cat <<-EOF >T1-OSF.enc
+ % T1-OSF.enc
+ % Created by $fullname $version on $date
+ % This file should be put in a tex inputs directory
+ %
+ % Note: This encoding vector was installed by $fullname
+ % $version. It is based on the T1-WGL4.enc file
+ % distributed with FreeType versions 1.3.x and 1.4.
+ %
+ % Future versions of $fullname may ship with an
+ % updated version of this file.
+ %
+ % Derived from T1-WGL4.enc by Philipp Lehman <lehman@gmx.net>
+ %
+ % Version 1.1 2002-05-20
+ %
+ % LaTeX T1 mapping for Unicode encoded TrueType fonts (WGL4),
+ % using old style instead of the default figures
+ %
+ % Note that /hyphen appears twice: at the T1 code points
+ % 0x2d (hyphen) and 0x7f (hyphenchar)
+ %
+ % LIGKERN space l =: lslash ;
+ % LIGKERN space L =: Lslash ;
+ % LIGKERN question quoteleft =: questiondown ;
+ % LIGKERN exclam quoteleft =: exclamdown ;
+ % LIGKERN hyphen hyphen =: endash ;
+ % LIGKERN endash hyphen =: emdash ;
+ % LIGKERN quoteleft quoteleft =: quotedblleft ;
+ % LIGKERN quoteright quoteright =: quotedblright ;
+ % LIGKERN comma comma =: quotedblbase ;
+ % LIGKERN less less =: guillemotleft ;
+ % LIGKERN greater greater =: guillemotright ;
+ %
+ % LIGKERN f i =: fi ;
+ % LIGKERN f l =: fl ;
+ % LIGKERN f f =: ff ;
+ % LIGKERN ff i =: ffi ;
+ % LIGKERN ff l =: ffl ;
+ %
+ % Remove kerns to and from spaces and remove any kerns from
+ % the numbers.
+ %
+ % LIGKERN space {} * ; * {} space ;
+ % LIGKERN zerooldstyle {} * ; * {} zerooldstyle ;
+ % LIGKERN oneoldstyle {} * ; * {} oneoldstyle ;
+ % LIGKERN twooldstyle {} * ; * {} twooldstyle ;
+ % LIGKERN threeoldstyle {} * ; * {} threeoldstyle ;
+ % LIGKERN fouroldstyle {} * ; * {} fouroldstyle ;
+ % LIGKERN fiveoldstyle {} * ; * {} fiveoldstyle ;
+ % LIGKERN sixoldstyle {} * ; * {} sixoldstyle ;
+ % LIGKERN sevenoldstyle {} * ; * {} sevenoldstyle ;
+ % LIGKERN eightoldstyle {} * ; * {} eightoldstyle ;
+ % LIGKERN nineoldstyle {} * ; * {} nineoldstyle ;
+
+ /T1Encoding [ % now 256 chars follow
+ % 0x00
+ /grave /acute /circumflex /tilde
+ /dieresis /hungarumlaut /ring /caron
+ /breve /macron /dotaccent /cedilla
+ /ogonek /quotesinglbase /guilsinglleft /guilsinglright
+ % 0x10
+ /quotedblleft /quotedblright /quotedblbase /guillemotleft
+ /guillemotright /endash /emdash /compwordmark
+ /perthousandzero /dotlessi /dotlessj /ff
+ /fi /fl /ffi /ffl
+ % 0x20
+ /visualspace /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus
+ /comma /hyphen /period /slash
+ % 0x30
+ /zerooldstyle /oneoldstyle /twooldstyle /threeoldstyle
+ /fouroldstyle /fiveoldstyle /sixoldstyle /sevenoldstyle
+ /eightoldstyle /nineoldstyle /colon /semicolon
+ /less /equal /greater /question
+ % 0x40
+ /at /A /B /C
+ /D /E /F /G
+ /H /I /J /K
+ /L /M /N /O
+ % 0x50
+ /P /Q /R /S
+ /T /U /V /W
+ /X /Y /Z /bracketleft
+ /backslash /bracketright /asciicircum /underscore
+ % 0x60
+ /quoteleft /a /b /c
+ /d /e /f /g
+ /h /i /j /k
+ /l /m /n /o
+ % 0x70
+ /p /q /r /s
+ /t /u /v /w
+ /x /y /z /braceleft
+ /bar /braceright /asciitilde /hyphen
+ % 0x80
+ /Abreve /Aogonek /Cacute /Ccaron
+ /Dcaron /Ecaron /Eogonek /Gbreve
+ /Lacute /Lcaron /Lslash /Nacute
+ /Ncaron /Eng /Odblacute /Racute
+ % 0x90
+ /Rcaron /Sacute /Scaron /Scedilla
+ /Tcaron /Tcedilla /Udblacute /Uring
+ /Ydieresis /Zacute /Zcaron /Zdotaccent
+ /IJ /Idot /dmacron /section
+ % 0xA0
+ /abreve /aogonek /cacute /ccaron
+ /dcaron /ecaron /eogonek /gbreve
+ /lacute /lcaron /lslash /nacute
+ /ncaron /eng /odblacute /racute
+ % 0xB0
+ /rcaron /sacute /scaron /scedilla
+ /tcaron /tcedilla /udblacute /uring
+ /ydieresis /zacute /zcaron /zdotaccent
+ /ij /exclamdown /questiondown /sterling
+ % 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde
+ /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+ % 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /OE
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /Germandbls
+ % 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+ % 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /oe
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /germandbls
+ ] def
+
+ % eof
+ EOF
+
+ info "Creating encoding vector T1-SC.enc"
+ cat <<-EOF >T1-SC.enc
+ % T1-SC.enc
+ % Created by $fullname $version on $date
+ % This file should be put in a tex inputs directory
+ %
+ % Note: This encoding vector was installed by $fullname
+ % $version. It is based on the T1-WGL4.enc file
+ % distributed with FreeType versions 1.3.x and 1.4.
+ %
+ % Future versions of $fullname may ship with an
+ % updated version of this file.
+ %
+ % Derived from T1-WGL4.enc by Bruce D\'Arcus <darcusb@muohio.edu>
+ % Modified and enhanced by Philipp Lehman <lehman@gmx.net>
+ %
+ % Version 1.3 2002-05-20
+ %
+ % LaTeX T1 mapping for Unicode encoded TrueType fonts (WGL4),
+ % using small caps instead of lowercase glyphs
+ %
+ % Note that /hyphen appears twice: at the T1 code points
+ % 0x2d (hyphen) and 0x7f (hyphenchar)
+ %
+ % LIGKERN space Lsmall =: Lslashsmall ;
+ % LIGKERN space L =: Lslash ;
+ % LIGKERN question quoteleft =: questiondown ;
+ % LIGKERN exclam quoteleft =: exclamdown ;
+ % LIGKERN hyphen hyphen =: endash ;
+ % LIGKERN endash hyphen =: emdash ;
+ % LIGKERN quoteleft quoteleft =: quotedblleft ;
+ % LIGKERN quoteright quoteright =: quotedblright ;
+ % LIGKERN comma comma =: quotedblbase ;
+ % LIGKERN less less =: guillemotleft ;
+ % LIGKERN greater greater =: guillemotright ;
+ %
+ % Remove kerns to and from spaces and remove any kerns from
+ % the numbers.
+ %
+ % LIGKERN space {} * ; * {} space ;
+ % LIGKERN zero {} * ; * {} zero ;
+ % LIGKERN one {} * ; * {} one ;
+ % LIGKERN two {} * ; * {} two ;
+ % LIGKERN three {} * ; * {} three ;
+ % LIGKERN four {} * ; * {} four ;
+ % LIGKERN five {} * ; * {} five ;
+ % LIGKERN six {} * ; * {} six ;
+ % LIGKERN seven {} * ; * {} seven ;
+ % LIGKERN eight {} * ; * {} eight ;
+ % LIGKERN nine {} * ; * {} nine ;
+
+ /T1Encoding [ % now 256 chars follow
+ % 0x00
+ /grave /acute /circumflex /tilde
+ /dieresis /hungarumlaut /ring /caron
+ /breve /macron /dotaccent /cedilla
+ /ogonek /quotesinglbase /guilsinglleft /guilsinglright
+ % 0x10
+ /quotedblleft /quotedblright /quotedblbase /guillemotleft
+ /guillemotright /endash /emdash /compwordmark
+ /perthousandzero /dotlessIsmall /dotlessJsmall /ff
+ /fi /fl /ffi /ffl
+ % 0x20
+ /visualspace /exclam /quotedbl /numbersign
+ /dollaroldstyle /percentsmall /ampersandsmall /quoteright
+ /parenleft /parenright /asterisk /plus
+ /comma /hyphen /period /slash
+ % 0x30
+ /zero /one /two /three
+ /four /five /six /seven
+ /eight /nine /colon /semicolon
+ /less /equal /greater /question
+ % 0x40
+ /at /A /B /C
+ /D /E /F /G
+ /H /I /J /K
+ /L /M /N /O
+ % 0x50
+ /P /Q /R /S
+ /T /U /V /W
+ /X /Y /Z /bracketleft
+ /backslash /bracketright /asciicircum /underscore
+ % 0x60
+ /quoteleft /Asmall /Bsmall /Csmall
+ /Dsmall /Esmall /Fsmall /Gsmall
+ /Hsmall /Ismall /Jsmall /Ksmall
+ /Lsmall /Msmall /Nsmall /Osmall
+ % 0x70
+ /Psmall /Qsmall /Rsmall /Ssmall
+ /Tsmall /Usmall /Vsmall /Wsmall
+ /Xsmall /Ysmall /Zsmall /braceleft
+ /bar /braceright /asciitilde /hyphen
+ % 0x80
+ /Abreve /Aogonek /Cacute /Ccaron
+ /Dcaron /Ecaron /Eogonek /Gbreve
+ /Lacute /Lcaron /Lslash /Nacute
+ /Ncaron /Eng /Odblacute /Racute
+ % 0x90
+ /Rcaron /Sacute /Scaron /Scedilla
+ /Tcaron /Tcedilla /Udblacute /Uring
+ /Ydieresis /Zacute /Zcaron /Zdotaccent
+ /IJ /Idot /Dmacronsmall /section
+ % 0xA0
+ /Abrevesmall /Aogoneksmall /Cacutesmall /Ccaronsmall
+ /Dcaronsmall /Ecaronsmall /Eogoneksmall /Gbrevesmall
+ /Lacutesmall /Lcaronsmall /Lslashsmall /Nacutesmall
+ /Ncaronsmall /Engsmall /Odblacutesmall /Racutesmall
+ % 0xB0
+ /Rcaronsmall /Sacutesmall /Scaronsmall /Scedillasmall
+ /Tcaronsmall /Tcedillasmall /Udblacutesmall /Uringsmall
+ /Ydieresissmall /Zacutesmall /Zcaronsmall /Zdotaccentsmall
+ /IJsmall /exclamdown /questiondown /sterling
+ % 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde
+ /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+ % 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /OE
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /Germandbls
+ % 0xE0
+ /Agravesmall /Aacutesmall /Acircumflexsmall /Atildesmall
+ /Adieresissmall /Aringsmall /AEsmall /Ccedillasmall
+ /Egravesmall /Eacutesmall /Ecircumflexsmall /Edieresissmall
+ /Igravesmall /Iacutesmall /Icircumflexsmall /Idieresissmall
+ % 0xF0
+ /Ethsmall /Ntildesmall /Ogravesmall /Oacutesmall
+ /Ocircumflexsmall /Otildesmall /Odieresissmall /OEsmall
+ /Oslashsmall /Ugravesmall /Uacutesmall /Ucircumflexsmall
+ /Udieresissmall /Yacutesmall /Thornsmall /germandbls
+ ] def
+
+ % eof
+ EOF
+
+ info "Creating encoding vector T1-SCOSF.enc"
+ cat <<-EOF >T1-SCOSF.enc
+ % T1-SCOSF.enc
+ % Created by $fullname $version on $date
+ % This file should be put in a tex inputs directory
+ %
+ % Note: This encoding vector was installed by $fullname
+ % $version. It is based on the T1-WGL4.enc file
+ % distributed with FreeType versions 1.3.x and 1.4.
+ %
+ % Future versions of $fullname may ship with an
+ % updated version of this file.
+ %
+ % Derived from T1-SC.enc by Philipp Lehman <lehman@gmx.net>
+ %
+ % Version 1.3 2002-05-20
+ %
+ % LaTeX T1 mapping for Unicode encoded TrueType fonts (WGL4),
+ % using small caps instead of lowercase glyphs and old style
+ % instead of the default figures
+ %
+ % Note that /hyphen appears twice: at the T1 code points
+ % 0x2d (hyphen) and 0x7f (hyphenchar)
+ %
+ % LIGKERN space Lsmall =: Lslashsmall ;
+ % LIGKERN space L =: Lslash ;
+ % LIGKERN questionsmall quoteleft =: questiondownsmall ;
+ % LIGKERN exclamsmall quoteleft =: exclamdownsmall ;
+ % LIGKERN hyphen hyphen =: endash ;
+ % LIGKERN endash hyphen =: emdash ;
+ % LIGKERN quoteleft quoteleft =: quotedblleft ;
+ % LIGKERN quoteright quoteright =: quotedblright ;
+ % LIGKERN comma comma =: quotedblbase ;
+ % LIGKERN less less =: guillemotleft ;
+ % LIGKERN greater greater =: guillemotright ;
+ %
+ % Remove kerns to and from spaces and remove any kerns from
+ % the numbers.
+ %
+ % LIGKERN space {} * ; * {} space ;
+ % LIGKERN zerooldstyle {} * ; * {} zerooldstyle ;
+ % LIGKERN oneoldstyle {} * ; * {} oneoldstyle ;
+ % LIGKERN twooldstyle {} * ; * {} twooldstyle ;
+ % LIGKERN threeoldstyle {} * ; * {} threeoldstyle ;
+ % LIGKERN fouroldstyle {} * ; * {} fouroldstyle ;
+ % LIGKERN fiveoldstyle {} * ; * {} fiveoldstyle ;
+ % LIGKERN sixoldstyle {} * ; * {} sixoldstyle ;
+ % LIGKERN sevenoldstyle {} * ; * {} sevenoldstyle ;
+ % LIGKERN eightoldstyle {} * ; * {} eightoldstyle ;
+ % LIGKERN nineoldstyle {} * ; * {} nineoldstyle ;
+
+ /T1Encoding [ % now 256 chars follow
+ % 0x00
+ /grave /acute /circumflex /tilde
+ /dieresis /hungarumlaut /ring /caron
+ /breve /macron /dotaccent /cedilla
+ /ogonek /quotesinglbase /guilsinglleft /guilsinglright
+ % 0x10
+ /quotedblleft /quotedblright /quotedblbase /guillemotleft
+ /guillemotright /endash /emdash /compwordmark
+ /perthousandzero /dotlessIsmall /dotlessJsmall /ff
+ /fi /fl /ffi /ffl
+ % 0x20
+ /visualspace /exclam /quotedbl /numbersign
+ /dollaroldstyle /percentsmall /ampersandsmall /quoteright
+ /parenleft /parenright /asterisk /plus
+ /comma /hyphen /period /slash
+ % 0x30
+ /zerooldstyle /oneoldstyle /twooldstyle /threeoldstyle
+ /fouroldstyle /fiveoldstyle /sixoldstyle /sevenoldstyle
+ /eightoldstyle /nineoldstyle /colon /semicolon
+ /less /equal /greater /question
+ % 0x40
+ /at /A /B /C
+ /D /E /F /G
+ /H /I /J /K
+ /L /M /N /O
+ % 0x50
+ /P /Q /R /S
+ /T /U /V /W
+ /X /Y /Z /bracketleft
+ /backslash /bracketright /asciicircum /underscore
+ % 0x60
+ /quoteleft /Asmall /Bsmall /Csmall
+ /Dsmall /Esmall /Fsmall /Gsmall
+ /Hsmall /Ismall /Jsmall /Ksmall
+ /Lsmall /Msmall /Nsmall /Osmall
+ % 0x70
+ /Psmall /Qsmall /Rsmall /Ssmall
+ /Tsmall /Usmall /Vsmall /Wsmall
+ /Xsmall /Ysmall /Zsmall /braceleft
+ /bar /braceright /asciitilde /hyphen
+ % 0x80
+ /Abreve /Aogonek /Cacute /Ccaron
+ /Dcaron /Ecaron /Eogonek /Gbreve
+ /Lacute /Lcaron /Lslash /Nacute
+ /Ncaron /Eng /Odblacute /Racute
+ % 0x90
+ /Rcaron /Sacute /Scaron /Scedilla
+ /Tcaron /Tcedilla /Udblacute /Uring
+ /Ydieresis /Zacute /Zcaron /Zdotaccent
+ /IJ /Idot /Dmacronsmall /section
+ % 0xA0
+ /Abrevesmall /Aogoneksmall /Cacutesmall /Ccaronsmall
+ /Dcaronsmall /Ecaronsmall /Eogoneksmall /Gbrevesmall
+ /Lacutesmall /Lcaronsmall /Lslashsmall /Nacutesmall
+ /Ncaronsmall /Engsmall /Odblacutesmall /Racutesmall
+ % 0xB0
+ /Rcaronsmall /Sacutesmall /Scaronsmall /Scedillasmall
+ /Tcaronsmall /Tcedillasmall /Udblacutesmall /Uringsmall
+ /Ydieresissmall /Zacutesmall /Zcaronsmall /Zdotaccentsmall
+ /IJsmall /exclamdown /questiondown /sterling
+ % 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde
+ /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+ % 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /OE
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /Germandbls
+ % 0xE0
+ /Agravesmall /Aacutesmall /Acircumflexsmall /Atildesmall
+ /Adieresissmall /Aringsmall /AEsmall /Ccedillasmall
+ /Egravesmall /Eacutesmall /Ecircumflexsmall /Edieresissmall
+ /Igravesmall /Iacutesmall /Icircumflexsmall /Idieresissmall
+ % 0xF0
+ /Ethsmall /Ntildesmall /Ogravesmall /Oacutesmall
+ /Ocircumflexsmall /Otildesmall /Odieresissmall /OEsmall
+ /Oslashsmall /Ugravesmall /Uacutesmall /Ucircumflexsmall
+ /Udieresissmall /Yacutesmall /Thornsmall /germandbls
+ ] def
+
+ % eof
+ EOF
+
+ info "Creating encoding vector TS1-AGL.enc"
+ cat <<-EOF >TS1-AGL.enc
+ % TS1-AGL.enc
+ % Created by $fullname $version on $date
+ % This file should be put in a tex inputs directory
+ %
+ % Note: This encoding vector was installed by $fullname
+ % $version.
+ %
+ % Future versions of $fullname may ship with an
+ % updated version of this file.
+ %
+ % This file is still more or less experimental.
+ %
+ % Originally written by D. van Dok <d.vandoc@ecn.nl>
+ % Modified and enhanced by Werner Lemberg <wl@gnu.org>
+ %
+ % Version 0.1 2001-02-15
+ %
+ % Glyph names follow the Adobe Glyph List (AGL); WGL4 glyph
+ % name variants (mostly for older fonts) as documented in
+ % the TrueType specification are as follows.
+ %
+ % Omega -> Ohm
+ % lira -> afii08941
+ % mu -> mu1
+ % periodcentered -> middot
+ %
+ % Glyph names marked with "?" are uncertain; any improvements welcome
+
+ /TS1Encoding [ % now 256 chars follow
+ % 0x00
+ /Grave % CAPITAL GRAVE ACCENT (AGL)
+ /Acute % CAPITAL ACUTE ACCENT (AGL)
+ /.notdef % CAPITAL CIRCUMFLEX ACCENT
+ /.notdef % CAPITAL TILDE ACCENT
+ /Dieresis % CAPITAL DIAERESIS (AGL)
+ /Hungarumlaut % CAPITAL DOUBLE ACUTE ACCENT (AGL)
+ /.notdef % CAPITAL RING ACCENT
+ /Caron % CAPITAL CARON (AGL)
+ /.notdef % CAPITAL BREVE ACCENT
+ /Macron % CAPITAL MACRON (AGL)
+ /.notdef % CAPITAL DOT ABOVE ACCENT
+ /cedilla % CAPITAL CEDILLA (AGL, WGL4)
+ /ogonek % CAPITAL OGONEK (AGL, WGL4)
+ /quotesinglbase % SINGLE LOW-9 QUOTATION MARK (AGL, WGL4)
+ /.notdef
+ /.notdef
+ % 0x10
+ /.notdef
+ /.notdef
+ /quotedblbase % DOUBLE LOW-9 QUOTATION MARK (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /.notdef % 2/3 em dash
+ /threequartersemdash % THREE QUARTERS EM DASH (AGL)
+ /.notdef % capital compound word mark
+ /arrowleft % LEFTWARDS ARROW (AGL, WGL4)
+ /arrowright % RIGHTWARDS ARROW (AGL, WGL4)
+ /uni2040 % ? TIE ACCENT (AGL)
+ /.notdef % ? CAPITAL TIE ACCENT
+ /.notdef % ? TIE ACCENT (variant)
+ /.notdef % ? CAPITAL TIE ACCENT (variant)
+ /.notdef
+ /.notdef % lowercase ascender compound word mark
+ % 0x20
+ /uni0180 % LATIN SMALL LETTER B WITH STROKE (AGL)
+ /.notdef
+ /.notdef
+ /.notdef
+ /dollar % DOLLAR SIGN (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /quotesingle % APOSTROPHE (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /asterisk % ASTERISK (AGL, WGL4)
+ /.notdef
+ /comma % COMMA (AGL, WGL4)
+ /.notdef % HYPHEN (glyph variant with two strokes)
+ /period % FULL STOP (AGL, WGL4)
+ /fraction % ? FRACTION SLASH (AGL, WGL4) or "/slash"
+ % 0x30
+ /zerooldstyle % OLDSTYLE DIGIT ZERO (AGL)
+ /oneoldstyle % OLDSTYLE DIGIT ONE (AGL)
+ /twooldstyle % OLDSTYLE DIGIT TWO (AGL)
+ /threeoldstyle % OLDSTYLE DIGIT THREE (AGL)
+ /fouroldstyle % OLDSTYLE DIGIT FOUR (AGL)
+ /fiveoldstyle % OLDSTYLE DIGIT FIVE (AGL)
+ /sixoldstyle % OLDSTYLE DIGIT SIX (AGL)
+ /sevenoldstyle % OLDSTYLE DIGIT SEVEN (AGL)
+ /eightoldstyle % OLDSTYLE DIGIT EIGHT (AGL)
+ /nineoldstyle % OLDSTYLE DIGIT NINE (AGL)
+ /.notdef
+ /.notdef
+ /angleleft % LEFT-POINTING ANGLE BRACKET (AGL)
+ /minus % MINUS SIGN (AGL, WGL4)
+ /angleright % RIGHT-POINTING ANGLE BRACKET (AGL)
+ /.notdef
+ % 0x40
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /uni2127 % INVERTED OHM SIGN (AGL)
+ /.notdef
+ /circle % WHITE CIRCLE (AGL, WGL4)
+ % 0x50
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /Omega % OHM SIGN (AGL, WGL4 -> "/Ohm")
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef % OPENING DOUBLE SQUARE BRACKET
+ /.notdef
+ /.notdef % CLOSING DOUBLE SQUARE BRACKET
+ /arrowup % UPWARDS ARROW (AGL, WGL4)
+ /arrowdown % DOWNWARDS ARROW (AGL, WGL4)
+ % 0x60
+ /grave % GRAVE ACCENT (AGL, WGL4)
+ /.notdef
+ /.notdef % BORN
+ /.notdef % DIVORCED
+ /.notdef % DIED
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef % LEAF
+ /.notdef % MARRIED
+ /musicalnote % EIGTH NOTE (AGL, WGL4)
+ /.notdef
+ % 0x70
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /asciitilde % TILDE (AGL, WGL4)
+ /.notdef % HYPHEN (glyph variant with two strokes)
+ % 0x80
+ /breve % BREVE (AGL, WGL4)
+ /caron % CARON (AGL, WGL4)
+ /hungarumlaut % DOUBLE ACUTE ACCENT (AGL, WGL4)
+ /dblGrave % CAPITAL GRAVE DOUBLE ACCENT (AGL)
+ /dagger % DAGGER (AGL, WGL4)
+ /daggerdbl % DOUBLE DAGGER (AGL, WGL4)
+ /.notdef % double vertical bar
+ /perthousand % PER MILLE SIGN (AGL, WGL4)
+ /bullet % BULLET (AGL, WGL4)
+ /uni2103 % DEGREE CELSIUS (AGL)
+ /dollaroldstyle % OLDSTYLE DOLLAR SIGN (AGL)
+ /centoldstyle % OLDSTYLE CENT SIGN (AGL)
+ /florin % LATIN SMALL LETTER F WITH HOOK (AGL, WGL4)
+ /colonmonetary % COLON SIGN (AGL)
+ /uni20A9 % WON SIGN (AGL)
+ /uni20A6 % NAIRA SIGN (AGL)
+ % 0x90
+ /.notdef % ? LATIN CAPITAL LETTER G WITH VERTICAL STROKE (guarani)
+ /.notdef % ? LATIN CAPITAL LETTER P WITH STROKE (peso)
+ /lira % LIRA SIGN (AGL, WGL4 -> "/afii08941")
+ /prescription % ? RECIPE (AGL)
+ /uni203D % INTERROBANG (AGL)
+ /.notdef % INTERROBANG INVERTED
+ /dong % DONG SIGN (AGL)
+ /trademark % TRADE MARK SIGN (AGL, WGL4)
+ /uni2031 % PER TEN THOUSAND SIGN (AGL)
+ /.notdef % ? PILCROW SIGN (glyph variant)
+ /uni0E3F % THAI CURRENCY SYMBOL BAHT (AGL)
+ /afii61352 % NUMERO SIGN (AGL, WGL4)
+ /.notdef % PERCENT SIGN (glyph variant)
+ /estimated % ESTIMATED SYMBOL (AGL, WGL4)
+ /openbullet % WHITE BULLET (AGL, WGL4)
+ /uni2120 % SERVICE MARK (AGL)
+ % 0xA0
+ /uni2045 % LEFT SQUARE BRACKET WITH SQUILL (AGL)
+ /uni2046 % RIGHT SQUARE BRACKET WITH SQUILL (AGL)
+ /cent % CENT SIGN (AGL, WGL4)
+ /sterling % POUND SIGN (AGL, WGL4)
+ /currency % CURRENCY SIGN (AGL, WGL4)
+ /yen % YEN SIGN (AGL, WGL4)
+ /brokenbar % BROKEN BAR (AGL, WGL4)
+ /section % SECTION SIGN (AGL, WGL4)
+ /dieresis % DIAERESIS (AGL, WGL4)
+ /copyright % COPYRIGHT SIGN (AGL, WGL4)
+ /ordfeminine % FEMININE ORDINAL INDICATOR (AGL, WGL4)
+ /.notdef % COPYLEFT SIGN
+ /logicalnot % NOT SIGN (AGL, WGL4)
+ /uni2117 % SOUND RECORDING COPYRIGHT (AGL)
+ /registered % REGISTERED SIGN (AGL, WGL4)
+ /macron % MACRON (AGL, WGL4)
+ % 0xB0
+ /degree % DEGREE SIGN (AGL, WGL4)
+ /plusminus % PLUS-MINUS SIGN (AGL, WGL4)
+ /twosuperior % SUPERSCRIPT TWO (AGL, WGL4)
+ /threesuperior % SUPERSCRIPT THREE (AGL, WGL4)
+ /acute % ACUTE ACCENT (AGL, WGL4)
+ /mu % MICRO SIGN (AGL, WGL4 -> "/mu1")
+ /paragraph % PILCROW SIGN (AGL, WGL4)
+ /periodcentered % MIDDLE DOT (AGL, WGL4 -> "/middot")
+ /uni203B % REFERENCE MARK
+ /onesuperior % SUPERSCRIPT ONE (AGL, WGL4)
+ /ordmasculine % MASCULINE ORDINAL INDICATOR (AGL, WGL4)
+ /radical % SQUARE ROOT (AGL, WGL4)
+ /onequarter % VULGAR FRACTION ONE QUARTER (AGL, WGL4)
+ /onehalf % VULGAR FRACTION ONE HALF (AGL, WGL4)
+ /threequarters % VULGAR FRACTION THREE QUARTERS (AGL, WGL4)
+ /Euro % EURO SIGN (AGL)
+ % 0xC0
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ % 0xD0
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /multiply % MULTIPLICATION SIGN (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ % 0xE0
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ % 0xF0
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /divide % DIVISION SIGN (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ ] def
+
+ % eof
+ EOF
+
+ info "Creating encoding vector TS1-SC.enc"
+ cat <<-EOF >TS1-SC.enc
+ % TS1-SC.enc
+ % Created by $fullname $version on $date
+ % This file should be put in a tex inputs directory
+ %
+ % Note: This encoding vector was installed by $fullname
+ % $version.
+ %
+ % Future versions of $fullname may ship with an
+ % updated version of this file.
+ %
+ % This file is still more or less experimental.
+ %
+ % Derived from TS1-AGL.enc by Philipp Lehman <lehman@gmx.net>
+ %
+ % Version 0.1 2002-05-01
+ %
+ % Glyph names marked with "?" are uncertain; any improvements welcome
+
+ /TS1Encoding [ % now 256 chars follow
+ % 0x00
+ /Grave % CAPITAL GRAVE ACCENT (AGL)
+ /Acute % CAPITAL ACUTE ACCENT (AGL)
+ /.notdef % CAPITAL CIRCUMFLEX ACCENT
+ /.notdef % CAPITAL TILDE ACCENT
+ /Dieresis % CAPITAL DIAERESIS (AGL)
+ /Hungarumlaut % CAPITAL DOUBLE ACUTE ACCENT (AGL)
+ /.notdef % CAPITAL RING ACCENT
+ /Caron % CAPITAL CARON (AGL)
+ /.notdef % CAPITAL BREVE ACCENT
+ /Macron % CAPITAL MACRON (AGL)
+ /.notdef % CAPITAL DOT ABOVE ACCENT
+ /cedilla % CAPITAL CEDILLA (AGL, WGL4)
+ /ogonek % CAPITAL OGONEK (AGL, WGL4)
+ /quotesinglbase % SINGLE LOW-9 QUOTATION MARK (AGL, WGL4)
+ /.notdef
+ /.notdef
+ % 0x10
+ /.notdef
+ /.notdef
+ /quotedblbase % DOUBLE LOW-9 QUOTATION MARK (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /.notdef % 2/3 em dash
+ /threequartersemdash % THREE QUARTERS EM DASH (AGL)
+ /.notdef % capital compound word mark
+ /arrowleft % LEFTWARDS ARROW (AGL, WGL4)
+ /arrowright % RIGHTWARDS ARROW (AGL, WGL4)
+ /uni2040 % ? TIE ACCENT (AGL)
+ /.notdef % ? CAPITAL TIE ACCENT
+ /.notdef % ? TIE ACCENT (variant)
+ /.notdef % ? CAPITAL TIE ACCENT (variant)
+ /.notdef
+ /.notdef % lowercase ascender compound word mark
+ % 0x20
+ /uni0180 % LATIN SMALL LETTER B WITH STROKE (AGL)
+ /.notdef
+ /.notdef
+ /.notdef
+ /dollaroldstyle % OLDSTYLE DOLLAR SIGN (AGL)
+ /.notdef
+ /.notdef
+ /quotesingle % APOSTROPHE (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /asterisk % ASTERISK (AGL, WGL4)
+ /.notdef
+ /comma % COMMA (AGL, WGL4)
+ /.notdef % HYPHEN (glyph variant with two strokes)
+ /period % FULL STOP (AGL, WGL4)
+ /fraction % ? FRACTION SLASH (AGL, WGL4) or "/slash"
+ % 0x30
+ /zerooldstyle % OLDSTYLE DIGIT ZERO (AGL)
+ /oneoldstyle % OLDSTYLE DIGIT ONE (AGL)
+ /twooldstyle % OLDSTYLE DIGIT TWO (AGL)
+ /threeoldstyle % OLDSTYLE DIGIT THREE (AGL)
+ /fouroldstyle % OLDSTYLE DIGIT FOUR (AGL)
+ /fiveoldstyle % OLDSTYLE DIGIT FIVE (AGL)
+ /sixoldstyle % OLDSTYLE DIGIT SIX (AGL)
+ /sevenoldstyle % OLDSTYLE DIGIT SEVEN (AGL)
+ /eightoldstyle % OLDSTYLE DIGIT EIGHT (AGL)
+ /nineoldstyle % OLDSTYLE DIGIT NINE (AGL)
+ /.notdef
+ /.notdef
+ /angleleft % LEFT-POINTING ANGLE BRACKET (AGL)
+ /minus % MINUS SIGN (AGL, WGL4)
+ /angleright % RIGHT-POINTING ANGLE BRACKET (AGL)
+ /.notdef
+ % 0x40
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /uni2127 % INVERTED OHM SIGN (AGL)
+ /.notdef
+ /circle % WHITE CIRCLE (AGL, WGL4)
+ % 0x50
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /Omega % OHM SIGN (AGL, WGL4 -> "/Ohm")
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef % OPENING DOUBLE SQUARE BRACKET
+ /.notdef
+ /.notdef % CLOSING DOUBLE SQUARE BRACKET
+ /arrowup % UPWARDS ARROW (AGL, WGL4)
+ /arrowdown % DOWNWARDS ARROW (AGL, WGL4)
+ % 0x60
+ /grave % GRAVE ACCENT (AGL, WGL4)
+ /.notdef
+ /.notdef % BORN
+ /.notdef % DIVORCED
+ /.notdef % DIED
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef % LEAF
+ /.notdef % MARRIED
+ /musicalnote % EIGTH NOTE (AGL, WGL4)
+ /.notdef
+ % 0x70
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /asciitilde % TILDE (AGL, WGL4)
+ /.notdef % HYPHEN (glyph variant with two strokes)
+ % 0x80
+ /breve % BREVE (AGL, WGL4)
+ /caron % CARON (AGL, WGL4)
+ /hungarumlaut % DOUBLE ACUTE ACCENT (AGL, WGL4)
+ /dblGrave % CAPITAL GRAVE DOUBLE ACCENT (AGL)
+ /dagger % DAGGER (AGL, WGL4)
+ /daggerdbl % DOUBLE DAGGER (AGL, WGL4)
+ /.notdef % double vertical bar
+ /perthousand % PER MILLE SIGN (AGL, WGL4)
+ /bullet % BULLET (AGL, WGL4)
+ /uni2103 % DEGREE CELSIUS (AGL)
+ /dollaroldstyle % OLDSTYLE DOLLAR SIGN (AGL)
+ /centoldstyle % OLDSTYLE CENT SIGN (AGL)
+ /florin % LATIN SMALL LETTER F WITH HOOK (AGL, WGL4)
+ /colonmonetary % COLON SIGN (AGL)
+ /uni20A9 % WON SIGN (AGL)
+ /uni20A6 % NAIRA SIGN (AGL)
+ % 0x90
+ /.notdef % ? LATIN CAPITAL LETTER G WITH VERTICAL STROKE (guarani)
+ /.notdef % ? LATIN CAPITAL LETTER P WITH STROKE (peso)
+ /lira % LIRA SIGN (AGL, WGL4 -> "/afii08941")
+ /prescription % ? RECIPE (AGL)
+ /uni203D % INTERROBANG (AGL)
+ /.notdef % INTERROBANG INVERTED
+ /dong % DONG SIGN (AGL)
+ /trademark % TRADE MARK SIGN (AGL, WGL4)
+ /uni2031 % PER TEN THOUSAND SIGN (AGL)
+ /.notdef % ? PILCROW SIGN (glyph variant)
+ /uni0E3F % THAI CURRENCY SYMBOL BAHT (AGL)
+ /afii61352 % NUMERO SIGN (AGL, WGL4)
+ /.notdef % PERCENT SIGN (glyph variant)
+ /estimated % ESTIMATED SYMBOL (AGL, WGL4)
+ /openbullet % WHITE BULLET (AGL, WGL4)
+ /uni2120 % SERVICE MARK (AGL)
+ % 0xA0
+ /uni2045 % LEFT SQUARE BRACKET WITH SQUILL (AGL)
+ /uni2046 % RIGHT SQUARE BRACKET WITH SQUILL (AGL)
+ /cent % CENT SIGN (AGL, WGL4)
+ /sterling % POUND SIGN (AGL, WGL4)
+ /currency % CURRENCY SIGN (AGL, WGL4)
+ /yen % YEN SIGN (AGL, WGL4)
+ /brokenbar % BROKEN BAR (AGL, WGL4)
+ /section % SECTION SIGN (AGL, WGL4)
+ /dieresis % DIAERESIS (AGL, WGL4)
+ /copyright % COPYRIGHT SIGN (AGL, WGL4)
+ /ordfeminine % FEMININE ORDINAL INDICATOR (AGL, WGL4)
+ /.notdef % COPYLEFT SIGN
+ /logicalnot % NOT SIGN (AGL, WGL4)
+ /uni2117 % SOUND RECORDING COPYRIGHT (AGL)
+ /registered % REGISTERED SIGN (AGL, WGL4)
+ /macron % MACRON (AGL, WGL4)
+ % 0xB0
+ /degree % DEGREE SIGN (AGL, WGL4)
+ /plusminus % PLUS-MINUS SIGN (AGL, WGL4)
+ /twosuperior % SUPERSCRIPT TWO (AGL, WGL4)
+ /threesuperior % SUPERSCRIPT THREE (AGL, WGL4)
+ /acute % ACUTE ACCENT (AGL, WGL4)
+ /mu % MICRO SIGN (AGL, WGL4 -> "/mu1")
+ /paragraph % PILCROW SIGN (AGL, WGL4)
+ /periodcentered % MIDDLE DOT (AGL, WGL4 -> "/middot")
+ /uni203B % REFERENCE MARK
+ /onesuperior % SUPERSCRIPT ONE (AGL, WGL4)
+ /ordmasculine % MASCULINE ORDINAL INDICATOR (AGL, WGL4)
+ /radical % SQUARE ROOT (AGL, WGL4)
+ /onequarter % VULGAR FRACTION ONE QUARTER (AGL, WGL4)
+ /onehalf % VULGAR FRACTION ONE HALF (AGL, WGL4)
+ /threequarters % VULGAR FRACTION THREE QUARTERS (AGL, WGL4)
+ /Euro % EURO SIGN (AGL)
+ % 0xC0
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ % 0xD0
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /multiply % MULTIPLICATION SIGN (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ % 0xE0
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ % 0xF0
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /divide % DIVISION SIGN (AGL, WGL4)
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ ] def
+
+ % eof
+ EOF
+}
+
+# Misc functions used by create_fd below
+
+create_fd_addfont() {
+
+ local fdfile="$1"
+ local texenc="$2"
+ local family="$3"
+ local fileenc="$4"
+ local texweight="$5"
+ local fileweight="$6"
+
+ echo >>$fdfile
+ info "Declaring $texenc/$family/$texweight/n"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{n} {<-> ${basefamily}${fileweight}${fileenc}}{}" >>$fdfile
+ info "Declaring $texenc/$family/$texweight/sc"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{sc}{<-> ${basefamily}${fileweight}c${fileenc}}{}" >>$fdfile
+ info "Declaring $texenc/$family/$texweight/sl"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{sl}{<-> ${basefamily}${fileweight}o${fileenc}}{}" >>$fdfile
+
+ if [ -f "${basefamily}${fileweight}i${rawenc_wgl}.ttf" ]; then
+ info "Declaring ${texenc}/$family/$texweight/it"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{it}{<-> ${basefamily}${fileweight}i${fileenc}}{}" >>$fdfile
+ else
+ info "Adding noisy substitution ${texenc}/$family/$texweight/it --> ${texenc}/$family/$texweight/sl"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{it}{<-> sub * ${family}/${texweight}/sl}{}" >>$fdfile
+ fi
+}
+
+create_fd_substitute_silent() {
+ trap error_internal ERR
+
+ local fdfile="$1"
+ local texenc="$2"
+ local family="$3"
+ local fileenc="$4"
+ local texweight="$5"
+ local substitute="$6"
+
+ echo >>$fdfile
+
+ info "Adding silent substitution ${texenc}/${family}/${texweight}/n --> ${texenc}/${family}/${substitute}/n"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{n} {<-> ssub * ${family}/${substitute}/n}{}" >>$fdfile
+ info "Adding silent substitution ${texenc}/${family}/${texweight}/sc --> ${texenc}/${family}/${substitute}/sc"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{sc}{<-> ssub * ${family}/${substitute}/sc}{}" >>$fdfile
+ info "Adding silent substitution ${texenc}/${family}/${texweight}/sl --> ${texenc}/${family}/${substitute}/sl"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{sl}{<-> ssub * ${family}/${substitute}/sl}{}" >>$fdfile
+ info "Adding silent substitution ${texenc}/${family}/${texweight}/it --> ${texenc}/${family}/${substitute}/it"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{it}{<-> ssub * ${family}/${substitute}/it}{}" >>$fdfile
+}
+
+create_fd_substitute_noisy() {
+ trap error_internal ERR
+
+ local fdfile="$1"
+ local texenc="$2"
+ local family="$3"
+ local fileenc="$4"
+ local texweight="$5"
+ local substitute="$6"
+
+ echo >>$fdfile
+
+ info "Adding noisy substitution ${texenc}/${family}/${texweight}/n --> ${texenc}/${family}/${substitute}/n"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{n} {<-> sub * ${family}/${substitute}/n}{}" >>$fdfile
+ info "Adding noisy substitution ${texenc}/${family}/${texweight}/sc --> ${texenc}/${family}/${substitute}/sc"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{sc}{<-> sub * ${family}/${substitute}/sc}{}" >>$fdfile
+ info "Adding noisy substitution ${texenc}/${family}/${texweight}/sl --> ${texenc}/${family}/${substitute}/sl"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{sl}{<-> sub * ${family}/${substitute}/sl}{}" >>$fdfile
+ info "Adding noisy substitution ${texenc}/${family}/${texweight}/it --> ${texenc}/${family}/${substitute}/it"
+ echo "\\DeclareFontShape{$texenc}{$family}{$texweight}{it}{<-> sub * ${family}/${substitute}/it}{}" >>$fdfile
+}
+
+# Create font declaration files
+
+create_fd() {
+ trap error_internal ERR
+
+ local fdfile="$1"
+ local texenc="$2"
+ local family="$3"
+ local fileenc="$4"
+
+ # headers
+
+ info "Creating $fdfile"
+
+ echo -n >$fdfile
+ echo -e "% ${fdfile}\n% Created by $fullname $version on $date" >>$fdfile
+ echo -e "% This file should be put in a tex inputs directory\n" >>$fdfile
+ echo "\\ProvidesFile{${fdfile}}[$texdate ${texenc}/${family} font definitions]" >>$fdfile
+ echo >>$fdfile
+ echo "\\DeclareFontFamily{$texenc}{$family}{$family_init}" >>$fdfile
+
+ # ultra light
+
+ if [ -f "${basefamily}a${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "ul" "a"
+ fi
+
+ # extra light
+
+ if [ -f "${basefamily}j${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "el" "j"
+ fi
+
+ # light
+
+ if [ -f "${basefamily}l${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "l" "l"
+ fi
+
+ # book
+
+ if [ -f "${basefamily}k${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "k" "k"
+ fi
+
+ # regular
+
+ if [ -f "${basefamily}r${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "m" "r"
+ else
+ if [ "$mffallback" = "k" ]; then
+ create_fd_substitute_silent "$fdfile" "$texenc" "$family" "$fileenc" "m" "$mffallback"
+ else
+ create_fd_substitute_noisy "$fdfile" "$texenc" "$family" "$fileenc" "m" "$mffallback"
+ fi
+ fi
+
+ # medium
+
+ if [ -f "${basefamily}m${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "mb" "m"
+ fi
+
+ # demibold
+
+ if [ -f "${basefamily}d${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "db" "d"
+ fi
+
+ # semibold
+
+ if [ -f "${basefamily}s${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "sb" "s"
+ fi
+
+ # bold
+
+ if [ -f "${basefamily}b${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "b" "b"
+ else
+ if [ "$bffallback" = "mb" -o "$bffallback" = "sb" -o "$bffallback" = "db" ]; then
+ create_fd_substitute_silent "$fdfile" "$texenc" "$family" "$fileenc" "b" "$bffallback"
+ else
+ create_fd_substitute_noisy "$fdfile" "$texenc" "$family" "$fileenc" "b" "$bffallback"
+ fi
+ fi
+
+ # extra bold
+
+ if [ -f "${basefamily}x${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "eb" "x"
+ fi
+
+ # heavy
+
+ if [ -f "${basefamily}h${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "hb" "h"
+ if [ "$ebdefault" = "hb" ]; then
+ create_fd_substitute_silent "$fdfile" "$texenc" "$family" "$fileenc" "eb" "hb"
+ fi
+ fi
+
+ # black
+
+ if [ -f "${basefamily}c${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "cb" "c"
+ if [ "$ebdefault" = "cb" ]; then
+ create_fd_substitute_silent "$fdfile" "$texenc" "$family" "$fileenc" "eb" "cb"
+ fi
+ fi
+
+ # ultra bold
+
+ if [ -f "${basefamily}u${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "ub" "u"
+ fi
+
+ # poster
+
+ if [ -f "${basefamily}p${rawenc_wgl}.ttf" ]; then
+ create_fd_addfont "$fdfile" "$texenc" "$family" "$fileenc" "pb" "p"
+ if [ "$ubdefault" = "pb" ]; then
+ create_fd_substitute_silent "$fdfile" "$texenc" "$family" "$fileenc" "ub" "pb"
+ fi
+ fi
+
+ # bold extended
+
+ if [ "$bfdefault" = "mb" -o "$bfdefault" = "sb"\
+ -o "$bfdefault" = "db" -o "$bfdefault" = "b" ]
+ then
+ create_fd_substitute_silent "$fdfile" "$texenc" "$family" "$fileenc" "bx" "$bfdefault"
+ else
+ create_fd_substitute_noisy "$fdfile" "$texenc" "$family" "$fileenc" "bx" "$bfdefault"
+ fi
+
+ # end input
+
+ echo >>$fdfile
+ echo "\\endinput" >>$fdfile
+ echo >>$fdfile
+}
+
+# Tag map files
+
+create_map_begin() {
+ local family="$1"
+ echo "% [BEG $family] -- Created by $fullname $version on $date" >>$file_map_ttf2pk
+ echo "% [BEG $family] -- Created by $fullname $version on $date" >>$pdftexmap
+}
+
+create_map_end() {
+ local family="$1"
+ echo "% [END $family] -- Created by $fullname $version on $date" >>$file_map_ttf2pk
+ echo "% [END $family] -- Created by $fullname $version on $date" >>$pdftexmap
+}
+
+# Pretty printing for map files
+
+create_map_fill() {
+ trap error_internal ERR
+
+ local strg="$2"
+ if [ ${#strg} -lt $1 ]; then
+ local cnt=${#strg}
+ while [ $cnt -lt $1 ]; do
+ local strg="$strg "
+ local cnt=$(($cnt + 1))
+ done
+ else
+ local strg="$strg "
+ fi
+ echo -n "$strg"
+}
+
+# Warning: slanting not supported by pdftex
+
+create_map_warning() {
+ trap error_internal ERR
+
+ cat <<-EOF >>$pdftexmap
+ % Note: When this version of $fullname was released, pdfTeX did not support slanting of
+ % TrueType fonts. The relevant lines below are therefore commented out. See the
+ % ttf2tex manual and the pdfTeX documentation for details.
+ EOF
+}
+
+# Create afm files
+
+create_afm() {
+ trap error_internal ERR
+
+ for series in $fontseries; do
+ for font in "${basefamily}${series}${rawenc_wgl}.ttf" "${basefamily}${series}i${rawenc_wgl}.ttf"; do
+ if [ -e $font ]; then
+ base="${font%${rawenc_wgl}.ttf}"
+ info "Running ttf2afm on $font"
+ ttf2afm -a -o ${base}${rawenc_wgl}.afm ./$font 2>ttf2afm.log
+ while read output; do info_external "ttf2afm" "$output"; done <ttf2afm.log
+ fi
+ done
+ done
+}
+
+# Create metrics and map files (upright)
+
+create_tfm_upright() {
+ trap error_internal ERR
+
+ local flags="$1"
+ local vector="$2"
+ local enc="$3"
+ local rawenc="$4"
+
+ for series in $fontseries; do
+ font="${basefamily}${series}${rawenc_wgl}.ttf"
+ if [ -e $font ]; then
+ base="${font%${rawenc_wgl}.ttf}"
+
+ info "Running ttf2tfm on $font [vector: ${vector}]"
+ ttf2tfm ./$font $flags -T $vector -v ${base}${enc}.vpl ${base}${rawenc}.tfm 2>ttf2tfm.log | while read texfontname ttfontname encoding; do
+ create_map_fill 16 "$texfontname" >>$file_map_ttf2pk
+ create_map_fill 24 "$ttfontname" >>$file_map_ttf2pk
+ echo "$encoding" >>$file_map_ttf2pk
+ done
+ while read output; do info_external "ttf2tfm" "$output"; done <ttf2tfm.log
+
+ psname="$(grep "^FontName " ${base}${rawenc_wgl}.afm | cut -d ' ' -f 2-)"
+
+ info "Adding $font to $pdftexmap [vector: ${vector}]"
+ create_map_fill 16 "${base}${rawenc}" >>$pdftexmap
+ create_map_fill 56 "$psname" >>$pdftexmap
+ echo "<$vector <$font" >>$pdftexmap
+
+ fi
+ done
+}
+
+# Create metrics and map files (italic)
+
+create_tfm_italic() {
+ trap error_internal ERR
+
+ local flags="$1"
+ local vector="$2"
+ local enc="$3"
+ local rawenc="$4"
+
+ for series in $fontseries; do
+ font="${basefamily}${series}i${rawenc_wgl}.ttf"
+ if [ -e $font ]; then
+ base="${font%${rawenc_wgl}.ttf}"
+
+ info "Running ttf2tfm on $font [vector: ${vector}]"
+ ttf2tfm ./$font $flags -T $vector -v ${base}${enc}.vpl ${base}${rawenc}.tfm 2>ttf2tfm.log | while read texfontname ttfontname encoding; do
+ create_map_fill 16 "$texfontname" >>$file_map_ttf2pk
+ create_map_fill 24 "$ttfontname" >>$file_map_ttf2pk
+ echo "$encoding" >>$file_map_ttf2pk
+ done
+ while read output; do info_external "ttf2tfm" "$output"; done <ttf2tfm.log
+
+ psname="$(grep "^FontName " ${base}${rawenc_wgl}.afm | cut -d ' ' -f 2-)"
+
+ info "Adding $font to $pdftexmap [vector: ${vector}]"
+ create_map_fill 16 "${base}${rawenc}" >>$pdftexmap
+ create_map_fill 56 "$psname" >>$pdftexmap
+ echo "<$vector <$font" >>$pdftexmap
+
+ fi
+ done
+}
+
+# Create metrics and map files (real small caps)
+
+create_tfm_smallcaps_real() {
+ trap error_internal ERR
+
+ local flags="$1"
+ local vector="$2"
+ local enc="$3"
+ local rawenc="$4"
+
+ for series in $fontseries; do
+ font="${basefamily}${series}${rawenc_wgl}.ttf"
+ if [ -e $font ]; then
+ base="${font%${rawenc_wgl}.ttf}"
+
+ info "Running ttf2tfm on $font [vector: ${vector}]"
+ ttf2tfm ./$font $flags -T $vector -v ${base}c${enc}.vpl ${base}c${rawenc}.tfm 2>ttf2tfm.log | while read texfontname ttfontname encoding; do
+ create_map_fill 16 "$texfontname" >>$file_map_ttf2pk
+ create_map_fill 24 "$ttfontname" >>$file_map_ttf2pk
+ echo "$encoding" >>$file_map_ttf2pk
+ done
+ while read output; do info_external "ttf2tfm" "$output"; done <ttf2tfm.log
+
+ psname="$(grep '^FontName' ${base}${rawenc_wgl}.afm | cut -d ' ' -f 2-)"
+
+ info "Adding $font to $pdftexmap [vector: ${vector}]"
+ create_map_fill 16 "${base}c${rawenc}" >>$pdftexmap
+ create_map_fill 56 "$psname" >>$pdftexmap
+ echo "<$vector <$font" >>$pdftexmap
+
+ fi
+ done
+}
+
+# Create metrics and map files (faked small caps)
+
+create_tfm_smallcaps_fake() {
+ trap error_internal ERR
+
+ local flags="$1"
+ local vector="$2"
+ local enc="$3"
+ local rawenc="$4"
+
+ for series in $fontseries; do
+ font="${basefamily}${series}${rawenc_wgl}.ttf"
+ if [ -e $font ]; then
+ base="${font%${rawenc_wgl}.ttf}"
+
+ info "Running ttf2tfm on $font [vector: ${vector}] [small caps height: $capsheight]"
+ ttf2tfm ./$font $flags -T $vector -c $capsheight -V ${base}c${enc}.vpl ${base}${rawenc}.tfm >/dev/null 2>ttf2tfm.log
+ while read output; do info_external "ttf2tfm" "$output"; done <ttf2tfm.log
+
+ fi
+ done
+}
+
+# Create metrics and map files (slanted)
+
+create_tfm_slanted() {
+ trap error_internal ERR
+
+ local flags="$1"
+ local vector="$2"
+ local enc="$3"
+ local rawenc="$4"
+
+ for series in $fontseries; do
+ font="${basefamily}${series}${rawenc_wgl}.ttf"
+ if [ -e $font ]; then
+ base="${font%${rawenc_wgl}.ttf}"
+
+ info "Running ttf2tfm on $font [vector: ${vector}] [slant factor: $slantfactor]"
+ ttf2tfm ./$font $flags -T $vector -s $slantfactor -v ${base}o${enc}.vpl ${base}o${rawenc}.tfm 2>ttf2tfm.log | while read texfontname ttfontname encoding; do
+ create_map_fill 16 "$texfontname" >>$file_map_ttf2pk
+ create_map_fill 24 "$ttfontname" >>$file_map_ttf2pk
+ echo "$encoding" >>$file_map_ttf2pk
+ done
+ while read output; do info_external "ttf2tfm" "$output"; done <ttf2tfm.log
+
+ psname="$(grep '^FontName' ${base}${rawenc_wgl}.afm | cut -d ' ' -f 2-)"
+
+ # slanting not supported by pdftex
+
+ info "Adding $font to $pdftexmap [vector: ${vector}] [slant factor: $slantfactor] *disabled*"
+ create_map_fill 16 "% ${base}o${rawenc}" >>$pdftexmap
+ create_map_fill 32 "$psname" >>$pdftexmap
+ create_map_fill 24 "\"$slantfactor SlantFont\"" >>$pdftexmap
+ echo "<$vector <$font" >>$pdftexmap
+
+ fi
+ done
+}
+
+# Create virtual fonts
+
+create_vf() {
+ trap error_internal ERR
+
+ for font in *.vpl; do
+ base=$(basename $font .vpl)
+ info "Running vptovf on $font"
+ vptovf ./$font ${base}.vf ${base}.tfm | while read output; do info_external "vptovf" "$output"; done
+ done
+}
+
+# Copy/move files safely, used by install_files below
+
+install_files_copy() {
+ trap error_internal ERR
+
+ if [ -e "$2/$1" ]; then
+ if [ $overwrite = 1 ]; then
+ info "Overwriting $1"
+ cp $1 $2
+ chmod 0644 "$2/$1"
+ else
+ info "File $2/$1 exists"
+ info "Skipping $1"
+ fi
+ else
+ info "Installing $1"
+ cp $1 $2
+ chmod 0644 "$2/$1"
+ fi
+}
+
+install_files_move() {
+ trap error_internal ERR
+
+ if [ -e "$2/$1" ]; then
+ if [ $overwrite = 1 ]; then
+ info "Overwriting $1"
+ mv $1 $2
+ chmod 0644 "$2/$1"
+ else
+ info "File $2/$1 exists"
+ info "Skipping $1"
+ fi
+ else
+ info "Installing $1"
+ mv $1 $2
+ chmod 0644 "$2/$1"
+ fi
+}
+
+# Sort files in working directory
+
+sort_files() {
+ trap error_internal ERR
+
+ for dir in $path_afm $path_tfm $path_ttf $path_vf $path_fd; do
+ mkdir -m 0755 -p ${dir}/${foundry}/${fontname}
+ done
+ for dir in $path_map_ttf2pk $path_enc_ttf2pk $path_map_pdftex $path_enc_pdftex; do
+ mkdir -m 0755 -p $dir
+ done
+ for file in ${basefamily}*.afm; do
+ info "Moving $file"
+ mv $file ${path_afm}/${foundry}/${fontname}
+ done
+ for file in ${basefamily}*.tfm; do
+ info "Moving $file"
+ mv $file ${path_tfm}/${foundry}/${fontname}
+ done
+ for file in ${basefamily}*.ttf; do
+ info "Copying $file"
+ cp $file ${path_ttf}/${foundry}/${fontname}
+ done
+ for file in ${basefamily}*.vf; do
+ info "Moving $file"
+ mv $file ${path_vf}/${foundry}/${fontname}
+ done
+ for file in *${basefamily}*.fd; do
+ info "Moving $file"
+ mv $file ${path_fd}/${foundry}/${fontname}
+ done
+ for file in *.enc; do
+ info "Copying $file"
+ cp $file ${path_enc_ttf2pk}
+ cp $file ${path_enc_pdftex}
+ done
+ info "Moving $pdftexmap"
+ mv $pdftexmap ${path_map_pdftex}/${pdftexmap}
+ info "Updating $file_map_ttf2pk"
+ cat $file_map_ttf2pk >>${path_map_ttf2pk}/${file_map_ttf2pk}
+}
+
+# Install files into tex tree
+
+install_files() {
+ trap error_internal ERR
+
+ for dir in $path_afm $path_tfm $path_ttf $path_vf $path_fd; do
+ mkdir -m 0755 -p ${texmfinstall}/${dir}/${foundry}/${fontname}
+ done
+ for dir in $path_map_ttf2pk $path_enc_ttf2pk $path_map_pdftex $path_enc_pdftex; do
+ mkdir -m 0755 -p ${texmfinstall}/${dir}
+ done
+ for file in ${basefamily}*.afm; do
+ install_files_move $file "${texmfinstall}/${path_afm}/${foundry}/${fontname}"
+ done
+ for file in ${basefamily}*.tfm; do
+ install_files_move $file "${texmfinstall}/${path_tfm}/${foundry}/${fontname}"
+ done
+ for file in ${basefamily}*.ttf; do
+ install_files_copy $file "${texmfinstall}/${path_ttf}/${foundry}/${fontname}"
+ done
+ for file in ${basefamily}*.vf; do
+ install_files_move $file "${texmfinstall}/${path_vf}/${foundry}/${fontname}"
+ done
+ for file in *${basefamily}*.fd; do
+ install_files_move $file "${texmfinstall}/${path_fd}/${foundry}/${fontname}"
+ done
+ for file in *.enc; do
+ install_files_copy $file "${texmfinstall}/${path_enc_ttf2pk}"
+ install_files_copy $file "${texmfinstall}/${path_enc_pdftex}"
+ done
+ cat $file_map_ttf2pk >>${texmfinstall}/${path_map_ttf2pk}/${file_map_ttf2pk}
+ install_files_move $pdftexmap ${texmfinstall}/${path_map_pdftex}
+
+ # update file database
+
+ info "Running mktexlsr to update file database"
+ mktexlsr $texmfinstall >mktexlsr.log 2>&1
+ while read output; do info_external "mktexlsr" "$output"; done <mktexlsr.log
+}
+
+# Trap internal errors
+
+trap error_internal ERR
+
+# Read config file
+
+for confpath in $confpath; do
+ if [ -f "${confpath}${fullname}.cfg" ]; then
+ conffile="${confpath}${fullname}.cfg"
+ break
+ fi
+done
+
+if [ -n "${conffile}" ]; then
+ source "${conffile}"
+else
+ error "Failed to find configuration file ${fullname}.cfg!"
+fi
+
+# Set defaults
+
+path_afm="${path_afm:-fonts/afm}"
+path_tfm="${path_tfm:-fonts/tfm}"
+path_vf="${path_vf:-fonts/vf}"
+path_ttf="${path_ttf:-fonts/truetype}"
+path_fd="${path_fd:-tex/latex/ttfonts}"
+path_map_pdftex="${path_map_pdftex:-pdftex/config}"
+path_enc_pdftex="${path_enc_pdftex:-pdftex/config}"
+path_map_ttf2pk="${path_map_ttf2pk:-ttf2pk}"
+path_enc_ttf2pk="${path_enc_ttf2pk:-ttf2pk}"
+file_map_ttf2pk="${file_map_ttf2pk:-ttfonts.map}"
+
+slantfactor="0.167"
+capsheight="0.800"
+confirm=1
+inst=0
+user=0
+expert=0
+overwrite=0
+flags_common="-q"
+texenc_t1="8t"
+texenc_ts1="8c"
+texenc_t1x="9e"
+texenc_ts1x="9c"
+texenc_t1j="9d"
+rawenc_wgl="16"
+rawenc_t1="16t"
+rawenc_ts1="16c"
+rawenc_t1x="17e"
+rawenc_ts1x="17c"
+rawenc_t1j="17d"
+
+# Parse command line
+
+if [ $# -lt 1 ]; then error_usage; fi
+
+while [ -n "$1" ]; do
+ case $1 in
+ --dump-vectors)
+ dump_vectors
+ exit 0
+ ;;
+ -h|--help) usage
+ exit 0
+ ;;
+ -b|--batch) confirm=0
+ shift
+ ;;
+ -l|--log) transcript=1
+ shift
+ ;;
+ -i|--install)
+ inst=1
+ shift
+ ;;
+ -u|--user) user=1
+ inst=1
+ shift
+ ;;
+ -t|--typewriter)
+ family_init="\\hyphenchar\\font=-1"
+ shift
+ ;;
+ -x|--expert)
+ expert=1
+ shift
+ ;;
+ -n|--ps-names)
+ flags_psnames="-n"
+ shift
+ ;;
+ -N|--ps-names-only)
+ flags_psnames="-N"
+ shift
+ ;;
+ --overwrite)
+ overwrite=1
+ shift
+ ;;
+ -f|--foundry)
+ if [ -z "$2" -o -z "${2%%-*}" ]; then error_usage; fi
+ foundry="${2// /}"
+ shift
+ shift
+ ;;
+ -o|--font) if [ -z "$2" -o -z "${2%%-*}" ]; then error_usage; fi
+ fontname="${2// /}"
+ shift
+ shift
+ ;;
+ -c|--caps) if [ -z "$2" -o -z "${2%%-*}" ]; then error_usage; fi
+ capsheight="$2"
+ shift
+ shift
+ ;;
+ -s|--slant) if [ -z "$2" -o -z "${2%%-*}" ]; then error_usage; fi
+ slantfactor="$2"
+ shift
+ shift
+ ;;
+ -*) error_usage
+ ;;
+ [A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]*)
+ basefamily="$1"
+ shift
+ ;;
+ *) error_usage
+ ;;
+ esac
+done
+
+[ -n "$basefamily" -a -n "$foundry" -a -n "$fontname" ] || error_usage
+pdftexmap="${basefamily}.map"
+
+if [ $inst = 1 ]; then
+ if [ $user = 1 ]; then
+ texmfinstall="$(kpsexpand '$HOMETEXMF')"
+ else
+ texmfinstall="$(kpsexpand '$TEXMFLOCAL')"
+ fi
+ [ -n "$texmfinstall" ] || error "Failed to get \$TEXMFLOCAL from kpathsea!"
+ [ -d "$texmfinstall" ] || error "Directory $texmfinstall does not exist!"
+ [ -w "$texmfinstall" ] || error "Directory $texmfinstall is not writeable!"
+ if [ $overwrite = 1 ]; then
+ echo
+ info "Running in overwrite mode!"
+ echo
+ fi
+fi
+
+# Traps, umask
+
+trap clean EXIT
+trap "error 'Received SIGINT!'" SIGINT
+umask 022
+
+# Let's go
+
+if [ $transcript = 1 ]; then
+ echo -e "\nTranscript of $fullname session on $date\n" >$logfile
+fi
+
+check_requirements
+info_paths
+prompt_confirm
+check_available
+
+info_map_available "$basefamily"
+
+if [ $expert = 1 ]; then
+ info_map_available "${basefamily}x"
+ info_map_available "${basefamily}j"
+fi
+
+prompt_confirm
+dump_vectors
+create_afm
+create_map_begin "$basefamily"
+
+if [ $expert = 1 ]; then
+ # standard
+ create_tfm_upright "$flags_common $flags_psnames" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ create_tfm_upright "$flags_common $flags_psnames" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_tfm_italic "$flags_common $flags_psnames" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ create_tfm_italic "$flags_common $flags_psnames" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_tfm_smallcaps_real "$flags_common -N" "T1-SC.enc" "$texenc_t1" "$rawenc_t1"
+ create_tfm_smallcaps_real "$flags_common -N" "TS1-SC.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_map_warning
+ create_tfm_slanted "$flags_common $flags_psnames" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ create_tfm_slanted "$flags_common $flags_psnames" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ # expert
+ create_tfm_upright "$flags_common -N" "T1-WGL4.enc" "$texenc_t1x" "$rawenc_t1x"
+ create_tfm_upright "$flags_common -N" "TS1-AGL.enc" "$texenc_ts1x" "$rawenc_ts1x"
+
+ create_tfm_italic "$flags_common -N" "T1-WGL4.enc" "$texenc_t1x" "$rawenc_t1x"
+ create_tfm_italic "$flags_common -N" "TS1-AGL.enc" "$texenc_ts1x" "$rawenc_ts1x"
+
+ create_tfm_smallcaps_real "$flags_common -N" "T1-SC.enc" "$texenc_t1x" "$rawenc_t1x"
+ create_tfm_smallcaps_real "$flags_common -N" "TS1-SC.enc" "$texenc_ts1x" "$rawenc_ts1x"
+
+ create_map_warning
+ create_tfm_slanted "$flags_common -N" "T1-WGL4.enc" "$texenc_t1x" "$rawenc_t1x"
+ create_tfm_slanted "$flags_common -N" "TS1-AGL.enc" "$texenc_ts1x" "$rawenc_ts1x"
+
+ # osf
+ create_tfm_upright "$flags_common -N" "T1-OSF.enc" "$texenc_t1j" "$rawenc_t1j"
+ create_tfm_italic "$flags_common -N" "T1-OSF.enc" "$texenc_t1j" "$rawenc_t1j"
+ create_tfm_smallcaps_real "$flags_common -N" "T1-SCOSF.enc" "$texenc_t1j" "$rawenc_t1j"
+
+ create_map_warning
+ create_tfm_slanted "$flags_common -N" "T1-OSF.enc" "$texenc_t1j" "$rawenc_t1j"
+
+elif [ $expert = 0 -a -n "$flags_psnames" ]; then
+ create_tfm_upright "$flags_common $flags_psnames" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ create_tfm_upright "$flags_common $flags_psnames" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_tfm_italic "$flags_common $flags_psnames" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ create_tfm_italic "$flags_common $flags_psnames" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_tfm_smallcaps_fake "$flags_common $flags_psnames" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ create_tfm_smallcaps_fake "$flags_common $flags_psnames" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_map_warning
+ create_tfm_slanted "$flags_common $flags_psnames" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ create_tfm_slanted "$flags_common $flags_psnames" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+else
+ create_tfm_upright "$flags_common" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ # Hack required to get the euro currency symbol into TS1 (for ttf2pk)
+ create_tfm_upright "$flags_common -r .c0x20AC Euro" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_tfm_italic "$flags_common" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ # Hack required to get the euro currency symbol into TS1 (for ttf2pk)
+ create_tfm_italic "$flags_common -r .c0x20AC Euro" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_tfm_smallcaps_fake "$flags_common" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ # Hack required to get the euro currency symbol into TS1 (for ttf2pk)
+ create_tfm_smallcaps_fake "$flags_common -r .c0x20AC Euro" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+
+ create_map_warning
+ create_tfm_slanted "$flags_common" "T1-WGL4.enc" "$texenc_t1" "$rawenc_t1"
+ # Hack required to get the euro currency symbol into TS1 (for ttf2pk)
+ create_tfm_slanted "$flags_common -r .c0x20AC Euro" "TS1-AGL.enc" "$texenc_ts1" "$rawenc_ts1"
+fi
+
+create_map_end "$basefamily"
+create_vf
+
+create_fd "t1${basefamily}.fd" "T1" "$basefamily" "$texenc_t1"
+create_fd "ts1${basefamily}.fd" "TS1" "$basefamily" "$texenc_ts1"
+
+if [ $expert = 1 ]; then
+ create_fd "t1${basefamily}x.fd" "T1" "${basefamily}x" "$texenc_t1x"
+ create_fd "ts1${basefamily}x.fd" "TS1" "${basefamily}x" "$texenc_ts1x"
+
+ create_fd "t1${basefamily}j.fd" "T1" "${basefamily}j" "$texenc_t1j"
+ create_fd "ts1${basefamily}j.fd" "TS1" "${basefamily}j" "$texenc_ts1x"
+fi
+
+if [ $inst = 1 ]; then
+ install_files
+else
+ sort_files
+fi
+
+info "Finished"
+
+# EOF
diff --git a/obsolete/support/ttf2tex/ttf2tex.tex b/obsolete/support/ttf2tex/ttf2tex.tex
new file mode 100644
index 0000000000..41a7a35adf
--- /dev/null
+++ b/obsolete/support/ttf2tex/ttf2tex.tex
@@ -0,0 +1,519 @@
+% $Id: ttf2tex.tex,v 0.70 2004/09/30 00:00:00 lehman pub $
+
+\documentclass[a4paper]{ltxdoc}
+\usepackage[latin9]{inputenc}
+\usepackage[TS1,T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{tabularx}
+\usepackage{longtable}
+\usepackage{booktabs}
+\usepackage{verbatim}
+\usepackage[today]{rcsinfo}
+\usepackage{hyperref}
+\usepackage{xspace}
+
+\rcsInfo $Id: ttf2tex.tex,v 0.70 2004/09/30 00:00:00 lehman pub $
+\setcounter{tocdepth}{1}
+
+%% Tables
+
+\newcolumntype{H}{>{\rmfamily}l}
+\newcolumntype{P}{p{75pt}}
+\newcolumntype{V}{>{\ttfamily}P}
+
+%% Environments
+
+\makeatletter
+
+\begingroup
+ \catcode`\<=\active
+ \catcode`\>=\active
+ \gdef<{\ensuremath\langle\textit\bgroup}
+ \gdef>{\egroup\ensuremath\rangle}
+\endgroup
+
+\newenvironment{cmdline}%
+ {\catcode`\<=\active
+ \catcode`\>=\active
+ \def\verbatim@nolig@list{\do\`\do\,\do\'\do\-}%
+ \verbatim}
+ {\endverbatim}
+
+\newenvironment{options}
+ {\catcode`\<=\active
+ \catcode`\>=\active
+ \def\verbatim@nolig@list{\do\`\do\,\do\'\do\-}%
+ \longtable{@{}>{\@noligs\ttfamily}p{0.35\textwidth}@{}p{0.65\textwidth}@{}}}%
+ {\endlongtable}
+
+\makeatother
+
+%% Markup
+
+\makeatletter
+
+\DeclareRobustCommand*{\fnurl}{\hyper@normalise\href@fnurl}
+\newcommand*{\href@fnurl}[1]{\footnote{\hyper@linkurl{\Hurl{#1}}{#1}}}
+
+\DeclareRobustCommand*{\email}{\hyper@normalise\href@email}
+\newcommand*{\href@email}[1]{\href{mailto:#1}{{\texttt{#1}}}}
+
+\newcommand*{\ltxcmd}[1]{\texttt{\textbackslash #1}}
+\newcommand*{\ltxpkg}[1]{\texttt{#1}}
+\newcommand*{\shenv}[1]{\texttt{\$#1}}
+\newcommand*{\shellopt}{\bgroup\@noligs\ttfamily\shell@pt}
+\def\shell@pt#1{#1\egroup}
+\newcommand*{\shellarg}{\bgroup\@noligs\itshape\shell@rg}
+\def\shell@rg#1{\ensuremath\langle#1\ensuremath\rangle\egroup}
+\newcommand*{\acr}[1]{\textsc{\MakeLowercase{#1}}}
+
+\makeatother
+
+%% Names, acronyms
+
+\newcommand*{\PS}{Post\-Script\xspace}
+\newcommand*{\TT}{True\-Type\xspace}
+\newcommand*{\OT}{Open\-Type\xspace}
+\newcommand*{\tex}{TeX\xspace}
+\newcommand*{\latex}{La\kern-0.07em TeX\xspace}
+\newcommand*{\pdftex}{pdfTeX\xspace}
+\newcommand*{\tetex}{te\kern-0.07em TeX\xspace}
+\newcommand*{\miktex}{MikTeX\xspace}
+\newcommand*{\metafont}{Metafont\xspace}
+\newcommand*{\xdvi}{\texttt{xdvi}\xspace}
+\newcommand*{\dvips}{\texttt{dvips}\xspace}
+\newcommand*{\ttftotex}{\texttt{ttf2tex}\xspace}
+\newcommand*{\ttftopk}{\texttt{ttf2pk}\xspace}
+\newcommand*{\ttftotfm}{\texttt{ttf2tfm}\xspace}
+\newcommand*{\vptovf}{\texttt{vptovf}\xspace}
+\newcommand*{\ttftoafm}{\texttt{ttf2afm}\xspace}
+\newcommand*{\kpathsea}{\texttt{kpathsea}\xspace}
+
+%% Miscellanea
+
+\hyphenation{Free-Type}
+
+\renewcommand*{\abstractname}{End-of-Life Announcement}%
+\title{\ttftotex\\A \TT Font Installer for Unix}
+\author{Version \rcsInfoRevision}
+\date{\today}
+\frenchspacing
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+\noindent As of September 30, 2004, \ttftotex is no longer maintained or in any way supported by its original author. Active development of the script has in fact already stopped in September 2002. Be advised that, even though \ttftotex may still work, there is no support in case of a problem and there will be no further updates.
+\end{abstract}
+
+\tableofcontents
+
+\section{Introduction}
+
+\ttftotex is a script for the Bash shell which generates all files required to use \TT fonts with \tetex from a set of font files. In short, it will do for \TT fonts what fontinst's \ltxcmd{latinfamily} command does for Type~1 \PS fonts. In addition to that, \ttftotex sorts all files, builds the map files required by \ttftopk and \pdftex, and optionally installs everything into either the system-wide local \tex tree or the private \tex tree of the user running \ttftotex. Note that \ttftotex's approach to using \TT fonts with \tex does \emph{not} imply converting them to Type~1 format. With a current version of \tetex and a proper setup, \tex can use \TT fonts via the \ttftopk utility while \pdftex even supports them natively.
+
+\tex itself is actually completely indifferent to the font format since it will merely use the font metrics without accessing the glyph outlines. \ttftopk comes into play when processing the \acr{DVI} file with utilities that do not support \TT fonts natively, such as \dvips or \acr{DVI} readers like \xdvi. \ttftopk will then render the glyphs and provide the result in \acr{PK} font format. \pdftex, on the other hand, has to access the fonts directly when embedding them in a \acr{PDF} file. Fortunately it offers native \TT font support and \ttftotex will supply it with a map file. Please see section \ref{sec:limitations:general} for a discussion of the limitations of this approach.
+
+\section{License}
+
+\ttftotex is copyright \textcopyright\ 2000--2002, 2004 Philipp Lehman. This program is free software; you can redistribute it and\slash or modify it under the terms of the \acr{GNU} General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but \emph{without any warranty}; without even the implied warranty of \emph{merchantability} or \emph{fitness for a particular purpose}. See the \acr{GNU} General Public License for more details.
+
+You should have received a copy of the \acr{GNU} General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, \acr{USA}.
+
+\section{Requirements}\label{sec:requirements}
+
+First of all, you need the Bash shell to run \ttftotex. Ash or plain sh will not work since \ttftotex uses Bash-specific extensions. \ttftotex depends on the utilities \vptovf, \ttftoafm, and \ttftotfm. Both \vptovf and \ttftoafm ship with \tetex and should be available on your system. \ttftotfm is part of the tools that come with an excellent \TT rendering engine called FreeType. You need version 1.3.x or 1.4 of FreeType. 2.x versions will not work because \ttftotfm and \ttftopk have not been ported to FreeType 2 yet. Your Linux distributor or Unix vendor probably provides precompiled FreeType packages. Please consult the canonical sources for your distribution. I'm quite sure that at least all major Linux distributions come with FreeType packages.
+
+Note that you need both the core library and the contributed binaries which might be distributed separately, so make sure you look for names like `freetype' as well as `freetype-contrib' or `freetype-tools'. If your distributor or vendor does not provide FreeType packages you can download\fnurl{http://www.freetype.org/download.html} the source code. You need either the package freetype-1.3.1\fnurl{ftp://ftp.freetype.org/freetype/freetype1/freetype-1.3.1.tar.gz} from the stable branch or the two packages freetype-current\fnurl{ftp://ftp.freetype.org/freetype/unstable/freetype-current.tar.gz} and freetype1-contrib-current\fnurl{ftp://ftp.freetype.org/freetype/unstable/freetype1-contrib-current.tar.gz} from the unstable branch. Note that you have to install the FreeType tools anyway, since you need \ttftopk in order to actually use \TT fonts with \tex and \latex, even though \ttftotex doesn't depend on \ttftopk directly.
+
+There are a few more things you need to do before running \ttftotex for the first time. If you haven't already done so, set up a local \tex tree \shenv{TEXMFLOCAL} and a user \tex tree \shenv{HOMETEXMF} in the global configuration file for \kpathsea, \path{texmf.cnf}. Then run:
+
+\begin{verbatim}
+kpsexpand \$TEXMFLOCAL
+kpsexpand \$HOMETEXMF
+kpsexpand \$TEXMF
+\end{verbatim}
+%
+to verify that these trees are set up properly and included in \shenv{TEXMF}. Also make sure that \shenv{TTFONTS} is set in \path{texmf.cnf}. To verify that, run: \verb|kpsexpand \$TTFONTS|. As to the FreeType tools, make sure that \ttftopk and \ttftotfm were built with \kpathsea support. You can verify that by running them with the \shellopt{--version} option:
+
+\begin{verbatim}
+ttf2pk --version
+ttf2tfm --version
+\end{verbatim}
+%
+The output should include the \kpathsea version used:
+
+\begin{verbatim}
+ttf2pk version 1.4 (kpathsea version 3.3.7)
+ttf2tfm version 1.4 (kpathsea version 3.3.7)
+\end{verbatim}
+%
+If it does not, try to find binaries with kpathsea support or build the FreeType tools from source. You might also need to set \shenv{TTF2PKINPUTS} in \path{texmf.cnf} to enable \ttftopk to locate its map file, \path{ttfonts.map}. To find out if doing so is necessary, run: \verb|ttf2pk -t test|. \ttftopk should then print the following error message:
+
+\begin{verbatim}
+ttf2pk: ERROR: Cannot find font test in ttfonts.map.
+\end{verbatim}
+%
+This error message implies that \ttftopk managed to locate its map file. The actual error does not matter at this point since we merely want to make sure that \ttftopk is able to find \path{ttfonts.map}. \ttftopk might also exit with the following error message:
+
+\begin{verbatim}
+ttf2pk: ERROR: Cannot open file ttfonts.map.
+\end{verbatim}
+%
+This means that \ttftopk did not find its map file at all. In this case you should locate the file \path{ttfonts.map} on your system and define \shenv{TTF2PKINPUTS} in \path{texmf.cnf}. Refer to the documentation of the FreeType tools for details. Note that the file searching mechanism of both \ttftopk and \ttftotfm is explained in the manual page of \ttftotfm. For most systems, the following settings should be fine:
+
+\begin{verbatim}
+TTF2PKINPUTS = .;$TEXMF/ttf2pk//
+TTF2TFMINPUTS = .;$TEXMF/ttf2tfm//
+\end{verbatim}
+%
+After that, open the configuration file \path{ttf2tex.cfg} in a text editor and verify that all the paths and file names correspond to your installation. Read the comments given in the file for details. Make sure that there will be exactly one map file for \ttftopk on your system since, unlike \dvips or \pdftex, \ttftopk only supports a single map file called \path{ttfonts.map}. The location of the map file created or updated by \ttftotex is given in the script, make sure that it points to \path{ttfonts.map} if this file already exists. Create symbolic links to resolve any ambiguities if necessary. It is safe to have \ttftotex use an existing map file or a symbolic link pointing to it since it will only append data to the file. \ttftotex will not overwrite it.
+
+\section{Synopsis}\label{sec:synopsis}
+
+\begin{cmdline}
+ttf2tex.sh [options] --install --foundry <foundry> --font <font> <family>
+\end{cmdline}
+%
+The \shellopt{--install} or \shellopt{-i} option will create all files, install them, and append all mapping information to your map files using the system-wide local \tex tree. You may use the options in any arbitrary order and mix their long and short forms, but they cannot be concatenated. Options and arguments are as follows:
+Mandatory. Use the string \shellarg{foundry} when creating subdirectories. The type foundry is the company which created the font, for example `monotype'. The string \shellarg{foundry} must not contain any spaces.
+
+\begin{options}
+--foundry <foundry>\newline -f <foundry> &
+Mandatory. Use the string <foundry> when creating subdirectories. The type foundry is the company which created the font, for example `monotype'. This string must not contain any spaces.\\
+
+--font <font>\newline -o <font> &
+Mandatory. Use the string <font> when creating subdirectories. This string must not contain any spaces.\\
+
+<family> &
+Mandatory. The identifier of the font family, for example \emph{times} or \emph{mns}. The string <family> forms the basis of all file names and is used to identify the font when selecting it under \latex. It must not contain any spaces.\\
+
+--batch\newline -b &
+Run in batch mode. By default, \ttftotex will ask for confirmation before processing the fonts. Batch mode skips the confirmation prompt. Please note that \ttftotex itself does not support batch processing. This switch is provided for cases in which it is run from a wrapper script.\\
+
+--log\newline -l &
+Write a transcript of your entire \ttftotex session to the file \path{ttf2tex.log} in the working directory. By default, \ttftotex will not create a log file.\\
+
+--typewriter\newline -t &
+Treat the font as a typewriter typeface. This option will disable hyphenation for the font by adding a declaration to the font definition file.\\
+
+--expert\newline -x &
+Run in expert mode. Use this option to install \OT fonts which offer additional glyphs such as real small caps and old style figures \emph{and} provide valid \PS glyph names. It will implicitly activate \shellopt{--ps-names-only} if required, \shellopt{--caps} will be ignored. See the description of the \shellopt{--ps-names-only} option and section \ref{sec:opentype} for details.\\
+
+--overwrite &
+Run in overwrite mode. If this option is used, \ttftotex will overwrite any existing destination files when installing files into the local or private \tex tree. Use with care! Note that the map file for \ttftopk will not be overwritten. If neither \shellopt{--install} nor \shellopt{--user} is used, this option has no effect.\\
+
+--ps-names\newline -n &
+Pass the \shellopt{-n} switch to \ttftotfm. This tells \ttftotfm to use the \PS glyph names as given in the font file, but only if a glyph has a valid entry in the active cmap as well. See the \ttftotfm documentation for details.\\
+
+--ps-names-only\newline -N &
+Pass the \shellopt{-N} switch to \ttftotfm. This tells \ttftotfm to always use the \PS glyph names as given in the font file and ignore the font's cmaps. See the \ttftotfm documentation for details.\\
+
+--caps <real>\newline -c <real> &
+Use the real number <real> to determine the height of (`faked') small caps. The small caps will be <real> times the height of uppercase glyphs. A value of 0.8 for example will create small caps which are 80\% the height of uppercase letters. \shellopt{--help} reports the default value. This option will be ignored if \shellopt{--expert} is used.\\
+
+--slant <real>\newline -s <real> &
+Use the real number <real> as obliqueness factor when generating slanted shapes. If this value is larger than zero, the characters slope to the right, otherwise to the left. This number is the tangent of the slant angle, it is usually much smaller than 1. A common choice is 0.167 (about 9.5°). \shellopt{--help} reports the default value.\\
+\end{options}
+
+\begin{cmdline}
+ttf2tex.sh [options] --user --foundry <foundry> --font <font> <family>
+\end{cmdline}
+%
+The \shellopt{--user} or \shellopt{-u} option will create all the files, install them, and append all mapping information to your map files using the private \tex tree of the user running \ttftotex. Options and arguments as above.
+
+\begin{cmdline}
+ttf2tex.sh [options] --foundry <foundry> --font <font> <family>
+\end{cmdline}
+%
+When omitting both \shellopt{--install} and \shellopt{--user}, \ttftotex will build a branch of your \tex tree in the current working directory and allow you to install the files later. Map files will be put into the working branch of \ttftotex as well, no file outside the working directory and its subdirectories will be touched. Options and arguments as above.
+
+\begin{cmdline}
+ttf2tex.sh --dump-vectors
+\end{cmdline}
+%
+Dump all internal encoding vectors to the working directory and exit. Any other options given on the command line will be ignored.
+
+\begin{cmdline}
+ttf2tex.sh --help
+\end{cmdline}
+%
+Print a brief usage summary including the defaults for \shellopt{--caps} and \shellopt{--slant} and exit. Any other options given on the command line will be ignored.
+
+\section{Usage}
+
+\subsection{Renaming the font files}\label{sec:renaming}
+
+Before invoking \ttftotex, you need to rename the font files in a way that allows \ttftotex to guess the weight and the variant of the font by the name of the file. \ttftotex will search the working directory for all of the files listed in table \ref{tab:files}. These file names are based on the following pattern: \texttt{fam} is the identifier of the whole font family. This string will be used when calling \ttftotex and when selecting the typeface under the new font selection system (\acr{NFSS}) later. The next letter represents the weight of the font. For most text fonts you will only need \texttt{r} and \texttt{b} while some font families come with \texttt{k} and \texttt{d} instead. The next letter, \texttt{i}, indicates an italic font and is omitted for upright shapes. \texttt{16} is a fixed string which indicates Unicode encoding. The `16' is required in the file names although it is in fact a mere matter of naming conventions and not actually used by \ttftotex to determine the encoding. \ttftotex always assumes Unicode encoding.
+
+The weight codes used by \ttftotex are based on the Fontname scheme, a canonical naming system for font files which is also known by the name of its creator as the Karl Berry scheme. \ttftotex follows this scheme to a certain extend. Technically, canonical font naming is by no means required to use the fonts with a single \tex installation, although it is always a good idea when dealing with large numbers of fonts. If you are not interested in canonical naming you will find all you need to know in order to use \ttftotex in table \ref{tab:files}.
+
+\begin{table}
+\small
+\begin{tabularx}{\textwidth}{@{}X@{}V@{}V@{}V@{}}
+\toprule
+\multicolumn{1}{@{}H}{Weight} & \multicolumn{1}{@{}H}{Code} & \multicolumn{2}{@{}H}{File name} \\
+\cmidrule{3-4}
+&& \multicolumn{1}{@{}H}{Upright} & \multicolumn{1}{@{}H}{Italic} \\
+\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}\cmidrule{4-4}
+ultra light, thin, hairline & a & fama16.ttf & famai16.ttf\\
+extra light & j & famj16.ttf & famji16.ttf\\
+light & l & faml16.ttf & famli16.ttf\\
+book & k & famk16.ttf & famki16.ttf\\
+regular & r & famr16.ttf & famri16.ttf\\
+medium & m & famm16.ttf & fammi16.ttf\\
+demibold & d & famd16.ttf & famdi16.ttf\\
+semibold & s & fams16.ttf & famsi16.ttf\\
+bold & b & famb16.ttf & fambi16.ttf\\
+extra bold & x & famx16.ttf & famxi16.ttf\\
+heavy & h & famh16.ttf & famhi16.ttf\\
+black & c & famc16.ttf & famci16.ttf\\
+ultra bold & u & famu16.ttf & famui16.ttf\\
+poster & p & famp16.ttf & fampi16.ttf\\
+\bottomrule
+\end{tabularx}
+\caption{Weights and file names supported by \ttftotex}
+\label{tab:files}
+\end{table}
+
+\subsection{Canonical font naming}
+
+There is a fairly elaborate canonical naming scheme used for the Type~1 fonts that come with \tetex as well as by fontinst, the \tex Type~1 font installation utility. You can read the documentation of the Fontname naming system online\fnurl{http://www.ctan.org/tex-archive/info/fontname} or download it as a tarball\fnurl{ftp://tug.ctan.org/tex-archive/info/fontname.tar.gz} from any \acr{CTAN} \acr{FTP} mirror. See the file \path{fontname.dvi} for an overview as well as excerpts from various map files and browse the \path{.map} files for the complete listings. Of course these lists can't cover all the fonts out there, so you might still need to create your own identifiers. Note that the way \ttftotex handles fonts differs slightly from what is described there. \ttftotex will only recognize the two variants `upright' and `italic' when parsing the file names and it does not recognize any widths (e.\,g. `condensed' or `narrow') at all. The Fontname naming system as described in the document mentioned above is based on the pattern:
+
+\begin{verbatim}
+S TT W [V...] [NN] [E] [DD]
+\end{verbatim}
+%
+\texttt{S} indicates the supplier (foundry), \texttt{TT} the typeface (two letters), \texttt{W} the weight, \texttt{V} the variant(s) (one or more letters), \texttt{NN} the encoding (usually two letters), \texttt{E} the expansion (width) and \texttt{DD} the design size. Square brackets indicate an italic font and omitted for upright shapes. \ttftotex however can only handle the pattern:
+
+\begin{verbatim}
+S TT... W [V] 16
+\end{verbatim}
+%
+That is, the design size is omitted (it is not used with linearly scalable fonts anyway, even in the Fontname scheme) and the expansion as well as all variants other than italic have to become part of the font family name which is not limited to two characters. If you want to name the font files according to the canonical scheme, you have to take this into account~-- and can only follow the scheme to a certain extend, although you probably won't run into problems when dealing with most standard typefaces. But if a given font family offers both regular and condensed fonts for example, you will have to split it into two separate families. See section \ref{sec:limitations:ttf2tex} for more details. Finally, \texttt{NN} is fixed to `16'. You won't find the code `16' in the Fontname scheme which only covers 7 and 8-bit encodings since \tex can't handle 16-bit encodings anyway.
+
+\subsection{Running \ttftotex}\label{sec:runscript}
+
+Invoke \ttftotex as described in section \ref{sec:synopsis}. The \emph{family} argument corresponds to the string \texttt{fam} as explained in section \ref{sec:renaming}. The names used in conjunction with the \shellopt{--foundry} and \shellopt{--font} options must not contain any spaces. By convention, these names will be used to create subdirectories, their sole purpose is to keep your installation clearly arranged.
+
+\subsection{Configuring \pdftex}
+
+\ttftotex will create the file \path{fam.map}, where \texttt{fam} is the identifier of the font family according to section \ref{sec:renaming}. You have to add the name of this map file to the main configuration file for \pdftex, \path{pdftex.cfg}, so that it contains a line like \path{map +fam.map}.
+
+\section{Using the fonts}
+
+\subsection{\TT fonts}
+
+The weight codes employed when renaming the fonts files follow the Fontname scheme while the \acr{NFSS} uses a different set of codes to determine what is called a `series'. You need to know about the \acr{NFSS} series codes which \ttftotex uses when creating font definition files if you want to select weights other than regular and bold. Table \ref{tab:series} lists all supported weights with the corresponding weight and series codes. The Fontname weight codes are what you were using when renaming the font files while the \acr{NFSS} series codes are what you will need when selecting a certain weight under \latex.
+
+\begin{table}
+\small
+\begin{tabularx}{\textwidth}{@{}X@{}V@{}V@{}V@{}}
+\toprule
+\multicolumn{1}{@{}H}{Weight} & \multicolumn{1}{@{}H}{Fontname} & \multicolumn{2}{@{}H}{\acr{NFSS}} \\
+\cmidrule{3-4}
+&& \multicolumn{1}{@{}H}{ttf2tex} & \multicolumn{1}{@{}H}{fontinst} \\
+\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}\cmidrule{4-4}
+ultra light, thin, hairline & a & ul* & ---\\
+extra light & j & el* & ---\\
+light & l & l & l\\
+book & k & k* & m\\
+regular & r & m & m\\
+medium & m & mb & mb\\
+demibold & d & db & db\\
+semibold & s & sb & sb\\
+bold & b & b & b\\
+extra bold & x & eb & eb\\
+heavy & h & hb* & eb\\
+black & c & cb* & eb\\
+ultra bold & u & ub & ub\\
+poster & p & pb* & ---\\
+\emph{default boldface} & d,s,b & bx & ---\\
+\bottomrule
+\end{tabularx}
+\caption{Weights and \acr{NFSS} series codes with \ttftotex extensions (*)}
+\label{tab:series}
+\end{table}
+
+The series codes used by \ttftotex correspond to those used by fontinst. There is only one minor difference which you will probably not notice in most cases but which might come in handy if you install a very comprehensive font family. By default, fontinst supports 11 weights and maps them to eight \acr{NFSS} series while \ttftotex uses a one-to-one mapping scheme for all 14 weights defined in the Fontname scheme. For this purpose six new font series specific to \ttftotex are introduced. They are marked with an asterisk in table \ref{tab:series}. This difference is normally not visible from a user perspective as \ttftotex uses aliases to ensure fontinst-like behavior. If, for example, a `heavy' weight is provided, it will be available as both `hb' and `eb' unless an `extra bold' font was provided as well. If a font family comes with multiple weights which would be mapped to `eb' under the fontinst scheme, however, these extensions will allow you to conveniently use all of them without modifying any font definition files.
+
+When looking at table \ref{tab:series}, you will also notice that one series has a special meaning for \ttftotex: the bold extended (\texttt{bx}) series. Bold extended is basically a perfectly valid \acr{NFSS} series and Computer Modern actually provides bold extended fonts. \ttftotex however deliberately (ab)uses it to set a default bold face. The fact that \ltxcmd{bfdefault} defaults to \texttt{bx} while most font families don't come with bold extended fonts provides a way to set a font-specific default bold face in the font definition file. For most font families \texttt{bx} will probably end up as an alias for \texttt{b} in the font definition file, but if one of the more moderate bold weights `semibold' or `demibold' is available, \ttftotex will prefer that. Note that this is intended as a fallback mechanism only. If multiple bold weights are available it is a good idea to set \ltxcmd{bfdefault} to the desired value explicitly.
+
+\subsection{\OT fonts}\label{sec:opentype}
+
+Essentially, there are two types of \OT fonts: those with \PS glyph data (\textsc{cff} fonts, file suffix \path{.otf}) and those with \TT glyph data (file suffix \path{.ttf}). Only the latter variant is supported by \ttftotex since it is the only one currently supported by both \ttftopk and \pdftex. \OT fonts with \TT glyph data (or rather: \TT fonts with \OT extensions, because that's what they are in essence) are installed and used like any other \TT font. Since \tex does not make use of the advanced typesetting features provided by \OT fonts, the main difference is the wealth of glyphs available in these fonts. To exploit that, you need to run \ttftotex with the \shellopt{--expert} option.
+
+When using this option, \ttftotex will create three font families: \texttt{fam}, \texttt{famx}, and \texttt{famj}. \texttt{fam} is generated like any other family but uses real small caps instead of `faked' ones, \texttt{famx} adds expert f-ligatures (`ff', `ffi', `ffl'), and \texttt{famj} adds expert f-ligatures as well as old style figures. Accessing the additional glyphs implies using \PS glyph names. This is equivalent to using the \shellopt{--ps-names-only} option, but only where required. This is the case for all fonts of the \texttt{famx} and \texttt{famj} families as well as all small caps fonts of the \texttt{fam} family. Note that this can only work if the font files actually contain valid \PS glyph names. If you experience problems with missing or faulty glyphs this is most likely not the case~-- and there is nothing \ttftotex can do about that.
+
+\section{Tutorial}
+
+Let's assume you would like to use Monotype's Times New Roman with \latex. You have also prepared everything as explained in section \ref{sec:requirements}. First, create a working directory and copy the font files there. By default, \ttftotex will not overwrite files when installing fonts into your \tex tree, but it does assume that the working directory contains nothing but the font files you want to install. Identify the regular, italic, bold, and bold italic versions by viewing the files either with a utility such as gfontview or with the bare-bones ftview that comes with FreeType (press \texttt{q} to close the window, by the way). In the latter case you might want to run ftdump to get the \PS name of the font and to read the copyright notice as found in the header of the font file:
+
+\begin{verbatim}
+gfontview $PWD
+ftview -g -r 24 ppem file.ttf
+ftdump file.ttf | less
+\end{verbatim}
+%
+The \PS name will usually tell you about the exact weight while the copyright notice contains the name of the font foundry. Rename the files as explained in section \ref{sec:renaming}. You should at least come up with something like this:
+
+\begin{verbatim}
+timesr16.ttf timesri16.ttf
+timesb16.ttf timesbi16.ttf
+\end{verbatim}
+%
+If you went one step further and decided to use more canonical names derived from the Fontname scheme (in this case we could even use the scheme in a strict manner), the font identifier would be \texttt{mns} instead of \texttt{times}:
+
+\begin{verbatim}
+mnsr16.ttf mnsri16.ttf
+mnsb16.ttf mnsbi16.ttf
+\end{verbatim}
+%
+Here \texttt{m} denotes Monotype, \texttt{ns} Times New Roman, \texttt{r}, \texttt{ri}, \texttt{b}, and \texttt{bi} indicate weight and variant and \texttt{16} means Unicode encoding. I will use \texttt{mns} as the font family name for the remainder of this tutorial. After renaming the font files, call \ttftotex with the appropriate font family name:
+
+\begin{verbatim}
+ttf2tex.sh --install --foundry monotype --font timesnew mns
+\end{verbatim}
+%
+You will see a lot of messages on the console. These will probably include warning messages about glyphs not being found, since a few glyphs defined in \textsc{t1} encoding are missing from the \textsc{wgl4} glyph set covered by this font. The glyphs which are usually reported as missing in ordinary \TT fonts include the f-ligatures `ff', `ffi', and `ffl'. This only means that the missing ligatures will not be typeset as a single glyph but as a sequence of glyphs~-- just like any other character. Ligatures like these are only found in expert encoded Type~1 \PS and in \OT fonts. Ordinary \TT fonts usually do provide the essential ligatures `fi' and `fl', though. If you want to view a table of all \textsc{t1} encoded glyphs available to \tex and \latex, run plain \tex on \path{testfont.tex} after installing everything and view the resulting \acr{DVI} file:
+
+\begin{verbatim}
+echo -e "mnsr8t\n\\\\table\\\\bye" | tex testfont.tex
+\end{verbatim}
+%
+The situation is worse for \textsc{ts1} encoding since it is much more exotic and defines glyphs which are usually not available in text fonts. But you should still get the most common symbols such as currency signs and other frequently used symbols like `copyright' or `registered'. You can use the \ltxpkg{textcomp} package as usual to get access to these symbols. The following command will create a complete table for \textsc{ts1} encoding:
+
+\begin{verbatim}
+echo -e "mnsr8c\n\\\\table\\\\bye" | tex testfont.tex
+\end{verbatim}
+%
+\ttftotex will create a map file for \pdftex called \path{mns.map}. You have to add that to the main \pdftex configuration file, \path{pdftex.cfg}:
+
+\begin{verbatim}
+% default map file provided by tetex
+map pdftex.map
+% additional map file created by ttf2tex
+map +mns.map
+\end{verbatim}
+%
+That's it. Now you may create a test document to try your new font out. There are no peculiarities specific to \TT fonts when selecting them under \latex. Just keep in mind that, when using \acr{DVI} or \PS as preview format, the first run with the new fonts will take a little longer since \ttftopk has to generate all \acr{PK} fonts required to display the document. Subsequent runs will be much faster because, as with \metafont fonts, \acr{PK} fonts generated by \ttftopk are cached in \shenv{VARTEXFONTS}. To select the fonts simply employ the standard \acr{NFSS} commands as documented in chapter 2 of the \latex font selection guide. This guide ships with \tetex as \path{fntguide.dvi} and is also available in \acr{PDF} format from \acr{CTAN}.\fnurl{http://www.ctan.org/tex-archive/macros/latex/doc/fntguide.pdf} For example, to select Times New Roman anywhere in your document use a command like:
+
+\begin{verbatim}
+\fontencoding{T1}\fontfamily{mns}\selectfont
+\end{verbatim}
+%
+To use Times New Roman as the default roman typeface for the whole document, redefine \ltxcmd{rmdefault} in the preamble:
+
+\begin{verbatim}
+\renewcommand{\rmdefault}{mns}
+\end{verbatim}
+%
+If your typeface provides more than two weights you can select one of them by using the \ltxcmd{fontseries} command in conjunction with the \acr{NFSS} series codes listed in table \ref{tab:series}. To select the demibold (\texttt{db}) weight for example, use the following command:
+
+\begin{verbatim}
+\fontseries{db}\selectfont
+\end{verbatim}
+%
+Compact font switching commands such as \ltxcmd{textbf} or \ltxcmd{bfseries} will work as usual, but keep in mind that they are using \ltxcmd{bfdefault} as the bold weight. If you want \ltxcmd{textbf} and \ltxcmd{bfseries} to use demibold instead, simply redefine \ltxcmd{bfdefault} accordingly:
+
+\begin{verbatim}
+\renewcommand{\bfdefault}{db}
+\end{verbatim}
+%
+Finally, you might want to write a \path{.sty} file that sets Times New Roman as the default roman typeface. Here is a sample file, install it as \path{timesnew.sty}:
+
+\begin{verbatim}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{timesnew}
+\RequirePackage[T1]{fontenc}
+\RequirePackage{textcomp}
+\renewcommand{\rmdefault}{mns}
+\endinput
+\end{verbatim}
+%
+Now all you need to do in order to use your new typeface is to put the command \ltxcmd{usepackage{timesnew}} in your document's preamble.
+
+\section{Hints and limitations}\label{sec:limitations}
+
+\subsection{General limitations}\label{sec:limitations:general}
+
+There are two limitations when using \TT fonts with \tex and \latex according to \ttftotex's approach, both of which are beyond \ttftotex's control: you can't produce resolution independent \PS and you can't use slanted fonts in \acr{PDF} files. The main problem with \PS is the fact that \dvips does not support \TT fonts. When the \acr{DVI} file is processed, \dvips implicitly calls \ttftopk to render the fonts and embeds them in bitmap format in the \PS file. Since the rendering quality of \ttftopk is excellent, the resulting \PS will look fine when printed at the corresponding resolution, but keep in mind that it is not portable. When using \dvips, you face a situation similar to that of \metafont fonts. That doesn't mean that you can't print or view the \PS file on other machines, but the font quality might be unsatisfactory if the resolutions don't match. If you need truly portable files, use \pdftex instead.
+
+As mentioned in the introduction, \pdftex offers native \TT font support. Compared to Type~1 fonts there is only one minor limitation when producing \acr{PDF}: it does not support slanting or extending of \TT fonts. For this reason, some lines in the map file which \ttftotex creates for \pdftex are commented out. Otherwise \pdftex would complain whenever it reads its map files. If you try to use `faked' slanted shapes of \TT fonts with \pdftex, these fonts will be missing in the resulting \acr{PDF} file. You can work around this issue be making sure that all \acr{PK} fonts required to typeset the slanted parts have been generated by \ttftopk before you run \pdftex. But note that this would mean using bitmap fonts since the slanted fonts will end up in bitmap Type~3 format in your \acr{PDF} file~-- something you were probably trying to avoid by using vector fonts in the first place. In short, don't use slanted fonts if you want to produce a \acr{PDF} file. If you want to make sure that no \acr{PK} fonts were embedded in a \acr{PDF} file, simply look at the console output of \pdftex. Here is a short excerpt of \pdftex's output as it is processing a file using the font from the tutorial:
+
+\begin{verbatim}
+</var/spool/texmf/pk/modeless/monotype/timesnew/mnsbo16t.600
+pk>{/usr/local/share/texmf/pdftex/T1-WGL4.enc}<mnsbi16.ttf><
+mnsb16.ttf></var/spool/texmf/pk/modeless/monotype/timesnew/m
+nsro16t.600pk><mnsri16.ttf><mnsr16.ttf>
+\end{verbatim}
+%
+You can tell by this that two types of fonts were embedded in the \acr{PDF} file: the fonts with a \path{.ttf} extension are \TT fonts while the ones with the extension \path{.600pk} are \acr{PK} fonts, where 600 is their resolution in dpi. Alternatively, you can use Acrobat Reader's font information dialog or the \path{pdffonts} utility that comes with recent versions of xpdf to verify the format of the fonts embedded in the \acr{PDF} file. All \acr{PK} fonts will be listed as `Type~3'. When printed on a 600\,dpi printer, this file will look excellent and you won't be able to tell the difference between \TT and \acr{PK} fonts at all. When viewed with Acrobat Reader however, the slanted fonts will look very poor. You have probably seen this distortion of embedded bitmap fonts which are scaled and anti-aliased before when using \metafont versions of the Computer Modern fonts. Note that Ghostscript (including all frontends based on it) does a much better job when dealing with bitmap Type~3 fonts.
+
+This issue does not affect `faked' small caps as these are simulated by typesetting (tall) caps at a smaller size which does not imply any manipulation of the glyph outlines. It also doesn't affect \ttftopk and all applications which implicitly rely on it when processing \acr{DVI} files (\dvips, \acr{DVI} viewers), since \ttftopk is capable of manipulating the glyph outlines of \TT fonts.
+
+\subsection{Limitations specific to \ttftotex}\label{sec:limitations:ttf2tex}
+
+\ttftotex supports \textsc{t1} (Cork) and \textsc{ts1} (Text Companion) encoding only and is thus limited to European languages and to typesetting text. If you want to typeset math, you need to use a different font in math mode. If you don't change any default settings apart from what is suggested in this manual, this is precisely what is going to happen.
+
+There is no support for multiple widths within one font family. If you have a large font family which comes with regular as well as condensed or narrow fonts you have to treat all widths as separate families. This is in fact a rather academic issue as there are no compact width switching commands anyway. Since the \acr{NFSS} doesn't have independent concepts of weight and width, separating the width from the weight by splitting up font families even makes sense in a way. After all, you don't use a condensed font the way you use boldface.
+
+Variants are limited to upright and italics. Oblique fonts are treated as italics when running \ttftotex and have to be renamed accordingly. Like the previous point this is essentially a font naming issue. \ttftotex doesn't care if the font file provided for, say, the roman upright shape is in fact a script, an old English, or a titling typeface, but you can't use canonical names for such fonts and you may need to split up the font family.
+
+`Faked' slanted shapes are supported for all typefaces including those which actually provide an oblique variant. Oblique fonts are basically slanted derivatives of the corresponding upright shape. They differ from `faked' slanted shapes in that they were actually drawn by the font designer and not generated by a machine. The italics of most sans serif and typewriter fonts are in fact oblique shapes. If you install such a typeface with \ttftotex and want to use its real oblique shape, simply call the italic version. If you call the slanted version explicitly, you will get a `faked' slanted shape derived from the upright shape by \ttftopk. This is not a limitation but intentional.
+
+\subsection{Problems with \ttftopk}
+
+If \xdvi and \dvips cause problems while \pdftex works fine, this usually indicates a problem with \ttftopk. As mentioned before, \pdftex features native support for \TT fonts while \xdvi and \dvips depend on \ttftopk. Note that this difference is only relevant when creating \acr{PDF} files. When creating \acr{DVI} output, it does not matter whether the \tex binary you are using is based on \pdftex or traditional \tex as the \acr{DVI} file does not contain any fonts. This is a typical error message you might get when running \xdvi or \dvips:
+
+\begin{verbatim}
+kpathsea: Running mktexpk --mfmode ljfive --bdpi 600 --mag 1+0/600 --dpi 600 mns
+r16t
+mktexpk: Running mf \mode:=ljfive; mag:=1+0/600; nonstopmode; input mnsr16t
+This is METAFONT, Version 2.7182 (Web2C 7.3.7)
+kpathsea: Running mktexmf mnsr16t
+
+! I can't find file `mnsr16t'.
+<*> ...e; mag:=1+0/600; nonstopmode; input mnsr16t
+
+Please type another input file name
+! Emergency stop.
+<*> ...e; mag:=1+0/600; nonstopmode; input mnsr16t
+
+Transcript written on mfput.log.
+grep: mnsr16t.log: No such file or directory
+mktexpk: `mf \mode:=ljfive; mag:=1+0/600; nonstopmode; input mnsr16t' failed to
+make mnsr16t.600pk.
+\end{verbatim}
+%
+Whenever \ttftopk fails, the script \path{mktexpk}, which generates \acr{PK} fonts on demand, falls back to \metafont which will obviously always fail with \TT fonts. To track down the real cause of the problem, run \ttftopk with the \shellopt{-t} option and the font mentioned in the error message from the command line: \verb|ttf2pk -t mnsr16t|. With a working setup, \ttftopk will print the line from its map file that matches the requested font:
+
+\begin{verbatim}
+This is ttf2pk version 1.4
+mnsr16t mnsr16.ttf Encoding=T1-WGL4.enc
+\end{verbatim}
+%
+In case of a problem, there are two possible scenarios:
+
+\begin{verbatim}
+This is ttf2pk version 1.4
+ttf2pk: ERROR: Cannot open file ttfonts.map.
+\end{verbatim}
+%
+This error message means that \ttftopk can't find its map file at all. In this case you should locate \path{ttfonts.map} on your system and set \shenv{TTF2PKINPUTS} in the global configuration file for \kpathsea, \path{texmf.cnf}, as explained in section \ref{sec:requirements} of this manual.
+
+\begin{verbatim}
+This is ttf2pk version 1.4
+ttf2pk: ERROR: Cannot find font mnsr16t in ttfonts.map.
+\end{verbatim}
+%
+This error message means that \ttftopk found its map file, but the requested font is not listed. If \ttftotex didn't report any errors while installing the fonts, this usually indicates that there are multiple copies of \path{ttfonts.map} on your system and that \ttftotex and \ttftopk use different ones. In this case you should verify the path to \path{ttfonts.map} as given in the header of \path{ttf2tex.sh}, check the \shenv{TTF2PKINPUTS} variable if set, and make sure that there is only one copy of \path{ttfonts.map} on your system. After that, fix the map file manually or rerun \ttftotex to reinstall the fonts. Please note that \ttftotex does not remove old lines form \path{ttfonts.map}. If there is a problem with \path{ttfonts.map}, always double-check the file and eliminate duplicate mapping lines.
+
+\section{Acknowledgments}
+
+\ttftotex was inspired by a tutorial\fnurl{http://www.radamir.com/tex} written by Damir Rakityansky which explains how to use \TT fonts with \miktex. I would also like to thank Vaggelis Kapoulas, Werner Lemberg, and Bruce D'Arcus for their help, contributions, and feature suggestions.
+
+\end{document}
diff --git a/obsolete/support/undump/0UNSUPPORTED b/obsolete/support/undump/0UNSUPPORTED
new file mode 100644
index 0000000000..64cacca715
--- /dev/null
+++ b/obsolete/support/undump/0UNSUPPORTED
@@ -0,0 +1,5 @@
+
+The programs in this directory are now unsupported.
+For almost all systems, undumped TeX is an inferior approach
+and the intrinsic machine dependency of these programs makes
+them too costly to maintain with any promise of reliability.
diff --git a/obsolete/support/undump/Encore/BU-README b/obsolete/support/undump/Encore/BU-README
new file mode 100644
index 0000000000..1708792a51
--- /dev/null
+++ b/obsolete/support/undump/Encore/BU-README
@@ -0,0 +1,12 @@
+
+ The files you are looking for are undump.c and unexec.c. If you have
+ problems with this, please contact me by phone. I will be out of
+ town from the 12th to the 19th of December 88.
+
+ Tom Meier
+ Boston Univeristy Info Tech
+
+ 617-353-2780
+
+ p.s. I included the other files for history.
+
diff --git a/obsolete/support/undump/Encore/Makefile b/obsolete/support/undump/Encore/Makefile
new file mode 100644
index 0000000000..77de95bc65
--- /dev/null
+++ b/obsolete/support/undump/Encore/Makefile
@@ -0,0 +1,13 @@
+BINDIR=/usr/local
+
+undump: undump.o scanargs.o
+ cc -O -o undump undump.o scanargs.o
+
+undump.o: undump.c
+ cc -O -c undump.c
+
+clean:
+ rm -f *.o
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Encore/dumpcore.c b/obsolete/support/undump/Encore/dumpcore.c
new file mode 100644
index 0000000000..e607a95c70
--- /dev/null
+++ b/obsolete/support/undump/Encore/dumpcore.c
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/file.h>
+#include <aouthdr.h>
+#include <sys/ptrace.h>
+
+struct ptrace_user u;
+
+
+main(argc,argv)
+int argc;
+char *argv[];
+{
+
+ int fd;
+
+ if (argc < 2) {
+ printf("give me a break, and a file...\n");
+ exit(0);
+ }
+
+ fd = open(argv[1],O_RDONLY);
+ read(fd,&u,sizeof (struct ptrace_user));
+ printf("sizeof ptrace: %o\n",sizeof(struct ptrace_user));
+ printf("dsize: %lo\n",u.pt_dsize);
+ printf("ssize: %lo\n",u.pt_ssize);
+ printf("magic: %o\n",u.pt_aouthdr.magic);
+ printf("vstamp: %o\n",u.pt_aouthdr.vstamp);
+ printf("tsize: %lo\n",u.pt_aouthdr.tsize);
+ printf("dsize: %lo\n",u.pt_aouthdr.dsize);
+ printf("bsize: %lo\n",u.pt_aouthdr.bsize);
+ printf("msize: %lo\n",u.pt_aouthdr.msize);
+ printf("mod_start: %lo\n",u.pt_aouthdr.mod_start);
+ printf("entry: %lo\n",u.pt_aouthdr.entry);
+ printf("text_start: %lo\n",u.pt_aouthdr.text_start);
+ printf("data_start: %lo\n",u.pt_aouthdr.data_start);
+ printf("entry_mod: %lo\n",u.pt_aouthdr.entry_mod);
+ printf("flags: %o\n",u.pt_aouthdr.flags);
+ printf("\n");
+ close(fd);
+ }
+
+
diff --git a/obsolete/support/undump/Encore/dumpit.c b/obsolete/support/undump/Encore/dumpit.c
new file mode 100644
index 0000000000..3090a83820
--- /dev/null
+++ b/obsolete/support/undump/Encore/dumpit.c
@@ -0,0 +1,74 @@
+#include <stdio.h>
+#include <sys/file.h>
+#include <filehdr.h>
+#include <aouthdr.h>
+#include <scnhdr.h>
+
+
+#define MAXSCNS 16
+struct filehdr hdr;
+AOUTHDR shdr;
+struct scnhdr scns[MAXSCNS];
+int nscns;
+
+
+main(argc,argv)
+int argc;
+char *argv[];
+{
+
+ int fd,i;
+
+ if (argc < 2) {
+ printf("give me a break, and a file...\n");
+ exit(0);
+ }
+ fd = open(argv[1],O_RDONLY);
+ read(fd,&hdr,sizeof(struct filehdr));
+ nscns = hdr.f_nscns;
+ printf("magic: %o\n",hdr.f_magic);
+ printf("sections: %o\n",hdr.f_nscns);
+ printf("timestamp: %lo\n",hdr.f_timdat);
+ printf("sym ptr: %lo\n",hdr.f_symptr);
+ printf("num sym ents: %lo\n",hdr.f_nsyms);
+ printf("size of syshdr: %o\n",hdr.f_opthdr);
+ printf("flags: %o\n",hdr.f_flags);
+ printf("\n");
+ if (hdr.f_opthdr != 0) {
+ read(fd,&shdr,sizeof(AOUTHDR));
+ printf("magic: %o\n",shdr.magic);
+ printf("vstamp: %o\n",shdr.vstamp);
+ printf("tsize: %lo\n",shdr.tsize);
+ printf("dsize: %lo\n",shdr.dsize);
+ printf("bsize: %lo\n",shdr.bsize);
+ printf("msize: %lo\n",shdr.msize);
+ printf("mod_start: %lo\n",shdr.mod_start);
+ printf("entry: %lo\n",shdr.entry);
+ printf("text_start: %lo\n",shdr.text_start);
+ printf("data_start: %lo\n",shdr.data_start);
+ printf("entry_mod: %lo\n",shdr.entry_mod);
+ printf("flags: %o\n",shdr.flags);
+ printf("\n");
+ }
+ for(i=0;(i != nscns);i++) {
+ read(fd,&scns[i],sizeof(struct scnhdr));
+ }
+ for(i=0;(i != nscns);i++) {
+ printf("name: %s\n",scns[i].s_name);
+ printf("paddr: %lo\n",scns[i].s_paddr);
+ printf("vaddr: %lo\n",scns[i].s_vaddr);
+ printf("size: %lo\n",scns[i].s_size);
+ printf("scnptr: %lo\n",scns[i].s_scnptr);
+ printf("relptr: %lo\n",scns[i].s_relptr);
+ printf("lnnoptr: %lo\n",scns[i].s_lnnoptr);
+ printf("nreloc: %o\n",scns[i].s_nreloc);
+ printf("nlnno: %o\n",scns[i].s_nlnno);
+ printf("flags: %lo\n",scns[i].s_flags);
+ printf("symptr: %lo\n",scns[i].s_symptr);
+ printf("modno: %o\n",scns[i].s_modno);
+ printf("\n");
+ }
+ close(fd);
+ }
+
+
diff --git a/obsolete/support/undump/Encore/undo.c b/obsolete/support/undump/Encore/undo.c
new file mode 100644
index 0000000000..c0ee0dfcf6
--- /dev/null
+++ b/obsolete/support/undump/Encore/undo.c
@@ -0,0 +1,480 @@
+/* Support routines for the undo facility.
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU Emacs General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU Emacs, but only under the conditions described in the
+GNU Emacs General Public License. A copy of this license is
+supposed to have been given to you along with GNU Emacs so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+#include "config.h"
+#include "lisp.h"
+#include "undo.h"
+#include "commands.h"
+#include "buffer.h"
+
+/* Access undo records of current buffer */
+/* These assume that `u' points to the buffer's undodata */
+#define UndoRQ (u->undorecs)
+#define UndoCQ (u->undochars)
+#define FillRQ (u->nextrec)
+#define FillCQ (u->nextchar)
+
+/* Record last undo record made, and what buffer made in */
+static struct UndoRec *LastUndoRec;
+static struct buffer *LastUndoBuf;
+
+/* Record progress of undoing */
+static NUndone;
+static NCharsLeft;
+static LastUndoneC;
+static LastUndone;
+static struct buffer *LastUndoneBuf;
+
+Lisp_Object Fundo_boundary ();
+
+make_undo_records (b)
+ struct buffer *b;
+{
+ register struct UndoData *u;
+ b->undodata = u = (struct UndoData *) xmalloc (sizeof (struct UndoData));
+ u->undorecs
+ = (struct UndoRec *) xmalloc (sizeof (struct UndoRec) * InitNUndoR);
+ u->undochars = (char *) xmalloc (InitNUndoC);
+ u->undorecs[InitNUndoR - 1].kind = Unundoable;
+ u->nextrec = 0;
+ u->nextchar = 0;
+ u->num_undorecs = InitNUndoR;
+ u->num_undochars = InitNUndoC;
+}
+
+free_undo_records (b)
+ struct buffer *b;
+{
+ register struct UndoData *u = b->undodata;
+ free (u->undorecs);
+ free (u->undochars);
+ free (u);
+}
+
+struct UndoRec *
+record_undo (kind, pos, len)
+ enum Ukinds kind;
+{
+ register struct UndoData *u = bf_cur->undodata;
+ register struct UndoRec *p = &UndoRQ[FillRQ];
+ register struct UndoRec *np;
+
+ FillRQ++;
+ if (FillRQ >= NUndoR)
+ FillRQ = 0;
+ else if (FillRQ >= u->num_undorecs)
+ {
+ np = (struct UndoRec *) xrealloc (UndoRQ, NUndoR * sizeof *p);
+ if (np)
+ {
+ UndoRQ = np;
+ p = &UndoRQ[FillRQ-1];
+ u->num_undorecs = NUndoR;
+ np[NUndoR - 1].kind = Unundoable;
+ }
+ else
+ FillRQ = 0;
+ }
+ UndoRQ[FillRQ].kind = Unundoable;
+ p -> kind = kind;
+ p -> pos = pos;
+ p -> len = len;
+ LastUndoRec = p;
+ LastUndoBuf = bf_cur;
+ if (kind != Uboundary)
+ LastUndone = -1;
+ return p;
+}
+
+record_insert (pos, n)
+{
+ register struct UndoRec *p = LastUndoRec;
+ if (!bf_cur->undodata)
+ return;
+ if (LastUndoBuf != bf_cur)
+ {
+ Fundo_boundary ();
+ p = 0;
+ }
+
+ if (bf_modified <= bf_cur->save_modified)
+ record_undo (Uunmod, pos, bf_cur->modtime);
+
+ if (p && p -> kind == Udelete && p -> pos + p -> len == pos)
+ p -> len += n;
+ else
+ record_undo (Udelete, pos, n);
+}
+
+record_delete (pos, n)
+ int pos, n;
+{
+ register struct UndoRec *p = LastUndoRec;
+
+ if (!bf_cur->undodata)
+ return;
+ if (LastUndoBuf != bf_cur)
+ {
+ Fundo_boundary ();
+ p = 0;
+ }
+
+ if (bf_modified <= bf_cur->save_modified)
+ record_undo (Uunmod, pos, bf_cur->modtime);
+
+ if (p && p->kind == Uinsert && p->pos == pos && p->len > 0)
+ p->len += n;
+ else if (point == pos + n)
+ record_undo (Uinsert, pos + n, - n);
+ else
+ record_undo (Uinsert, pos, n);
+
+ record_chars (pos, n);
+}
+
+record_chars (pos, n)
+ register int pos, n;
+{
+ if (pos < bf_s1 + 1 && pos + n > bf_s1 + 1)
+ {
+ record_block (&CharAt (pos), bf_s1 + 1 - pos);
+ n -= bf_s1 + 1 - pos;
+ pos = bf_s1 + 1;
+ }
+
+ record_block (&CharAt (pos), n);
+}
+
+record_block (p, n)
+ register char *p;
+ register int n;
+{
+ register char *cp;
+ register struct UndoData *u = bf_cur->undodata;
+ register int i;
+
+ NCharsLeft -= n;
+ cp = &UndoCQ[FillCQ];
+
+ while (n > 0)
+ {
+ i = u->num_undochars - FillCQ;
+ if (i > n) i = n;
+ if (i > 0)
+ {
+ bcopy (p, cp, i);
+ p += i;
+ FillCQ += i;
+ n -= i;
+ }
+
+ if (n == 0)
+ break;
+
+ if (FillCQ >= NUndoC)
+ {
+ FillCQ = 0;
+ cp = UndoCQ;
+ }
+ else
+ {
+ cp = (char *) xrealloc (UndoCQ, NUndoC);
+ UndoCQ = cp;
+ cp += FillCQ;
+ NCharsLeft += NUndoC - u->num_undochars;
+ u->num_undochars = NUndoC;
+ }
+ }
+}
+
+record_change (pos, n)
+ int pos, n;
+{
+ register struct UndoRec *p = LastUndoRec;
+ if (!bf_cur->undodata)
+ return;
+ if (LastUndoBuf != bf_cur)
+ {
+ Fundo_boundary ();
+ p = 0;
+ }
+
+ if (bf_modified <= bf_cur->save_modified)
+ record_undo (Uunmod, pos, bf_cur->modtime);
+
+ if (p && p->kind == Uchange && p->len > 0 && p->pos + p->len == pos)
+ p->len += n;
+ else if (point == pos + n)
+ record_undo (Uchange, pos + n, -n);
+ else
+ record_undo (Uchange, pos, n);
+
+ record_chars (pos, n);
+}
+
+record_change1 (pos, bufp, n)
+ int pos;
+ char *bufp;
+ int n;
+{
+ register struct UndoRec *p = LastUndoRec;
+ if (!bf_cur->undodata)
+ return;
+ if (LastUndoBuf != bf_cur)
+ {
+ Fundo_boundary ();
+ p = 0;
+ }
+ if (p && p->kind == Uchange && p->len > 0 && p->pos + p->len == pos)
+ p -> len += n;
+ else
+ record_undo (Uchange, pos, n);
+
+ record_block (bufp, n);
+}
+
+DoneIsDone ()
+{
+ register struct UndoData *u = bf_cur->undodata;
+ register struct UndoRec *p;
+
+ if (!u)
+ return 0;
+
+ p = &UndoRQ[(FillRQ + u->num_undorecs - 1) % u->num_undorecs];
+ if (p->kind != Unundoable)
+ record_undo (Unundoable, point, 0);
+ return 0;
+}
+
+DEFUN ("undo-boundary", Fundo_boundary, Sundo_boundary, 0, 0, 0,
+ "Mark a boundary between units of undo.\n\
+An undo command will stop at this point,\n\
+but another undo command will undo to the previous boundary.")
+ ()
+{
+ register struct UndoData *u = bf_cur->undodata;
+ register struct UndoRec *p;
+
+ if (!u)
+ return Qnil;
+
+ p = &UndoRQ[(FillRQ + u->num_undorecs - 1) % u->num_undorecs];
+ if (p->kind != Uboundary)
+ record_undo (Uboundary, point, 0);
+ return Qnil;
+}
+
+DEFUN ("undo-more", Fundo_more, Sundo_more, 1, 1, 0,
+ "Undo back N undo-boundaries beyond what was already undone recently.\n\
+Call undo-start to get ready to undo recent changes,\n\
+then call undo-more one or more times to undo them.")
+ (pfxarg)
+ Lisp_Object pfxarg;
+{
+ register struct UndoData *u = bf_cur->undodata;
+ register int n = 0;
+ register int chars;
+ register int i = LastUndone;
+ register int arg = XINT (pfxarg);
+ register int len, pos;
+ char tembuf[NUndoC];
+
+ if (!u)
+ return Qnil;
+
+ if (LastUndoneBuf != bf_cur ||
+ i == -1)
+ error ("Cannot undo more: changes have been made since the last undo");
+
+ while (1)
+ {
+ while (UndoRQ[i = (!i ? u->num_undorecs-1 : i-1)].kind != Uboundary)
+ {
+ len = UndoRQ[i].len;
+ if (len < 0) len = - len;
+ if (((UndoRQ[i].kind == Uinsert || UndoRQ[i].kind == Uchange)
+ && (NCharsLeft -= len) < 0)
+ || UndoRQ[i].kind == Unundoable || NUndone >= u->num_undorecs)
+ error ("No further undo information available");
+ NUndone++;
+ n++;
+ }
+ NUndone++;
+ n++;
+ if (--arg <= 0)
+ break;
+ }
+
+ i = LastUndone;
+ chars = LastUndoneC;
+ while (--n >= 0)
+ {
+ if (!i)
+ i = u->num_undorecs;
+ i--;
+
+ len = UndoRQ[i].len;
+ pos = UndoRQ[i].pos;
+
+ if (UndoRQ[i].kind == Uchange || UndoRQ[i].kind == Uinsert)
+ if (len < 0)
+ {
+ pos += len;
+ len = - len;
+ }
+
+#ifdef SWITCH_ENUM_BUG
+ switch ((int) UndoRQ[i].kind)
+#else
+ switch (UndoRQ[i].kind)
+#endif
+ {
+ case Uchange:
+ case Udelete:
+ if (pos < FirstCharacter || pos + len > NumCharacters + 1)
+ error ("Changes to be undone are outside visible portion of buffer");
+ SetPoint (pos);
+ break;
+
+ case Uinsert:
+ if (pos < FirstCharacter || pos > NumCharacters + 1)
+ error ("Changes to be undone are outside visible portion of buffer");
+ SetPoint (pos);
+ }
+
+#ifdef SWITCH_ENUM_BUG
+ switch ((int) UndoRQ[i].kind)
+#else
+ switch (UndoRQ[i].kind)
+#endif
+ {
+ case Uboundary:
+ break;
+
+ case Udelete:
+ del_range (point, point + len);
+ break;
+
+ case Uchange:
+ if (len > NUndoC)
+ /* Should have already said "No more undo info available" */
+ abort ();
+ save_undone_chars (pos, len, tembuf);
+ chars -= len;
+ if (chars < 0)
+ {
+ replace_chars (point - chars, len + chars, UndoCQ);
+ replace_chars (point, - chars, UndoCQ + chars + u->num_undochars);
+ chars += u->num_undochars;
+ }
+ else
+ replace_chars (point, len, UndoCQ + chars);
+ record_change1 (point, tembuf, len);
+ SetPoint (UndoRQ[i].pos);
+ break;
+
+ case Uinsert:
+ chars -= len;
+ if (chars < 0)
+ {
+ InsCStr (UndoCQ + chars + u->num_undochars, - chars);
+ InsCStr (UndoCQ, len + chars);
+ chars += u->num_undochars;
+ }
+ else
+ InsCStr (UndoCQ + chars, len);
+ SetPoint (UndoRQ[i].pos);
+ break;
+
+ case Uunmod:
+ /* If this Uunmod records an obsolete save
+ (not matching the actual disk file)
+ then don't mark unmodified. */
+ if (len != bf_cur->modtime)
+ break;
+#ifdef CLASH_DETECTION
+ Funlock_buffer ();
+#endif /* CLASH_DETECTION */
+ bf_cur->save_modified = bf_modified;
+ RedoModes++;
+ break;
+
+ default:
+ error ("Something rotten in undo");
+ return Qnil;
+ }
+ }
+ LastUndone = i;
+ LastUndoneC = chars;
+ return Qnil;
+}
+
+replace_chars (pos, n, string)
+ register int pos, n;
+ register unsigned char *string;
+{
+ modify_region (pos, pos + n);
+ while (--n >= 0)
+ {
+ CharAt (pos) = *string++;
+ pos++;
+ }
+}
+
+save_undone_chars (pos, n, p)
+ register int pos, n;
+ register char *p;
+{
+ if (pos < bf_s1 + 1 && pos + n > bf_s1 + 1)
+ {
+ bcopy (&CharAt (pos), p, bf_s1 + 1 - pos);
+ p += bf_s1 + 1 - pos;
+ n -= bf_s1 + 1 - pos;
+ pos = bf_s1 + 1;
+ }
+
+ bcopy (&CharAt (pos), p, n);
+}
+
+DEFUN ("undo-start", Fundo_start, Sundo_start, 0, 0, 0,
+ "Move undo-pointer to front of undo records.\n\
+The next call to undo-more will undo the most recently made change.")
+ ()
+{
+ register struct UndoData *u = bf_cur->undodata;
+
+ if (!u)
+ error ("Undo information not kept for this buffer");
+ LastUndoneBuf = bf_cur;
+ NCharsLeft = u->num_undochars;
+ NUndone = 0;
+ LastUndone = FillRQ;
+ LastUndoneC = FillCQ;
+ return Qnil;
+}
+
+syms_of_undo ()
+{
+ defsubr (&Sundo_start);
+ defsubr (&Sundo_boundary);
+ defsubr (&Sundo_more);
+}
diff --git a/obsolete/support/undump/Encore/undo.h b/obsolete/support/undump/Encore/undo.h
new file mode 100644
index 0000000000..11b3b8cf16
--- /dev/null
+++ b/obsolete/support/undump/Encore/undo.h
@@ -0,0 +1,70 @@
+/* Definitions of objects used by the GNU Emacs undo facility.
+ Copyright (C) 1985 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU Emacs General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU Emacs, but only under the conditions described in the
+GNU Emacs General Public License. A copy of this license is
+supposed to have been given to you along with GNU Emacs so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+enum Ukinds { /* The events that can exist in the undo
+ queue. */
+ Uboundary, /* A boundary between sets of undoable things
+ */
+ Unundoable, /* What's done is done -- some things can't
+ be undone */
+ Udelete, /* Delete characters to perform the undo */
+ Uinsert, /* Insert .... */
+ Uchange, /* Replace characters */
+ Uunmod, /* Clear modification-flag to perform undo */
+};
+
+struct UndoRec { /* A record of a single undo action */
+ enum Ukinds kind; /* the kind of action to be undone */
+ int pos; /* Where change starts or ends. */
+ int len; /* Number of characters to insert, delete or
+ replace. Negative means they stretch
+ back from `pos'. */
+};
+
+/* Note: in a record of type Uunmod, the `len' field is really
+ the buffer->modtime associated with the state at that time.
+ The buffer is marked as unmodified by undoing the Uunmod
+ only if the modtime field matches. */
+
+/* The undo history consists of two circular queues, one of characters and
+ one of UndoRecs. When Uinsert recs are added to UndoRQ characters get
+ added to UndoCQ. The position of the characters can be reconstructed by
+ subtracting len from the fill pointer. */
+
+#define NUndoR (((1 << 13) - 4) / sizeof (struct UndoRec))
+#define NUndoC ((1 << 13) - 4)
+
+/* Initially allocate them these sizes;
+ if these sizes get filled up, make them full size */
+
+#define InitNUndoR 8
+#define InitNUndoC (512 - 4)
+
+struct UndoData
+ {
+ struct UndoRec *undorecs; /* The undo records, NUndoR of them */
+ char *undochars; /* And the characters associated, NUndoC in all */
+ int nextrec; /* Indices for storing in above two */
+ int nextchar;
+ int num_undorecs; /* Sizes allocated */
+ int num_undochars;
+ };
+
diff --git a/obsolete/support/undump/Encore/undump.1 b/obsolete/support/undump/Encore/undump.1
new file mode 100644
index 0000000000..797cdb0377
--- /dev/null
+++ b/obsolete/support/undump/Encore/undump.1
@@ -0,0 +1,28 @@
+.TH UNDUMP 1 "University of Utah"
+.SH NAME
+undump \- convert a core dump to an executable a.out file
+.SH SYNOPSIS
+undump new-a.out-file [old-a.out-file] [core-file]
+.SH DESCRIPTION
+Undump takes a core dump file and the executable "a.out" file which
+caused it and produces a new executable file with all static
+variables initialised to the values they held at the time of the
+core dump. It is primarily useful for programs which take a long time
+to initialise themselves, e.g. Emacs. The idea is to go through all of
+the initialisations and then create a core dump (e.g. with the abort()
+call). One then uses undump to make a new executable file with all of it
+done. This usually implies the use of a global flag variable which says
+whether or not initialisation has been done.
+.PP
+Undump's arguments, old-a.out-file and core-file, default to "a.out" and
+"core", respectively.
+.PP
+A few things to keep in mind about undump:
+.IP
+It doesn't preserve open files.
+.IP
+The program will be re-entered at the beginning of main(), not at the point
+where the core dump occurred.
+.SH BUGS
+Probably should have an option to not require
+old-a.out-file if the core came from a 407 file.
diff --git a/obsolete/support/undump/Encore/undump.c b/obsolete/support/undump/Encore/undump.c
new file mode 100644
index 0000000000..02d8b1d582
--- /dev/null
+++ b/obsolete/support/undump/Encore/undump.c
@@ -0,0 +1,374 @@
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * It requires a local subroutine called scanargs, somewhat similar to
+ * getopt (I think). You should be able to easily get around this, though.
+ * =Spencer
+ */
+
+
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <sys/stat.h>
+#include <aouthdr.h>
+#include <filehdr.h>
+#include <scnhdr.h>
+#include <linenum.h>
+#include <sys/ptrace.h>
+
+#define PSIZE 10240
+#define MAXSCNS 8
+
+struct ptrace_user u;
+AOUTHDR ahdr, oahdr;
+struct filehdr fhdr, ofhdr;
+struct scnhdr scns[MAXSCNS];
+int nscns;
+long cur_pos, sym_top;
+
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ if (scanargs(argc, argv, "undump new-a.out!s a.out%s core%s",
+ &new_name, &a_out_name, &core_name)
+ != 1)
+ exit(1);
+
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+ read_u(core);
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+
+ int i;
+
+/* sym_top points to the beginning of the line#/sym/str data */
+
+/*
+ * read file header from a.out
+ */
+
+ if (fread(&fhdr, sizeof fhdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read file header from a.out file");
+ exit(1);
+ }
+
+/*
+ * read system header from a.out COFF format
+ */
+
+ if (fhdr.f_opthdr > 0)
+ {
+ if (fread(&ahdr, sizeof ahdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read system file header from a.out file");
+ exit(1);
+ }
+
+/*
+ * read section headers from a.out COFF format
+ */
+
+ nscns = fhdr.f_nscns;
+ for(i=0;(i != nscns);i++) {
+ if (fread(&scns[i], sizeof(struct scnhdr), 1, a_out) != 1) {
+ perror("Couldn't read section headers from a.out file");
+ exit(1);
+ }
+ }
+ }
+
+
+/* if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ } */
+
+
+
+ if (ahdr.magic != u.pt_aouthdr.magic ||
+ ahdr.tsize != u.pt_aouthdr.tsize ||
+ ahdr.dsize != u.pt_aouthdr.dsize ||
+ ahdr.entry != u.pt_aouthdr.entry)
+ {
+ fprintf(stderr, "Core file didn't come from this a.out\n");
+ exit(1);
+ }
+
+ printf("Data segment size was %u", ahdr.dsize);
+ ahdr.dsize = u.pt_dsize;
+ ahdr.bsize = 0; /* all data is inited now! */
+ printf(" now is %u\n", ahdr.dsize);
+
+
+/*
+ * point to top of old line#/symbol/string info if there is any so
+ * we can find it later...
+ */
+
+ sym_top = 0;
+ if (scns[0].s_nlnno != 0)
+ sym_top = scns[0].s_lnnoptr;
+ else if (fhdr.f_nsyms != 0)
+ sym_top = fhdr.f_symptr;
+
+ scns[1].s_size = u.pt_dsize;
+ scns[2].s_size = 0;
+ scns[2].s_vaddr = 0;
+ scns[2].s_paddr = 0;
+
+ cur_pos = scns[1].s_scnptr + scns[1].s_size;
+
+ if (scns[0].s_nlnno != 0) {
+ scns[0].s_lnnoptr = cur_pos;
+ cur_pos += scns[0].s_nlnno * sizeof(struct lineno);
+ }
+ if (fhdr.f_nsyms != 0) {
+ fhdr.f_symptr = cur_pos;
+ }
+
+
+
+
+ if (fwrite(&fhdr, sizeof fhdr, 1, new) != 1)
+ {
+ perror("Couldn't write file header to new a.out file");
+ exit(1);
+ }
+ if (fhdr.f_opthdr > 0)
+ {
+ if (fwrite(&ahdr, sizeof ahdr, 1, new) != 1)
+ {
+ perror("Couldn't write system file header to new a.out file");
+ exit(1);
+ }
+ for(i=0;(i != nscns);i++) {
+ if (fwrite(&scns[i], sizeof(struct scnhdr), 1, new) != 1) {
+ perror("Couldn't write section headers to new a.out file");
+ exit(1);
+ }
+ }
+ }
+
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int txtcnt;
+
+ txtcnt = ahdr.tsize;
+
+ fseek(new, scns[0].s_scnptr, 0);
+ fseek(a_out, scns[0].s_scnptr, 0);
+
+/* if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); * skip over text *
+ return;
+ } */
+
+
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+ int datacnt;
+
+
+ datacnt = u.pt_dsize;
+
+/* if (hdr.a_magic == OMAGIC)
+ datacnt += u.u_tsize; */
+ fseek(core,(long) sizeof(struct ptrace_user), 0);
+ fseek(new, scns[1].s_scnptr, 0);
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+ fseek(a_out, sym_top, 0); /* skip over data segment */
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/undump/Encore/unexec.c b/obsolete/support/undump/Encore/unexec.c
new file mode 100644
index 0000000000..a4ced6bf69
--- /dev/null
+++ b/obsolete/support/undump/Encore/unexec.c
@@ -0,0 +1,1143 @@
+/* Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
+
+ NO WARRANTY
+
+ BECAUSE THIS PROGRAM IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
+NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
+WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC,
+RICHARD M. STALLMAN AND/OR OTHER PARTIES PROVIDE THIS PROGRAM "AS IS"
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY
+AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
+STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., AND/OR ANY OTHER PARTY
+WHO MAY MODIFY AND REDISTRIBUTE THIS PROGRAM AS PERMITTED BELOW, BE
+LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR
+OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
+DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR
+A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) THIS
+PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.
+
+ GENERAL PUBLIC LICENSE TO COPY
+
+ 1. You may copy and distribute verbatim copies of this source file
+as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy a valid copyright notice "Copyright
+(C) 1987 Free Software Foundation, Inc."; and include following the
+copyright notice a verbatim copy of the above disclaimer of warranty
+and of this License. You may charge a distribution fee for the
+physical act of transferring a copy.
+
+ 2. You may modify your copy or copies of this source file or
+any portion of it, and copy and distribute such modifications under
+the terms of Paragraph 1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating
+ that you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish,
+ that in whole or in part contains or is a derivative of this
+ program or any part thereof, to be licensed at no charge to all
+ third parties on terms identical to those contained in this
+ License Agreement (except that you may choose to grant more
+ extensive warranty protection to third parties, at your option).
+
+ c) You may charge a distribution fee for the physical act of
+ transferring a copy, and you may at your option offer warranty
+ protection in exchange for a fee.
+
+ 3. You may copy and distribute this program or any portion of it in
+compiled, executable or object code form under the terms of Paragraphs
+1 and 2 above provided that you do the following:
+
+ a) cause each such copy to be accompanied by the
+ corresponding machine-readable source code, which must
+ be distributed under the terms of Paragraphs 1 and 2 above; or,
+
+ b) cause each such copy to be accompanied by a
+ written offer, with no time limit, to give any third party
+ free (except for a nominal shipping charge) a machine readable
+ copy of the corresponding source code, to be distributed
+ under the terms of Paragraphs 1 and 2 above; or,
+
+ c) in the case of a recipient of this program in compiled, executable
+ or object code form (without the corresponding source code) you
+ shall cause copies you distribute to be accompanied by a copy
+ of the written offer of source code which you received along
+ with the copy you received.
+
+ 4. You may not copy, sublicense, distribute or transfer this program
+except as expressly provided under this License Agreement. Any attempt
+otherwise to copy, sublicense, distribute or transfer this program is void and
+your rights to use the program under this License agreement shall be
+automatically terminated. However, parties who have received computer
+software programs from you with this License Agreement will not have
+their licenses terminated so long as such parties remain in full compliance.
+
+ 5. If you wish to incorporate parts of this program into other free
+programs whose distribution conditions are different, write to the Free
+Software Foundation at 675 Mass Ave, Cambridge, MA 02139. We have not yet
+worked out a simple rule that can be stated here, but we will often permit
+this. We will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software.
+
+
+In other words, you are welcome to use, share and improve this program.
+You are forbidden to forbid anyone else to use, share and improve
+what you give them. Help stamp out software-hoarding! */
+
+
+/*
+ * unexec.c - Convert a running program into an a.out file.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Tue Mar 2 1982
+ * Modified heavily since then.
+ *
+ * Synopsis:
+ * unexec (new_name, a_name, data_start, bss_start, entry_address)
+ * char *new_name, *a_name;
+ * unsigned data_start, bss_start, entry_address;
+ *
+ * Takes a snapshot of the program and makes an a.out format file in the
+ * file named by the string argument new_name.
+ * If a_name is non-NULL, the symbol table will be taken from the given file.
+ * On some machines, an existing a_name file is required.
+ *
+ * The boundaries within the a.out file may be adjusted with the data_start
+ * and bss_start arguments. Either or both may be given as 0 for defaults.
+ *
+ * Data_start gives the boundary between the text segment and the data
+ * segment of the program. The text segment can contain shared, read-only
+ * program code and literal data, while the data segment is always unshared
+ * and unprotected. Data_start gives the lowest unprotected address.
+ * The value you specify may be rounded down to a suitable boundary
+ * as required by the machine you are using.
+ *
+ * Specifying zero for data_start means the boundary between text and data
+ * should not be the same as when the program was loaded.
+ * If NO_REMAP is defined, the argument data_start is ignored and the
+ * segment boundaries are never changed.
+ *
+ * Bss_start indicates how much of the data segment is to be saved in the
+ * a.out file and restored when the program is executed. It gives the lowest
+ * unsaved address, and is rounded up to a page boundary. The default when 0
+ * is given assumes that the entire data segment is to be stored, including
+ * the previous data and bss as well as any additional storage allocated with
+ * break (2).
+ *
+ * The new file is set up to start at entry_address.
+ *
+ * If you make improvements I'd like to get them too.
+ * harpo!utah-cs!thomas, thomas@Utah-20
+ *
+ */
+
+/* There are several compilation parameters affecting unexec:
+
+* COFF
+
+Define this if your system uses COFF for executables.
+Otherwise we assume you use Berkeley format.
+
+* NO_REMAP
+
+Define this if you do not want to try to save Emacs's pure data areas
+as part of the text segment.
+
+Saving them as text is good because it allows users to share more.
+
+However, on machines that locate the text area far from the data area,
+the boundary cannot feasibly be moved. Such machines require
+NO_REMAP.
+
+Also, remapping can cause trouble with the built-in startup routine
+/lib/crt0.o, which defines `environ' as an initialized variable.
+Dumping `environ' as pure does not work! So, to use remapping,
+you must write a startup routine for your machine in Emacs's crt0.c.
+If NO_REMAP is defined, Emacs uses the system's crt0.o.
+
+* SECTION_ALIGNMENT
+
+Some machines that use COFF executables require that each section
+start on a certain boundary *in the COFF file*. Such machines should
+define SECTION_ALIGNMENT to a mask of the low-order bits that must be
+zero on such a boundary. This mask is used to control padding between
+segments in the COFF file.
+
+If SECTION_ALIGNMENT is not defined, the segments are written
+consecutively with no attempt at alignment. This is right for
+unmodified system V.
+
+* SEGMENT_MASK
+
+Some machines require that the beginnings and ends of segments
+*in core* be on certain boundaries. For most machines, a page
+boundary is sufficient. That is the default. When a larger
+boundary is needed, define SEGMENT_MASK to a mask of
+the bits that must be zero on such a boundary.
+
+* A_TEXT_OFFSET(HDR)
+
+Some machines count the a.out header as part of the size of the text
+segment (a_text); they may actually load the header into core as the
+first data in the text segment. Some have additional padding between
+the header and the real text of the program that is counted in a_text.
+
+For these machines, define A_TEXT_OFFSET(HDR) to examine the header
+structure HDR and return the number of bytes to add to `a_text'
+before writing it (above and beyond the number of bytes of actual
+program text). HDR's standard fields are already correct, except that
+this adjustment to the `a_text' field has not yet been made;
+thus, the amount of offset can depend on the data in the file.
+
+* A_TEXT_SEEK(HDR)
+
+If defined, this macro specifies the number of bytes to seek into the
+a.out file before starting to write the text segment.a
+
+* EXEC_MAGIC
+
+For machines using COFF, this macro, if defined, is a value stored
+into the magic number field of the output file.
+
+* ADJUST_EXEC_HEADER
+
+This macro can be used to generate statements to adjust or
+initialize nonstandard fields in the file header
+
+* ADDR_CORRECT(ADDR)
+
+Macro to correct an int which is the bit pattern of a pointer to a byte
+into an int which is the number of a byte.
+
+This macro has a default definition which is usually right.
+This default definition is a no-op on most machines (where a
+pointer looks like an int) but not on all machines.
+
+*/
+
+#ifndef emacs
+#define PERROR(arg) perror (arg); return -1
+#else
+#include "config.h"
+#define PERROR(file) report_error (file, new)
+#endif
+
+#ifndef CANNOT_DUMP /* all rest of file! */
+
+#ifndef CANNOT_UNEXEC /* most of rest of file */
+
+#ifndef mips /* mips machine requires completely separate code. */
+
+#include <a.out.h>
+/* Define getpagesize () if the system does not.
+ Note that this may depend on symbols defined in a.out.h
+ */
+#include "getpagesize.h"
+
+#ifndef makedev /* Try to detect types.h already loaded */
+#include <sys/types.h>
+#endif
+#include <stdio.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+extern char *start_of_text (); /* Start of text */
+extern char *start_of_data (); /* Start of initialized data */
+
+#ifdef COFF
+#ifndef USG
+#ifndef STRIDE
+#ifndef UMAX
+/* I have a suspicion that these are turned off on all systems
+ and can be deleted. Try it in version 19. */
+#include <filehdr.h>
+#include <aouthdr.h>
+#include <scnhdr.h>
+#include <syms.h>
+#endif /* not UMAX */
+#endif /* Not STRIDE */
+#endif /* not USG */
+static long block_copy_start; /* Old executable start point */
+static struct filehdr f_hdr; /* File header */
+static struct aouthdr f_ohdr; /* Optional file header (a.out) */
+long bias; /* Bias to add for growth */
+long lnnoptr; /* Pointer to line-number info within file */
+#define SYMS_START block_copy_start
+
+static long text_scnptr;
+static long data_scnptr;
+
+#else /* not COFF */
+
+extern char *sbrk ();
+
+#define SYMS_START ((long) N_SYMOFF (ohdr))
+
+#ifdef HPUX
+#ifdef HP9000S200_ID
+#define MY_ID HP9000S200_ID
+#else
+#include <model.h>
+#define MY_ID MYSYS
+#endif /* no HP9000S200_ID */
+static MAGIC OLDMAGIC = {MY_ID, SHARE_MAGIC};
+static MAGIC NEWMAGIC = {MY_ID, DEMAND_MAGIC};
+#define N_TXTOFF(x) TEXT_OFFSET(x)
+#define N_SYMOFF(x) LESYM_OFFSET(x)
+static struct exec hdr, ohdr;
+
+#else /* not HPUX */
+
+#if defined (USG) && !defined (IRIS)
+static struct bhdr hdr, ohdr;
+#define a_magic fmagic
+#define a_text tsize
+#define a_data dsize
+#define a_bss bsize
+#define a_syms ssize
+#define a_trsize rtsize
+#define a_drsize rdsize
+#define a_entry entry
+#define N_BADMAG(x) \
+ (((x).fmagic)!=OMAGIC && ((x).fmagic)!=NMAGIC &&\
+ ((x).fmagic)!=FMAGIC && ((x).fmagic)!=IMAGIC)
+#define NEWMAGIC FMAGIC
+#else /* IRIS or not USG */
+static struct exec hdr, ohdr;
+#define NEWMAGIC ZMAGIC
+#endif /* IRIS or not USG */
+#endif /* not HPUX */
+
+static int unexec_text_start;
+static int unexec_data_start;
+
+#endif /* not COFF */
+
+static int pagemask;
+
+/* Correct an int which is the bit pattern of a pointer to a byte
+ into an int which is the number of a byte.
+ This is a no-op on ordinary machines, but not on all. */
+
+#ifndef ADDR_CORRECT /* Let m-*.h files override this definition */
+#define ADDR_CORRECT(x) ((char *)(x) - (char*)0)
+#endif
+
+#ifdef emacs
+
+static
+report_error (file, fd)
+ char *file;
+ int fd;
+{
+ if (fd)
+ close (fd);
+ error ("Failure operating on %s", file);
+}
+#endif /* emacs */
+
+#define ERROR0(msg) report_error_1 (new, msg, 0, 0); return -1
+#define ERROR1(msg,x) report_error_1 (new, msg, x, 0); return -1
+#define ERROR2(msg,x,y) report_error_1 (new, msg, x, y); return -1
+
+static
+report_error_1 (fd, msg, a1, a2)
+ int fd;
+ char *msg;
+ int a1, a2;
+{
+ close (fd);
+#ifdef emacs
+ error (msg, a1, a2);
+#else
+ fprintf (stderr, msg, a1, a2);
+ fprintf (stderr, "\n");
+#endif
+}
+
+/* ****************************************************************
+ * unexec
+ *
+ * driving logic.
+ */
+unexec (new_name, a_name, data_start, bss_start, entry_address)
+ char *new_name, *a_name;
+ unsigned data_start, bss_start, entry_address;
+{
+ int new, a_out = -1;
+
+ if (a_name && (a_out = open (a_name, 0)) < 0)
+ {
+ PERROR (a_name);
+ }
+ if ((new = creat (new_name, 0666)) < 0)
+ {
+ PERROR (new_name);
+ }
+
+ if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) < 0
+ || copy_text_and_data (new) < 0
+ || copy_sym (new, a_out, a_name, new_name) < 0
+#ifdef COFF
+ || adjust_lnnoptrs (new, a_out, new_name) < 0
+#endif
+ )
+ {
+ close (new);
+ /* unlink (new_name); /* Failed, unlink new a.out */
+ return -1;
+ }
+
+ close (new);
+ if (a_out >= 0)
+ close (a_out);
+ mark_x (new_name);
+ return 0;
+}
+
+/* ****************************************************************
+ * make_hdr
+ *
+ * Make the header in the new a.out from the header in core.
+ * Modify the text and data sizes.
+ */
+static int
+make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name)
+ int new, a_out;
+ unsigned data_start, bss_start, entry_address;
+ char *a_name;
+ char *new_name;
+{
+ int tem;
+#ifdef COFF
+ auto struct scnhdr f_thdr; /* Text section header */
+ auto struct scnhdr f_dhdr; /* Data section header */
+ auto struct scnhdr f_bhdr; /* Bss section header */
+ auto struct scnhdr scntemp; /* Temporary section header */
+ register int scns;
+#endif /* COFF */
+ unsigned int bss_end;
+#ifdef UMAX
+ extern etext;
+#endif
+
+ pagemask = getpagesize () - 1;
+
+ /* Adjust text/data boundary. */
+#ifdef NO_REMAP
+ data_start = (int) start_of_data ();
+#else /* not NO_REMAP */
+#ifndef UMAX
+ if (!data_start)
+#endif
+ data_start = (int) start_of_data ();
+#endif /* not NO_REMAP */
+ data_start = ADDR_CORRECT (data_start);
+
+#ifdef SEGMENT_MASK
+ data_start = data_start & ~SEGMENT_MASK; /* (Down) to segment boundary. */
+#else
+ data_start = data_start & ~pagemask; /* (Down) to page boundary. */
+#endif
+
+ bss_end = ADDR_CORRECT (sbrk (0)) + pagemask;
+ bss_end &= ~ pagemask;
+
+ /* Adjust data/bss boundary. */
+ if (bss_start != 0)
+ {
+ bss_start = (ADDR_CORRECT (bss_start) + pagemask);
+ /* (Up) to page bdry. */
+ bss_start &= ~ pagemask;
+ if (bss_start > bss_end)
+ {
+ ERROR1 ("unexec: Specified bss_start (%u) is past end of program",
+ bss_start);
+ }
+ }
+ else
+ bss_start = bss_end;
+
+ if (data_start > bss_start) /* Can't have negative data size. */
+ {
+ ERROR2 ("unexec: data_start (%u) can't be greater than bss_start (%u)",
+ data_start, bss_start);
+ }
+
+#ifdef COFF
+ /* Salvage as much info from the existing file as possible */
+ if (a_out >= 0)
+ {
+ if (read (a_out, &f_hdr, sizeof (f_hdr)) != sizeof (f_hdr))
+ {
+ PERROR (a_name);
+ }
+ block_copy_start += sizeof (f_hdr);
+ if (f_hdr.f_opthdr > 0)
+ {
+ if (read (a_out, &f_ohdr, sizeof (f_ohdr)) != sizeof (f_ohdr))
+ {
+ PERROR (a_name);
+ }
+ block_copy_start += sizeof (f_ohdr);
+ }
+ /* Loop through section headers, copying them in */
+ for (scns = f_hdr.f_nscns; scns > 0; scns--) {
+ if (read (a_out, &scntemp, sizeof (scntemp)) != sizeof (scntemp))
+ {
+ PERROR (a_name);
+ }
+ if (scntemp.s_scnptr > 0L)
+ {
+ if (block_copy_start < scntemp.s_scnptr + scntemp.s_size)
+ block_copy_start = scntemp.s_scnptr + scntemp.s_size;
+ }
+ if (strcmp (scntemp.s_name, ".text") == 0)
+ {
+ f_thdr = scntemp;
+ }
+ else if (strcmp (scntemp.s_name, ".data") == 0)
+ {
+ f_dhdr = scntemp;
+ }
+ else if (strcmp (scntemp.s_name, ".bss") == 0)
+ {
+ f_bhdr = scntemp;
+ }
+ }
+ }
+ else
+ {
+ ERROR0 ("can't build a COFF file from scratch yet");
+ }
+
+ /* Now we alter the contents of all the f_*hdr variables
+ to correspond to what we want to dump. */
+
+ f_hdr.f_flags |= (F_RELFLG | F_EXEC);
+#ifdef EXEC_MAGIC
+ f_ohdr.magic = EXEC_MAGIC;
+#endif
+#ifndef NO_REMAP
+ f_ohdr.text_start = (long) start_of_text ();
+#ifdef UMAX
+ f_ohdr.tsize = (long) &etext;
+#else
+ f_ohdr.tsize = data_start - f_ohdr.text_start;
+#endif
+ f_ohdr.data_start = data_start;
+#endif /* NO_REMAP */
+ f_ohdr.dsize = bss_start - f_ohdr.data_start;
+ f_ohdr.bsize = bss_end - bss_start;
+ f_thdr.s_size = f_ohdr.tsize;
+ f_thdr.s_scnptr = sizeof (f_hdr) + sizeof (f_ohdr);
+ f_thdr.s_scnptr += (f_hdr.f_nscns) * (sizeof (f_thdr));
+ lnnoptr = f_thdr.s_lnnoptr;
+#ifdef SECTION_ALIGNMENT
+ /* Some systems require special alignment
+ of the sections in the file itself. */
+ f_thdr.s_scnptr
+ = (f_thdr.s_scnptr + SECTION_ALIGNMENT) & ~SECTION_ALIGNMENT;
+#endif /* SECTION_ALIGNMENT */
+ text_scnptr = f_thdr.s_scnptr;
+ f_dhdr.s_paddr = f_ohdr.data_start;
+ f_dhdr.s_vaddr = f_ohdr.data_start;
+ f_dhdr.s_size = f_ohdr.dsize;
+ f_dhdr.s_scnptr = f_thdr.s_scnptr + f_thdr.s_size;
+#ifdef SECTION_ALIGNMENT
+ /* Some systems require special alignment
+ of the sections in the file itself. */
+ f_dhdr.s_scnptr
+ = (f_dhdr.s_scnptr + SECTION_ALIGNMENT) & ~SECTION_ALIGNMENT;
+#endif /* SECTION_ALIGNMENT */
+ data_scnptr = f_dhdr.s_scnptr;
+ f_bhdr.s_paddr = f_ohdr.data_start + f_ohdr.dsize;
+ f_bhdr.s_vaddr = f_ohdr.data_start + f_ohdr.dsize;
+ f_bhdr.s_size = f_ohdr.bsize;
+ f_bhdr.s_scnptr = 0L;
+ bias = f_dhdr.s_scnptr + f_dhdr.s_size - block_copy_start;
+
+ if (f_hdr.f_symptr > 0L)
+ {
+ f_hdr.f_symptr += bias;
+ }
+
+ if (f_thdr.s_lnnoptr > 0L)
+ {
+ f_thdr.s_lnnoptr += bias;
+ }
+
+#ifdef ADJUST_EXEC_HEADER
+ ADJUST_EXEC_HEADER
+#endif /* ADJUST_EXEC_HEADER */
+
+ if (write (new, &f_hdr, sizeof (f_hdr)) != sizeof (f_hdr))
+ {
+ PERROR (new_name);
+ }
+
+ if (write (new, &f_ohdr, sizeof (f_ohdr)) != sizeof (f_ohdr))
+ {
+ PERROR (new_name);
+ }
+
+ if (write (new, &f_thdr, sizeof (f_thdr)) != sizeof (f_thdr))
+ {
+ PERROR (new_name);
+ }
+
+ if (write (new, &f_dhdr, sizeof (f_dhdr)) != sizeof (f_dhdr))
+ {
+ PERROR (new_name);
+ }
+
+ if (write (new, &f_bhdr, sizeof (f_bhdr)) != sizeof (f_bhdr))
+ {
+ PERROR (new_name);
+ }
+ return (0);
+
+#else /* if not COFF */
+
+ /* Get symbol table info from header of a.out file if given one. */
+ if (a_out >= 0)
+ {
+ if (read (a_out, &ohdr, sizeof hdr) != sizeof hdr)
+ {
+ PERROR (a_name);
+ }
+
+ if N_BADMAG (ohdr)
+ {
+ ERROR1 ("invalid magic number in %s", a_name);
+ }
+ hdr = ohdr;
+ }
+ else
+ {
+ bzero (hdr, sizeof hdr);
+ }
+
+ unexec_text_start = (long) start_of_text ();
+ unexec_data_start = data_start;
+
+ /* Machine-dependent fixup for header, or maybe for unexec_text_start */
+#ifdef ADJUST_EXEC_HEADER
+ ADJUST_EXEC_HEADER;
+#endif /* ADJUST_EXEC_HEADER */
+
+ hdr.a_trsize = 0;
+ hdr.a_drsize = 0;
+ if (entry_address != 0)
+ hdr.a_entry = entry_address;
+
+ hdr.a_bss = bss_end - bss_start;
+ hdr.a_data = bss_start - data_start;
+#ifdef NO_REMAP
+ hdr.a_text = ohdr.a_text;
+#else /* not NO_REMAP */
+ hdr.a_text = data_start - unexec_text_start;
+#endif /* not NO_REMAP */
+
+#ifdef A_TEXT_OFFSET
+ hdr.a_text += A_TEXT_OFFSET (ohdr);
+#endif
+
+ if (write (new, &hdr, sizeof hdr) != sizeof hdr)
+ {
+ PERROR (new_name);
+ }
+
+#ifdef A_TEXT_OFFSET
+ hdr.a_text -= A_TEXT_OFFSET (ohdr);
+#endif
+
+ return 0;
+
+#endif /* not COFF */
+}
+
+/* ****************************************************************
+ * copy_text_and_data
+ *
+ * Copy the text and data segments from memory to the new a.out
+ */
+static int
+copy_text_and_data (new)
+ int new;
+{
+ register char *end;
+ register char *ptr;
+
+#ifdef COFF
+ lseek (new, (long) text_scnptr, 0);
+ ptr = (char *) f_ohdr.text_start;
+ end = ptr + f_ohdr.tsize;
+ write_segment (new, ptr, end);
+
+ lseek (new, (long) data_scnptr, 0);
+ ptr = (char *) f_ohdr.data_start;
+ end = ptr + f_ohdr.dsize;
+ write_segment (new, ptr, end);
+
+#else /* if not COFF */
+
+/* Some machines count the header as part of the text segment.
+ That is to say, the header appears in core
+ just before the address that start_of_text () returns.
+ For them, N_TXTOFF is the place where the header goes.
+ We must adjust the seek to the place after the header.
+ Note that at this point hdr.a_text does *not* count
+ the extra A_TEXT_OFFSET bytes, only the actual bytes of code. */
+
+#ifdef A_TEXT_SEEK
+ lseek (new, (long) A_TEXT_SEEK (hdr), 0);
+#else
+#ifdef A_TEXT_OFFSET
+ /* Note that on the Sequent machine A_TEXT_OFFSET != sizeof (hdr)
+ and sizeof (hdr) is the correct amount to add here. */
+ /* In version 19, eliminate this case and use A_TEXT_SEEK whenever
+ N_TXTOFF is not right. */
+ lseek (new, (long) N_TXTOFF (hdr) + sizeof (hdr), 0);
+#else
+ lseek (new, (long) N_TXTOFF (hdr), 0);
+#endif /* no A_TEXT_OFFSET */
+#endif /* no A_TEXT_SEEK */
+
+ ptr = (char *) unexec_text_start;
+ end = ptr + hdr.a_text;
+ write_segment (new, ptr, end);
+
+ ptr = (char *) unexec_data_start;
+ end = ptr + hdr.a_data;
+/* This lseek is certainly incorrect when A_TEXT_OFFSET
+ and I believe it is a no-op otherwise.
+ Let's see if its absence ever fails. */
+/* lseek (new, (long) N_TXTOFF (hdr) + hdr.a_text, 0); */
+ write_segment (new, ptr, end);
+
+#endif /* not COFF */
+
+ return 0;
+}
+
+write_segment (new, ptr, end)
+ int new;
+ register char *ptr, *end;
+{
+ register int i, nwrite, ret;
+ char buf[80];
+ extern int errno;
+ char zeros[128];
+
+ bzero (zeros, sizeof zeros);
+
+ for (i = 0; ptr < end;)
+ {
+ /* distance to next multiple of 128. */
+ nwrite = (((int) ptr + 128) & -128) - (int) ptr;
+ /* But not beyond specified end. */
+ if (nwrite > end - ptr) nwrite = end - ptr;
+ ret = write (new, ptr, nwrite);
+ /* If write gets a page fault, it means we reached
+ a gap between the old text segment and the old data segment.
+ This gap has probably been remapped into part of the text segment.
+ So write zeros for it. */
+ if (ret == -1 && errno == EFAULT)
+ write (new, zeros, nwrite);
+ else if (nwrite != ret)
+ {
+ sprintf (buf,
+ "unexec write failure: addr 0x%x, fileno %d, size 0x%x, wrote 0x%x, errno %d",
+ ptr, new, nwrite, ret, errno);
+ PERROR (buf);
+ }
+ i += nwrite;
+ ptr += nwrite;
+ }
+}
+
+/* ****************************************************************
+ * copy_sym
+ *
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+static int
+copy_sym (new, a_out, a_name, new_name)
+ int new, a_out;
+ char *a_name, *new_name;
+{
+ char page[1024];
+ int n;
+
+ if (a_out < 0)
+ return 0;
+
+#ifdef COFF
+ if (SYMS_START == 0L)
+ return 0;
+#endif /* COFF */
+
+#ifdef COFF
+ if (lnnoptr) /* if there is line number info */
+ lseek (a_out, lnnoptr, 0); /* start copying from there */
+ else
+#endif /* COFF */
+ lseek (a_out, SYMS_START, 0); /* Position a.out to symtab. */
+
+ while ((n = read (a_out, page, sizeof page)) > 0)
+ {
+ if (write (new, page, n) != n)
+ {
+ PERROR (new_name);
+ }
+ }
+ if (n < 0)
+ {
+ PERROR (a_name);
+ }
+ return 0;
+}
+
+/* ****************************************************************
+ * mark_x
+ *
+ * After succesfully building the new a.out, mark it executable
+ */
+static
+mark_x (name)
+ char *name;
+{
+ struct stat sbuf;
+ int um;
+ int new = 0; /* for PERROR */
+
+ um = umask (777);
+ umask (um);
+ if (stat (name, &sbuf) == -1)
+ {
+ PERROR (name);
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod (name, sbuf.st_mode) == -1)
+ PERROR (name);
+}
+
+/*
+ * If the COFF file contains a symbol table and a line number section,
+ * then any auxiliary entries that have values for x_lnnoptr must
+ * be adjusted by the amount that the line number section has moved
+ * in the file (bias computed in make_hdr). The #@$%&* designers of
+ * the auxiliary entry structures used the absolute file offsets for
+ * the line number entry rather than an offset from the start of the
+ * line number section!
+ *
+ * When I figure out how to scan through the symbol table and pick out
+ * the auxiliary entries that need adjustment, this routine will
+ * be fixed. As it is now, all such entries are wrong and sdb
+ * will complain. Fred Fish, UniSoft Systems Inc.
+ */
+
+#ifdef COFF
+
+/* This function is probably very slow. Instead of reopening the new
+ file for input and output it should copy from the old to the new
+ using the two descriptors already open (WRITEDESC and READDESC).
+ Instead of reading one small structure at a time it should use
+ a reasonable size buffer. But I don't have time to work on such
+ things, so I am installing it as submitted to me. -- RMS. */
+
+adjust_lnnoptrs (writedesc, readdesc, new_name)
+ int writedesc;
+ int readdesc;
+ char *new_name;
+{
+ register int nsyms;
+ register int new;
+#ifdef amdahl_uts
+ SYMENT symentry;
+ AUXENT auxentry;
+#else
+ struct syment symentry;
+ struct auxent auxentry;
+#endif
+
+ if (!lnnoptr || !f_hdr.f_symptr)
+ return 0;
+
+ if ((new = open (new_name, 2)) < 0)
+ {
+ PERROR (new_name);
+ return -1;
+ }
+
+ lseek (new, f_hdr.f_symptr, 0);
+ for (nsyms = 0; nsyms < f_hdr.f_nsyms; nsyms++)
+ {
+ read (new, &symentry, SYMESZ);
+ if (symentry.n_numaux)
+ {
+ read (new, &auxentry, AUXESZ);
+ nsyms++;
+ if (ISFCN (symentry.n_type)) {
+ auxentry.x_sym.x_fcnary.x_fcn.x_lnnoptr += bias;
+ lseek (new, -AUXESZ, 1);
+ write (new, &auxentry, AUXESZ);
+ }
+ }
+ }
+ close (new);
+}
+
+#endif /* COFF */
+
+
+#else /* mips */
+
+/* Unexec for mips machines.
+ Note that I regard it as the responsibility of people at Mips
+ to tell me about any changes that need to be made in this code.
+ I won't take responsibility to think about it even if a change
+ I make elsewhere causes it to break. -- RMS. */
+
+#include <sys/types.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <varargs.h>
+#include <filehdr.h>
+#include <aouthdr.h>
+#include <scnhdr.h>
+#include <sym.h>
+
+#define private static
+
+extern int errno;
+extern int sys_nerr;
+extern char *sys_errlist[];
+#define EEOF -1
+
+private void
+fatal(s, va_alist)
+ va_dcl
+{
+ va_list ap;
+ if (errno == EEOF) {
+ fputs("unexec: unexpected end of file, ", stderr);
+ }
+ else if (errno < sys_nerr) {
+ fprintf(stderr, "unexec: %s, ", sys_errlist[errno]);
+ }
+ else {
+ fprintf(stderr, "unexec: error code %d, ", errno);
+ }
+ va_start(ap);
+ _doprnt(s, ap, stderr);
+ fputs(".\n", stderr);
+ exit(1);
+}
+
+#define READ(_fd, _buffer, _size, _error_message, _error_arg) \
+ errno = EEOF; \
+ if (read(_fd, _buffer, _size) != _size) \
+ fatal(_error_message, _error_arg);
+
+#define WRITE(_fd, _buffer, _size, _error_message, _error_arg) \
+ if (write(_fd, _buffer, _size) != _size) \
+ fatal(_error_message, _error_arg);
+
+#define SEEK(_fd, _position, _error_message, _error_arg) \
+ errno = EEOF; \
+ if (lseek(_fd, _position, L_SET) != _position) \
+ fatal(_error_message, _error_arg);
+
+struct headers {
+ struct filehdr fhdr;
+ struct aouthdr aout;
+ struct scnhdr text_section;
+ struct scnhdr rdata_section;
+ struct scnhdr data_section;
+ struct scnhdr sdata_section;
+ struct scnhdr sbss_section;
+ struct scnhdr bss_section;
+};
+
+unexec (new_name, a_name, data_start, bss_start, entry_address)
+ char *new_name, *a_name;
+ unsigned data_start, bss_start, entry_address;
+{
+ int new, old;
+ int pagesize, brk;
+ int newsyms, symrel;
+ int nread;
+ struct headers hdr;
+#define BUFSIZE 8192
+ char buffer[BUFSIZE];
+
+ old = open (a_name, O_RDONLY, 0);
+ if (old < 0) fatal("openning %s", a_name);
+
+ new = creat (new_name, 0666);
+ if (new < 0) fatal("creating %s", new_name);
+
+ hdr = *((struct headers *)TEXT_START);
+ if (hdr.fhdr.f_magic != MIPSELMAGIC
+ && hdr.fhdr.f_magic != MIPSEBMAGIC) {
+ fprintf(stderr, "unexec: input file magic number is %x, not %x or %x.\n",
+ hdr.fhdr.f_magic, MIPSELMAGIC, MIPSEBMAGIC);
+ exit(1);
+ }
+ if (hdr.fhdr.f_opthdr != sizeof(hdr.aout)) {
+ fprintf(stderr, "unexec: input a.out header is %d bytes, not %d.\n",
+ hdr.fhdr.f_opthdr, sizeof(hdr.aout));
+ exit(1);
+ }
+#if 0
+ if (hdr.aout.magic != ZMAGIC
+ && hdr.aout.magic != NMAGIC
+ && hdr.aout.magic != OMAGIC) {
+ fprintf(stderr, "unexec: input file a.out magic number is %o, not %o, %o, or %o.\n",
+ hdr.aout.magic, ZMAGIC, NMAGIC, OMAGIC);
+ exit(1);
+ }
+#else
+ if (hdr.aout.magic != ZMAGIC) {
+ fprintf(stderr, "unexec: input file a.out magic number is %o, not %o.\n",
+ hdr.aout.magic, ZMAGIC);
+ exit(1);
+ }
+#endif
+ if (hdr.fhdr.f_nscns != 6) {
+ fprintf(stderr, "unexec: %d sections instead of 6.\n", hdr.fhdr.f_nscns);
+ }
+#define CHECK_SCNHDR(field, name, flags) \
+ if (strcmp(hdr.field.s_name, name) != 0) { \
+ fprintf(stderr, "unexec: %s section where %s expected.\n", \
+ hdr.field.s_name, name); \
+ exit(1); \
+ } \
+ else if (hdr.field.s_flags != flags) { \
+ fprintf(stderr, "unexec: %x flags where %x expected in %s section.\n", \
+ hdr.field.s_flags, flags, name); \
+ }
+ CHECK_SCNHDR(text_section, _TEXT, STYP_TEXT);
+ CHECK_SCNHDR(rdata_section, _RDATA, STYP_RDATA);
+ CHECK_SCNHDR(data_section, _DATA, STYP_DATA);
+ CHECK_SCNHDR(sdata_section, _SDATA, STYP_SDATA);
+ CHECK_SCNHDR(sbss_section, _SBSS, STYP_SBSS);
+ CHECK_SCNHDR(bss_section, _BSS, STYP_BSS);
+
+ pagesize = getpagesize();
+ brk = (sbrk(0) + pagesize - 1) & (-pagesize);
+ hdr.aout.dsize = brk - DATA_START;
+ hdr.aout.bsize = 0;
+ if (entry_address == 0) {
+ extern __start();
+ hdr.aout.entry = (unsigned)__start;
+ }
+ else {
+ hdr.aout.entry = entry_address;
+ }
+ hdr.aout.bss_start = hdr.aout.data_start + hdr.aout.dsize;
+ hdr.rdata_section.s_size = data_start - DATA_START;
+ hdr.data_section.s_vaddr = data_start;
+ hdr.data_section.s_paddr = data_start;
+ hdr.data_section.s_size = brk - DATA_START;
+ hdr.data_section.s_scnptr = hdr.rdata_section.s_scnptr
+ + hdr.rdata_section.s_size;
+ hdr.sdata_section.s_vaddr = hdr.data_section.s_vaddr
+ + hdr.data_section.s_size;
+ hdr.sdata_section.s_paddr = hdr.sdata_section.s_paddr;
+ hdr.sdata_section.s_size = 0;
+ hdr.sdata_section.s_scnptr = hdr.data_section.s_scnptr
+ + hdr.data_section.s_size;
+ hdr.sbss_section.s_vaddr = hdr.sdata_section.s_vaddr
+ + hdr.sdata_section.s_size;
+ hdr.sbss_section.s_paddr = hdr.sbss_section.s_vaddr;
+ hdr.sbss_section.s_size = 0;
+ hdr.sbss_section.s_scnptr = hdr.sdata_section.s_scnptr
+ + hdr.sdata_section.s_size;
+ hdr.bss_section.s_vaddr = hdr.sbss_section.s_vaddr
+ + hdr.sbss_section.s_size;
+ hdr.bss_section.s_paddr = hdr.bss_section.s_vaddr;
+ hdr.bss_section.s_size = 0;
+ hdr.bss_section.s_scnptr = hdr.sbss_section.s_scnptr
+ + hdr.sbss_section.s_size;
+
+ WRITE(new, TEXT_START, hdr.aout.tsize,
+ "writing text section to %s", new_name);
+ WRITE(new, DATA_START, hdr.aout.dsize,
+ "writing text section to %s", new_name);
+
+ SEEK(old, hdr.fhdr.f_symptr, "seeking to start of symbols in %s", a_name);
+ errno = EEOF;
+ nread = read(old, buffer, BUFSIZE);
+ if (nread < sizeof(HDRR)) fatal("reading symbols from %s", a_name);
+#define symhdr ((pHDRR)buffer)
+ newsyms = hdr.aout.tsize + hdr.aout.dsize;
+ symrel = newsyms - hdr.fhdr.f_symptr;
+ hdr.fhdr.f_symptr = newsyms;
+ symhdr->cbLineOffset += symrel;
+ symhdr->cbDnOffset += symrel;
+ symhdr->cbPdOffset += symrel;
+ symhdr->cbSymOffset += symrel;
+ symhdr->cbOptOffset += symrel;
+ symhdr->cbAuxOffset += symrel;
+ symhdr->cbSsOffset += symrel;
+ symhdr->cbSsExtOffset += symrel;
+ symhdr->cbFdOffset += symrel;
+ symhdr->cbRfdOffset += symrel;
+ symhdr->cbExtOffset += symrel;
+#undef symhdr
+ do {
+ if (write(new, buffer, nread) != nread)
+ fatal("writing symbols to %s", new_name);
+ nread = read(old, buffer, BUFSIZE);
+ if (nread < 0) fatal("reading symbols from %s", a_name);
+#undef BUFSIZE
+ } while (nread != 0);
+
+ SEEK(new, 0, "seeking to start of header in %s", new_name);
+ WRITE(new, &hdr, sizeof(hdr),
+ "writing header of %s", new_name);
+
+ close(old);
+ close(new);
+ mark_x(new_name);
+}
+
+/*
+ * mark_x
+ *
+ * After succesfully building the new a.out, mark it executable
+ */
+static
+mark_x (name)
+ char *name;
+{
+ struct stat sbuf;
+ int um = umask (777);
+ umask (um);
+ if (stat(name, &sbuf) < 0)
+ fatal("getting protection on %s", name);
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) < 0)
+ fatal("setting protection on %s", name);
+}
+
+#endif /* mips */
+
+#endif /* not CANNOT_UNEXEC */
+
+#endif /* not CANNOT_DUMP */
diff --git a/obsolete/support/undump/Encore/unexec.c-dist b/obsolete/support/undump/Encore/unexec.c-dist
new file mode 100644
index 0000000000..9855e90485
--- /dev/null
+++ b/obsolete/support/undump/Encore/unexec.c-dist
@@ -0,0 +1,1134 @@
+/* Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
+
+ NO WARRANTY
+
+ BECAUSE THIS PROGRAM IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
+NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
+WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC,
+RICHARD M. STALLMAN AND/OR OTHER PARTIES PROVIDE THIS PROGRAM "AS IS"
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY
+AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
+STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., AND/OR ANY OTHER PARTY
+WHO MAY MODIFY AND REDISTRIBUTE THIS PROGRAM AS PERMITTED BELOW, BE
+LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR
+OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
+DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR
+A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) THIS
+PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.
+
+ GENERAL PUBLIC LICENSE TO COPY
+
+ 1. You may copy and distribute verbatim copies of this source file
+as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy a valid copyright notice "Copyright
+(C) 1987 Free Software Foundation, Inc."; and include following the
+copyright notice a verbatim copy of the above disclaimer of warranty
+and of this License. You may charge a distribution fee for the
+physical act of transferring a copy.
+
+ 2. You may modify your copy or copies of this source file or
+any portion of it, and copy and distribute such modifications under
+the terms of Paragraph 1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating
+ that you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish,
+ that in whole or in part contains or is a derivative of this
+ program or any part thereof, to be licensed at no charge to all
+ third parties on terms identical to those contained in this
+ License Agreement (except that you may choose to grant more
+ extensive warranty protection to third parties, at your option).
+
+ c) You may charge a distribution fee for the physical act of
+ transferring a copy, and you may at your option offer warranty
+ protection in exchange for a fee.
+
+ 3. You may copy and distribute this program or any portion of it in
+compiled, executable or object code form under the terms of Paragraphs
+1 and 2 above provided that you do the following:
+
+ a) cause each such copy to be accompanied by the
+ corresponding machine-readable source code, which must
+ be distributed under the terms of Paragraphs 1 and 2 above; or,
+
+ b) cause each such copy to be accompanied by a
+ written offer, with no time limit, to give any third party
+ free (except for a nominal shipping charge) a machine readable
+ copy of the corresponding source code, to be distributed
+ under the terms of Paragraphs 1 and 2 above; or,
+
+ c) in the case of a recipient of this program in compiled, executable
+ or object code form (without the corresponding source code) you
+ shall cause copies you distribute to be accompanied by a copy
+ of the written offer of source code which you received along
+ with the copy you received.
+
+ 4. You may not copy, sublicense, distribute or transfer this program
+except as expressly provided under this License Agreement. Any attempt
+otherwise to copy, sublicense, distribute or transfer this program is void and
+your rights to use the program under this License agreement shall be
+automatically terminated. However, parties who have received computer
+software programs from you with this License Agreement will not have
+their licenses terminated so long as such parties remain in full compliance.
+
+ 5. If you wish to incorporate parts of this program into other free
+programs whose distribution conditions are different, write to the Free
+Software Foundation at 675 Mass Ave, Cambridge, MA 02139. We have not yet
+worked out a simple rule that can be stated here, but we will often permit
+this. We will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software.
+
+
+In other words, you are welcome to use, share and improve this program.
+You are forbidden to forbid anyone else to use, share and improve
+what you give them. Help stamp out software-hoarding! */
+
+
+/*
+ * unexec.c - Convert a running program into an a.out file.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Tue Mar 2 1982
+ * Modified heavily since then.
+ *
+ * Synopsis:
+ * unexec (new_name, a_name, data_start, bss_start, entry_address)
+ * char *new_name, *a_name;
+ * unsigned data_start, bss_start, entry_address;
+ *
+ * Takes a snapshot of the program and makes an a.out format file in the
+ * file named by the string argument new_name.
+ * If a_name is non-NULL, the symbol table will be taken from the given file.
+ * On some machines, an existing a_name file is required.
+ *
+ * The boundaries within the a.out file may be adjusted with the data_start
+ * and bss_start arguments. Either or both may be given as 0 for defaults.
+ *
+ * Data_start gives the boundary between the text segment and the data
+ * segment of the program. The text segment can contain shared, read-only
+ * program code and literal data, while the data segment is always unshared
+ * and unprotected. Data_start gives the lowest unprotected address.
+ * The value you specify may be rounded down to a suitable boundary
+ * as required by the machine you are using.
+ *
+ * Specifying zero for data_start means the boundary between text and data
+ * should not be the same as when the program was loaded.
+ * If NO_REMAP is defined, the argument data_start is ignored and the
+ * segment boundaries are never changed.
+ *
+ * Bss_start indicates how much of the data segment is to be saved in the
+ * a.out file and restored when the program is executed. It gives the lowest
+ * unsaved address, and is rounded up to a page boundary. The default when 0
+ * is given assumes that the entire data segment is to be stored, including
+ * the previous data and bss as well as any additional storage allocated with
+ * break (2).
+ *
+ * The new file is set up to start at entry_address.
+ *
+ * If you make improvements I'd like to get them too.
+ * harpo!utah-cs!thomas, thomas@Utah-20
+ *
+ */
+
+/* There are several compilation parameters affecting unexec:
+
+* COFF
+
+Define this if your system uses COFF for executables.
+Otherwise we assume you use Berkeley format.
+
+* NO_REMAP
+
+Define this if you do not want to try to save Emacs's pure data areas
+as part of the text segment.
+
+Saving them as text is good because it allows users to share more.
+
+However, on machines that locate the text area far from the data area,
+the boundary cannot feasibly be moved. Such machines require
+NO_REMAP.
+
+Also, remapping can cause trouble with the built-in startup routine
+/lib/crt0.o, which defines `environ' as an initialized variable.
+Dumping `environ' as pure does not work! So, to use remapping,
+you must write a startup routine for your machine in Emacs's crt0.c.
+If NO_REMAP is defined, Emacs uses the system's crt0.o.
+
+* SECTION_ALIGNMENT
+
+Some machines that use COFF executables require that each section
+start on a certain boundary *in the COFF file*. Such machines should
+define SECTION_ALIGNMENT to a mask of the low-order bits that must be
+zero on such a boundary. This mask is used to control padding between
+segments in the COFF file.
+
+If SECTION_ALIGNMENT is not defined, the segments are written
+consecutively with no attempt at alignment. This is right for
+unmodified system V.
+
+* SEGMENT_MASK
+
+Some machines require that the beginnings and ends of segments
+*in core* be on certain boundaries. For most machines, a page
+boundary is sufficient. That is the default. When a larger
+boundary is needed, define SEGMENT_MASK to a mask of
+the bits that must be zero on such a boundary.
+
+* A_TEXT_OFFSET(HDR)
+
+Some machines count the a.out header as part of the size of the text
+segment (a_text); they may actually load the header into core as the
+first data in the text segment. Some have additional padding between
+the header and the real text of the program that is counted in a_text.
+
+For these machines, define A_TEXT_OFFSET(HDR) to examine the header
+structure HDR and return the number of bytes to add to `a_text'
+before writing it (above and beyond the number of bytes of actual
+program text). HDR's standard fields are already correct, except that
+this adjustment to the `a_text' field has not yet been made;
+thus, the amount of offset can depend on the data in the file.
+
+* A_TEXT_SEEK(HDR)
+
+If defined, this macro specifies the number of bytes to seek into the
+a.out file before starting to write the text segment.a
+
+* EXEC_MAGIC
+
+For machines using COFF, this macro, if defined, is a value stored
+into the magic number field of the output file.
+
+* ADJUST_EXEC_HEADER
+
+This macro can be used to generate statements to adjust or
+initialize nonstandard fields in the file header
+
+* ADDR_CORRECT(ADDR)
+
+Macro to correct an int which is the bit pattern of a pointer to a byte
+into an int which is the number of a byte.
+
+This macro has a default definition which is usually right.
+This default definition is a no-op on most machines (where a
+pointer looks like an int) but not on all machines.
+
+*/
+
+#ifndef emacs
+#define PERROR(arg) perror (arg); return -1
+#else
+#include "config.h"
+#define PERROR(file) report_error (file, new)
+#endif
+
+#ifndef CANNOT_DUMP /* all rest of file! */
+
+#ifndef CANNOT_UNEXEC /* most of rest of file */
+
+#ifndef mips /* mips machine requires completely separate code. */
+
+#include <a.out.h>
+/* Define getpagesize () if the system does not.
+ Note that this may depend on symbols defined in a.out.h
+ */
+#include "getpagesize.h"
+
+#ifndef makedev /* Try to detect types.h already loaded */
+#include <sys/types.h>
+#endif
+#include <stdio.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+extern char *start_of_text (); /* Start of text */
+extern char *start_of_data (); /* Start of initialized data */
+
+#ifdef COFF
+#ifndef USG
+#ifndef STRIDE
+#ifndef UMAX
+/* I have a suspicion that these are turned off on all systems
+ and can be deleted. Try it in version 19. */
+#include <filehdr.h>
+#include <aouthdr.h>
+#include <scnhdr.h>
+#include <syms.h>
+#endif /* not UMAX */
+#endif /* Not STRIDE */
+#endif /* not USG */
+static long block_copy_start; /* Old executable start point */
+static struct filehdr f_hdr; /* File header */
+static struct aouthdr f_ohdr; /* Optional file header (a.out) */
+long bias; /* Bias to add for growth */
+long lnnoptr; /* Pointer to line-number info within file */
+#define SYMS_START block_copy_start
+
+static long text_scnptr;
+static long data_scnptr;
+
+#else /* not COFF */
+
+extern char *sbrk ();
+
+#define SYMS_START ((long) N_SYMOFF (ohdr))
+
+#ifdef HPUX
+#ifdef HP9000S200_ID
+#define MY_ID HP9000S200_ID
+#else
+#include <model.h>
+#define MY_ID MYSYS
+#endif /* no HP9000S200_ID */
+static MAGIC OLDMAGIC = {MY_ID, SHARE_MAGIC};
+static MAGIC NEWMAGIC = {MY_ID, DEMAND_MAGIC};
+#define N_TXTOFF(x) TEXT_OFFSET(x)
+#define N_SYMOFF(x) LESYM_OFFSET(x)
+static struct exec hdr, ohdr;
+
+#else /* not HPUX */
+
+#if defined (USG) && !defined (IRIS)
+static struct bhdr hdr, ohdr;
+#define a_magic fmagic
+#define a_text tsize
+#define a_data dsize
+#define a_bss bsize
+#define a_syms ssize
+#define a_trsize rtsize
+#define a_drsize rdsize
+#define a_entry entry
+#define N_BADMAG(x) \
+ (((x).fmagic)!=OMAGIC && ((x).fmagic)!=NMAGIC &&\
+ ((x).fmagic)!=FMAGIC && ((x).fmagic)!=IMAGIC)
+#define NEWMAGIC FMAGIC
+#else /* IRIS or not USG */
+static struct exec hdr, ohdr;
+#define NEWMAGIC ZMAGIC
+#endif /* IRIS or not USG */
+#endif /* not HPUX */
+
+static int unexec_text_start;
+static int unexec_data_start;
+
+#endif /* not COFF */
+
+static int pagemask;
+
+/* Correct an int which is the bit pattern of a pointer to a byte
+ into an int which is the number of a byte.
+ This is a no-op on ordinary machines, but not on all. */
+
+#ifndef ADDR_CORRECT /* Let m-*.h files override this definition */
+#define ADDR_CORRECT(x) ((char *)(x) - (char*)0)
+#endif
+
+#ifdef emacs
+
+static
+report_error (file, fd)
+ char *file;
+ int fd;
+{
+ if (fd)
+ close (fd);
+ error ("Failure operating on %s", file);
+}
+#endif /* emacs */
+
+#define ERROR0(msg) report_error_1 (new, msg, 0, 0); return -1
+#define ERROR1(msg,x) report_error_1 (new, msg, x, 0); return -1
+#define ERROR2(msg,x,y) report_error_1 (new, msg, x, y); return -1
+
+static
+report_error_1 (fd, msg, a1, a2)
+ int fd;
+ char *msg;
+ int a1, a2;
+{
+ close (fd);
+#ifdef emacs
+ error (msg, a1, a2);
+#else
+ fprintf (stderr, msg, a1, a2);
+ fprintf (stderr, "\n");
+#endif
+}
+
+/* ****************************************************************
+ * unexec
+ *
+ * driving logic.
+ */
+unexec (new_name, a_name, data_start, bss_start, entry_address)
+ char *new_name, *a_name;
+ unsigned data_start, bss_start, entry_address;
+{
+ int new, a_out = -1;
+
+ if (a_name && (a_out = open (a_name, 0)) < 0)
+ {
+ PERROR (a_name);
+ }
+ if ((new = creat (new_name, 0666)) < 0)
+ {
+ PERROR (new_name);
+ }
+
+ if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) < 0
+ || copy_text_and_data (new) < 0
+ || copy_sym (new, a_out, a_name, new_name) < 0
+#ifdef COFF
+ || adjust_lnnoptrs (new, a_out, new_name) < 0
+#endif
+ )
+ {
+ close (new);
+ /* unlink (new_name); /* Failed, unlink new a.out */
+ return -1;
+ }
+
+ close (new);
+ if (a_out >= 0)
+ close (a_out);
+ mark_x (new_name);
+ return 0;
+}
+
+/* ****************************************************************
+ * make_hdr
+ *
+ * Make the header in the new a.out from the header in core.
+ * Modify the text and data sizes.
+ */
+static int
+make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name)
+ int new, a_out;
+ unsigned data_start, bss_start, entry_address;
+ char *a_name;
+ char *new_name;
+{
+ int tem;
+#ifdef COFF
+ auto struct scnhdr f_thdr; /* Text section header */
+ auto struct scnhdr f_dhdr; /* Data section header */
+ auto struct scnhdr f_bhdr; /* Bss section header */
+ auto struct scnhdr scntemp; /* Temporary section header */
+ register int scns;
+#endif /* COFF */
+ unsigned int bss_end;
+
+ pagemask = getpagesize () - 1;
+
+ /* Adjust text/data boundary. */
+#ifdef NO_REMAP
+ data_start = (int) start_of_data ();
+#else /* not NO_REMAP */
+ if (!data_start)
+ data_start = (int) start_of_data ();
+#endif /* not NO_REMAP */
+ data_start = ADDR_CORRECT (data_start);
+
+#ifdef SEGMENT_MASK
+ data_start = data_start & ~SEGMENT_MASK; /* (Down) to segment boundary. */
+#else
+ data_start = data_start & ~pagemask; /* (Down) to page boundary. */
+#endif
+
+ bss_end = ADDR_CORRECT (sbrk (0)) + pagemask;
+ bss_end &= ~ pagemask;
+
+ /* Adjust data/bss boundary. */
+ if (bss_start != 0)
+ {
+ bss_start = (ADDR_CORRECT (bss_start) + pagemask);
+ /* (Up) to page bdry. */
+ bss_start &= ~ pagemask;
+ if (bss_start > bss_end)
+ {
+ ERROR1 ("unexec: Specified bss_start (%u) is past end of program",
+ bss_start);
+ }
+ }
+ else
+ bss_start = bss_end;
+
+ if (data_start > bss_start) /* Can't have negative data size. */
+ {
+ ERROR2 ("unexec: data_start (%u) can't be greater than bss_start (%u)",
+ data_start, bss_start);
+ }
+
+#ifdef COFF
+ /* Salvage as much info from the existing file as possible */
+ if (a_out >= 0)
+ {
+ if (read (a_out, &f_hdr, sizeof (f_hdr)) != sizeof (f_hdr))
+ {
+ PERROR (a_name);
+ }
+ block_copy_start += sizeof (f_hdr);
+ if (f_hdr.f_opthdr > 0)
+ {
+ if (read (a_out, &f_ohdr, sizeof (f_ohdr)) != sizeof (f_ohdr))
+ {
+ PERROR (a_name);
+ }
+ block_copy_start += sizeof (f_ohdr);
+ }
+ /* Loop through section headers, copying them in */
+ for (scns = f_hdr.f_nscns; scns > 0; scns--) {
+ if (read (a_out, &scntemp, sizeof (scntemp)) != sizeof (scntemp))
+ {
+ PERROR (a_name);
+ }
+ if (scntemp.s_scnptr > 0L)
+ {
+ if (block_copy_start < scntemp.s_scnptr + scntemp.s_size)
+ block_copy_start = scntemp.s_scnptr + scntemp.s_size;
+ }
+ if (strcmp (scntemp.s_name, ".text") == 0)
+ {
+ f_thdr = scntemp;
+ }
+ else if (strcmp (scntemp.s_name, ".data") == 0)
+ {
+ f_dhdr = scntemp;
+ }
+ else if (strcmp (scntemp.s_name, ".bss") == 0)
+ {
+ f_bhdr = scntemp;
+ }
+ }
+ }
+ else
+ {
+ ERROR0 ("can't build a COFF file from scratch yet");
+ }
+
+ /* Now we alter the contents of all the f_*hdr variables
+ to correspond to what we want to dump. */
+
+ f_hdr.f_flags |= (F_RELFLG | F_EXEC);
+#ifdef EXEC_MAGIC
+ f_ohdr.magic = EXEC_MAGIC;
+#endif
+#ifndef NO_REMAP
+ f_ohdr.text_start = (long) start_of_text ();
+ f_ohdr.tsize = data_start - f_ohdr.text_start;
+ f_ohdr.data_start = data_start;
+#endif /* NO_REMAP */
+ f_ohdr.dsize = bss_start - f_ohdr.data_start;
+ f_ohdr.bsize = bss_end - bss_start;
+ f_thdr.s_size = f_ohdr.tsize;
+ f_thdr.s_scnptr = sizeof (f_hdr) + sizeof (f_ohdr);
+ f_thdr.s_scnptr += (f_hdr.f_nscns) * (sizeof (f_thdr));
+ lnnoptr = f_thdr.s_lnnoptr;
+#ifdef SECTION_ALIGNMENT
+ /* Some systems require special alignment
+ of the sections in the file itself. */
+ f_thdr.s_scnptr
+ = (f_thdr.s_scnptr + SECTION_ALIGNMENT) & ~SECTION_ALIGNMENT;
+#endif /* SECTION_ALIGNMENT */
+ text_scnptr = f_thdr.s_scnptr;
+ f_dhdr.s_paddr = f_ohdr.data_start;
+ f_dhdr.s_vaddr = f_ohdr.data_start;
+ f_dhdr.s_size = f_ohdr.dsize;
+ f_dhdr.s_scnptr = f_thdr.s_scnptr + f_thdr.s_size;
+#ifdef SECTION_ALIGNMENT
+ /* Some systems require special alignment
+ of the sections in the file itself. */
+ f_dhdr.s_scnptr
+ = (f_dhdr.s_scnptr + SECTION_ALIGNMENT) & ~SECTION_ALIGNMENT;
+#endif /* SECTION_ALIGNMENT */
+ data_scnptr = f_dhdr.s_scnptr;
+ f_bhdr.s_paddr = f_ohdr.data_start + f_ohdr.dsize;
+ f_bhdr.s_vaddr = f_ohdr.data_start + f_ohdr.dsize;
+ f_bhdr.s_size = f_ohdr.bsize;
+ f_bhdr.s_scnptr = 0L;
+ bias = f_dhdr.s_scnptr + f_dhdr.s_size - block_copy_start;
+
+ if (f_hdr.f_symptr > 0L)
+ {
+ f_hdr.f_symptr += bias;
+ }
+
+ if (f_thdr.s_lnnoptr > 0L)
+ {
+ f_thdr.s_lnnoptr += bias;
+ }
+
+#ifdef ADJUST_EXEC_HEADER
+ ADJUST_EXEC_HEADER
+#endif /* ADJUST_EXEC_HEADER */
+
+ if (write (new, &f_hdr, sizeof (f_hdr)) != sizeof (f_hdr))
+ {
+ PERROR (new_name);
+ }
+
+ if (write (new, &f_ohdr, sizeof (f_ohdr)) != sizeof (f_ohdr))
+ {
+ PERROR (new_name);
+ }
+
+ if (write (new, &f_thdr, sizeof (f_thdr)) != sizeof (f_thdr))
+ {
+ PERROR (new_name);
+ }
+
+ if (write (new, &f_dhdr, sizeof (f_dhdr)) != sizeof (f_dhdr))
+ {
+ PERROR (new_name);
+ }
+
+ if (write (new, &f_bhdr, sizeof (f_bhdr)) != sizeof (f_bhdr))
+ {
+ PERROR (new_name);
+ }
+ return (0);
+
+#else /* if not COFF */
+
+ /* Get symbol table info from header of a.out file if given one. */
+ if (a_out >= 0)
+ {
+ if (read (a_out, &ohdr, sizeof hdr) != sizeof hdr)
+ {
+ PERROR (a_name);
+ }
+
+ if N_BADMAG (ohdr)
+ {
+ ERROR1 ("invalid magic number in %s", a_name);
+ }
+ hdr = ohdr;
+ }
+ else
+ {
+ bzero (hdr, sizeof hdr);
+ }
+
+ unexec_text_start = (long) start_of_text ();
+ unexec_data_start = data_start;
+
+ /* Machine-dependent fixup for header, or maybe for unexec_text_start */
+#ifdef ADJUST_EXEC_HEADER
+ ADJUST_EXEC_HEADER;
+#endif /* ADJUST_EXEC_HEADER */
+
+ hdr.a_trsize = 0;
+ hdr.a_drsize = 0;
+ if (entry_address != 0)
+ hdr.a_entry = entry_address;
+
+ hdr.a_bss = bss_end - bss_start;
+ hdr.a_data = bss_start - data_start;
+#ifdef NO_REMAP
+ hdr.a_text = ohdr.a_text;
+#else /* not NO_REMAP */
+ hdr.a_text = data_start - unexec_text_start;
+#endif /* not NO_REMAP */
+
+#ifdef A_TEXT_OFFSET
+ hdr.a_text += A_TEXT_OFFSET (ohdr);
+#endif
+
+ if (write (new, &hdr, sizeof hdr) != sizeof hdr)
+ {
+ PERROR (new_name);
+ }
+
+#ifdef A_TEXT_OFFSET
+ hdr.a_text -= A_TEXT_OFFSET (ohdr);
+#endif
+
+ return 0;
+
+#endif /* not COFF */
+}
+
+/* ****************************************************************
+ * copy_text_and_data
+ *
+ * Copy the text and data segments from memory to the new a.out
+ */
+static int
+copy_text_and_data (new)
+ int new;
+{
+ register char *end;
+ register char *ptr;
+
+#ifdef COFF
+ lseek (new, (long) text_scnptr, 0);
+ ptr = (char *) f_ohdr.text_start;
+ end = ptr + f_ohdr.tsize;
+ write_segment (new, ptr, end);
+
+ lseek (new, (long) data_scnptr, 0);
+ ptr = (char *) f_ohdr.data_start;
+ end = ptr + f_ohdr.dsize;
+ write_segment (new, ptr, end);
+
+#else /* if not COFF */
+
+/* Some machines count the header as part of the text segment.
+ That is to say, the header appears in core
+ just before the address that start_of_text () returns.
+ For them, N_TXTOFF is the place where the header goes.
+ We must adjust the seek to the place after the header.
+ Note that at this point hdr.a_text does *not* count
+ the extra A_TEXT_OFFSET bytes, only the actual bytes of code. */
+
+#ifdef A_TEXT_SEEK
+ lseek (new, (long) A_TEXT_SEEK (hdr), 0);
+#else
+#ifdef A_TEXT_OFFSET
+ /* Note that on the Sequent machine A_TEXT_OFFSET != sizeof (hdr)
+ and sizeof (hdr) is the correct amount to add here. */
+ /* In version 19, eliminate this case and use A_TEXT_SEEK whenever
+ N_TXTOFF is not right. */
+ lseek (new, (long) N_TXTOFF (hdr) + sizeof (hdr), 0);
+#else
+ lseek (new, (long) N_TXTOFF (hdr), 0);
+#endif /* no A_TEXT_OFFSET */
+#endif /* no A_TEXT_SEEK */
+
+ ptr = (char *) unexec_text_start;
+ end = ptr + hdr.a_text;
+ write_segment (new, ptr, end);
+
+ ptr = (char *) unexec_data_start;
+ end = ptr + hdr.a_data;
+/* This lseek is certainly incorrect when A_TEXT_OFFSET
+ and I believe it is a no-op otherwise.
+ Let's see if its absence ever fails. */
+/* lseek (new, (long) N_TXTOFF (hdr) + hdr.a_text, 0); */
+ write_segment (new, ptr, end);
+
+#endif /* not COFF */
+
+ return 0;
+}
+
+write_segment (new, ptr, end)
+ int new;
+ register char *ptr, *end;
+{
+ register int i, nwrite, ret;
+ char buf[80];
+ extern int errno;
+ char zeros[128];
+
+ bzero (zeros, sizeof zeros);
+
+ for (i = 0; ptr < end;)
+ {
+ /* distance to next multiple of 128. */
+ nwrite = (((int) ptr + 128) & -128) - (int) ptr;
+ /* But not beyond specified end. */
+ if (nwrite > end - ptr) nwrite = end - ptr;
+ ret = write (new, ptr, nwrite);
+ /* If write gets a page fault, it means we reached
+ a gap between the old text segment and the old data segment.
+ This gap has probably been remapped into part of the text segment.
+ So write zeros for it. */
+ if (ret == -1 && errno == EFAULT)
+ write (new, zeros, nwrite);
+ else if (nwrite != ret)
+ {
+ sprintf (buf,
+ "unexec write failure: addr 0x%x, fileno %d, size 0x%x, wrote 0x%x, errno %d",
+ ptr, new, nwrite, ret, errno);
+ PERROR (buf);
+ }
+ i += nwrite;
+ ptr += nwrite;
+ }
+}
+
+/* ****************************************************************
+ * copy_sym
+ *
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+static int
+copy_sym (new, a_out, a_name, new_name)
+ int new, a_out;
+ char *a_name, *new_name;
+{
+ char page[1024];
+ int n;
+
+ if (a_out < 0)
+ return 0;
+
+#ifdef COFF
+ if (SYMS_START == 0L)
+ return 0;
+#endif /* COFF */
+
+#ifdef COFF
+ if (lnnoptr) /* if there is line number info */
+ lseek (a_out, lnnoptr, 0); /* start copying from there */
+ else
+#endif /* COFF */
+ lseek (a_out, SYMS_START, 0); /* Position a.out to symtab. */
+
+ while ((n = read (a_out, page, sizeof page)) > 0)
+ {
+ if (write (new, page, n) != n)
+ {
+ PERROR (new_name);
+ }
+ }
+ if (n < 0)
+ {
+ PERROR (a_name);
+ }
+ return 0;
+}
+
+/* ****************************************************************
+ * mark_x
+ *
+ * After succesfully building the new a.out, mark it executable
+ */
+static
+mark_x (name)
+ char *name;
+{
+ struct stat sbuf;
+ int um;
+ int new = 0; /* for PERROR */
+
+ um = umask (777);
+ umask (um);
+ if (stat (name, &sbuf) == -1)
+ {
+ PERROR (name);
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod (name, sbuf.st_mode) == -1)
+ PERROR (name);
+}
+
+/*
+ * If the COFF file contains a symbol table and a line number section,
+ * then any auxiliary entries that have values for x_lnnoptr must
+ * be adjusted by the amount that the line number section has moved
+ * in the file (bias computed in make_hdr). The #@$%&* designers of
+ * the auxiliary entry structures used the absolute file offsets for
+ * the line number entry rather than an offset from the start of the
+ * line number section!
+ *
+ * When I figure out how to scan through the symbol table and pick out
+ * the auxiliary entries that need adjustment, this routine will
+ * be fixed. As it is now, all such entries are wrong and sdb
+ * will complain. Fred Fish, UniSoft Systems Inc.
+ */
+
+#ifdef COFF
+
+/* This function is probably very slow. Instead of reopening the new
+ file for input and output it should copy from the old to the new
+ using the two descriptors already open (WRITEDESC and READDESC).
+ Instead of reading one small structure at a time it should use
+ a reasonable size buffer. But I don't have time to work on such
+ things, so I am installing it as submitted to me. -- RMS. */
+
+adjust_lnnoptrs (writedesc, readdesc, new_name)
+ int writedesc;
+ int readdesc;
+ char *new_name;
+{
+ register int nsyms;
+ register int new;
+#ifdef amdahl_uts
+ SYMENT symentry;
+ AUXENT auxentry;
+#else
+ struct syment symentry;
+ struct auxent auxentry;
+#endif
+
+ if (!lnnoptr || !f_hdr.f_symptr)
+ return 0;
+
+ if ((new = open (new_name, 2)) < 0)
+ {
+ PERROR (new_name);
+ return -1;
+ }
+
+ lseek (new, f_hdr.f_symptr, 0);
+ for (nsyms = 0; nsyms < f_hdr.f_nsyms; nsyms++)
+ {
+ read (new, &symentry, SYMESZ);
+ if (symentry.n_numaux)
+ {
+ read (new, &auxentry, AUXESZ);
+ nsyms++;
+ if (ISFCN (symentry.n_type)) {
+ auxentry.x_sym.x_fcnary.x_fcn.x_lnnoptr += bias;
+ lseek (new, -AUXESZ, 1);
+ write (new, &auxentry, AUXESZ);
+ }
+ }
+ }
+ close (new);
+}
+
+#endif /* COFF */
+
+
+#else /* mips */
+
+/* Unexec for mips machines.
+ Note that I regard it as the responsibility of people at Mips
+ to tell me about any changes that need to be made in this code.
+ I won't take responsibility to think about it even if a change
+ I make elsewhere causes it to break. -- RMS. */
+
+#include <sys/types.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <varargs.h>
+#include <filehdr.h>
+#include <aouthdr.h>
+#include <scnhdr.h>
+#include <sym.h>
+
+#define private static
+
+extern int errno;
+extern int sys_nerr;
+extern char *sys_errlist[];
+#define EEOF -1
+
+private void
+fatal(s, va_alist)
+ va_dcl
+{
+ va_list ap;
+ if (errno == EEOF) {
+ fputs("unexec: unexpected end of file, ", stderr);
+ }
+ else if (errno < sys_nerr) {
+ fprintf(stderr, "unexec: %s, ", sys_errlist[errno]);
+ }
+ else {
+ fprintf(stderr, "unexec: error code %d, ", errno);
+ }
+ va_start(ap);
+ _doprnt(s, ap, stderr);
+ fputs(".\n", stderr);
+ exit(1);
+}
+
+#define READ(_fd, _buffer, _size, _error_message, _error_arg) \
+ errno = EEOF; \
+ if (read(_fd, _buffer, _size) != _size) \
+ fatal(_error_message, _error_arg);
+
+#define WRITE(_fd, _buffer, _size, _error_message, _error_arg) \
+ if (write(_fd, _buffer, _size) != _size) \
+ fatal(_error_message, _error_arg);
+
+#define SEEK(_fd, _position, _error_message, _error_arg) \
+ errno = EEOF; \
+ if (lseek(_fd, _position, L_SET) != _position) \
+ fatal(_error_message, _error_arg);
+
+struct headers {
+ struct filehdr fhdr;
+ struct aouthdr aout;
+ struct scnhdr text_section;
+ struct scnhdr rdata_section;
+ struct scnhdr data_section;
+ struct scnhdr sdata_section;
+ struct scnhdr sbss_section;
+ struct scnhdr bss_section;
+};
+
+unexec (new_name, a_name, data_start, bss_start, entry_address)
+ char *new_name, *a_name;
+ unsigned data_start, bss_start, entry_address;
+{
+ int new, old;
+ int pagesize, brk;
+ int newsyms, symrel;
+ int nread;
+ struct headers hdr;
+#define BUFSIZE 8192
+ char buffer[BUFSIZE];
+
+ old = open (a_name, O_RDONLY, 0);
+ if (old < 0) fatal("openning %s", a_name);
+
+ new = creat (new_name, 0666);
+ if (new < 0) fatal("creating %s", new_name);
+
+ hdr = *((struct headers *)TEXT_START);
+ if (hdr.fhdr.f_magic != MIPSELMAGIC
+ && hdr.fhdr.f_magic != MIPSEBMAGIC) {
+ fprintf(stderr, "unexec: input file magic number is %x, not %x or %x.\n",
+ hdr.fhdr.f_magic, MIPSELMAGIC, MIPSEBMAGIC);
+ exit(1);
+ }
+ if (hdr.fhdr.f_opthdr != sizeof(hdr.aout)) {
+ fprintf(stderr, "unexec: input a.out header is %d bytes, not %d.\n",
+ hdr.fhdr.f_opthdr, sizeof(hdr.aout));
+ exit(1);
+ }
+#if 0
+ if (hdr.aout.magic != ZMAGIC
+ && hdr.aout.magic != NMAGIC
+ && hdr.aout.magic != OMAGIC) {
+ fprintf(stderr, "unexec: input file a.out magic number is %o, not %o, %o, or %o.\n",
+ hdr.aout.magic, ZMAGIC, NMAGIC, OMAGIC);
+ exit(1);
+ }
+#else
+ if (hdr.aout.magic != ZMAGIC) {
+ fprintf(stderr, "unexec: input file a.out magic number is %o, not %o.\n",
+ hdr.aout.magic, ZMAGIC);
+ exit(1);
+ }
+#endif
+ if (hdr.fhdr.f_nscns != 6) {
+ fprintf(stderr, "unexec: %d sections instead of 6.\n", hdr.fhdr.f_nscns);
+ }
+#define CHECK_SCNHDR(field, name, flags) \
+ if (strcmp(hdr.field.s_name, name) != 0) { \
+ fprintf(stderr, "unexec: %s section where %s expected.\n", \
+ hdr.field.s_name, name); \
+ exit(1); \
+ } \
+ else if (hdr.field.s_flags != flags) { \
+ fprintf(stderr, "unexec: %x flags where %x expected in %s section.\n", \
+ hdr.field.s_flags, flags, name); \
+ }
+ CHECK_SCNHDR(text_section, _TEXT, STYP_TEXT);
+ CHECK_SCNHDR(rdata_section, _RDATA, STYP_RDATA);
+ CHECK_SCNHDR(data_section, _DATA, STYP_DATA);
+ CHECK_SCNHDR(sdata_section, _SDATA, STYP_SDATA);
+ CHECK_SCNHDR(sbss_section, _SBSS, STYP_SBSS);
+ CHECK_SCNHDR(bss_section, _BSS, STYP_BSS);
+
+ pagesize = getpagesize();
+ brk = (sbrk(0) + pagesize - 1) & (-pagesize);
+ hdr.aout.dsize = brk - DATA_START;
+ hdr.aout.bsize = 0;
+ if (entry_address == 0) {
+ extern __start();
+ hdr.aout.entry = (unsigned)__start;
+ }
+ else {
+ hdr.aout.entry = entry_address;
+ }
+ hdr.aout.bss_start = hdr.aout.data_start + hdr.aout.dsize;
+ hdr.rdata_section.s_size = data_start - DATA_START;
+ hdr.data_section.s_vaddr = data_start;
+ hdr.data_section.s_paddr = data_start;
+ hdr.data_section.s_size = brk - DATA_START;
+ hdr.data_section.s_scnptr = hdr.rdata_section.s_scnptr
+ + hdr.rdata_section.s_size;
+ hdr.sdata_section.s_vaddr = hdr.data_section.s_vaddr
+ + hdr.data_section.s_size;
+ hdr.sdata_section.s_paddr = hdr.sdata_section.s_paddr;
+ hdr.sdata_section.s_size = 0;
+ hdr.sdata_section.s_scnptr = hdr.data_section.s_scnptr
+ + hdr.data_section.s_size;
+ hdr.sbss_section.s_vaddr = hdr.sdata_section.s_vaddr
+ + hdr.sdata_section.s_size;
+ hdr.sbss_section.s_paddr = hdr.sbss_section.s_vaddr;
+ hdr.sbss_section.s_size = 0;
+ hdr.sbss_section.s_scnptr = hdr.sdata_section.s_scnptr
+ + hdr.sdata_section.s_size;
+ hdr.bss_section.s_vaddr = hdr.sbss_section.s_vaddr
+ + hdr.sbss_section.s_size;
+ hdr.bss_section.s_paddr = hdr.bss_section.s_vaddr;
+ hdr.bss_section.s_size = 0;
+ hdr.bss_section.s_scnptr = hdr.sbss_section.s_scnptr
+ + hdr.sbss_section.s_size;
+
+ WRITE(new, TEXT_START, hdr.aout.tsize,
+ "writing text section to %s", new_name);
+ WRITE(new, DATA_START, hdr.aout.dsize,
+ "writing text section to %s", new_name);
+
+ SEEK(old, hdr.fhdr.f_symptr, "seeking to start of symbols in %s", a_name);
+ errno = EEOF;
+ nread = read(old, buffer, BUFSIZE);
+ if (nread < sizeof(HDRR)) fatal("reading symbols from %s", a_name);
+#define symhdr ((pHDRR)buffer)
+ newsyms = hdr.aout.tsize + hdr.aout.dsize;
+ symrel = newsyms - hdr.fhdr.f_symptr;
+ hdr.fhdr.f_symptr = newsyms;
+ symhdr->cbLineOffset += symrel;
+ symhdr->cbDnOffset += symrel;
+ symhdr->cbPdOffset += symrel;
+ symhdr->cbSymOffset += symrel;
+ symhdr->cbOptOffset += symrel;
+ symhdr->cbAuxOffset += symrel;
+ symhdr->cbSsOffset += symrel;
+ symhdr->cbSsExtOffset += symrel;
+ symhdr->cbFdOffset += symrel;
+ symhdr->cbRfdOffset += symrel;
+ symhdr->cbExtOffset += symrel;
+#undef symhdr
+ do {
+ if (write(new, buffer, nread) != nread)
+ fatal("writing symbols to %s", new_name);
+ nread = read(old, buffer, BUFSIZE);
+ if (nread < 0) fatal("reading symbols from %s", a_name);
+#undef BUFSIZE
+ } while (nread != 0);
+
+ SEEK(new, 0, "seeking to start of header in %s", new_name);
+ WRITE(new, &hdr, sizeof(hdr),
+ "writing header of %s", new_name);
+
+ close(old);
+ close(new);
+ mark_x(new_name);
+}
+
+/*
+ * mark_x
+ *
+ * After succesfully building the new a.out, mark it executable
+ */
+static
+mark_x (name)
+ char *name;
+{
+ struct stat sbuf;
+ int um = umask (777);
+ umask (um);
+ if (stat(name, &sbuf) < 0)
+ fatal("getting protection on %s", name);
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) < 0)
+ fatal("setting protection on %s", name);
+}
+
+#endif /* mips */
+
+#endif /* not CANNOT_UNEXEC */
+
+#endif /* not CANNOT_DUMP */
diff --git a/obsolete/support/undump/Encore/unexec.diff b/obsolete/support/undump/Encore/unexec.diff
new file mode 100644
index 0000000000..886d0bd42a
--- /dev/null
+++ b/obsolete/support/undump/Encore/unexec.diff
@@ -0,0 +1,91 @@
+*** unexec.c-dist Tue Sep 29 15:20:15 1987
+--- unexec.c Tue Sep 29 17:50:03 1987
+***************
+*** 428,433
+ register int scns;
+ #endif /* COFF */
+ unsigned int bss_end;
+
+ pagemask = getpagesize () - 1;
+
+
+--- 428,436 -----
+ register int scns;
+ #endif /* COFF */
+ unsigned int bss_end;
++ #ifdef UMAX
++ extern etext;
++ #endif
+
+ pagemask = getpagesize () - 1;
+
+***************
+*** 435,440
+ #ifdef NO_REMAP
+ data_start = (int) start_of_data ();
+ #else /* not NO_REMAP */
+ if (!data_start)
+ data_start = (int) start_of_data ();
+ #endif /* not NO_REMAP */
+
+--- 438,444 -----
+ #ifdef NO_REMAP
+ data_start = (int) start_of_data ();
+ #else /* not NO_REMAP */
++ #ifndef UMAX
+ if (!data_start)
+ #endif
+ data_start = (int) start_of_data ();
+***************
+*** 436,441
+ data_start = (int) start_of_data ();
+ #else /* not NO_REMAP */
+ if (!data_start)
+ data_start = (int) start_of_data ();
+ #endif /* not NO_REMAP */
+ data_start = ADDR_CORRECT (data_start);
+
+--- 440,446 -----
+ #else /* not NO_REMAP */
+ #ifndef UMAX
+ if (!data_start)
++ #endif
+ data_start = (int) start_of_data ();
+ #endif /* not NO_REMAP */
+ data_start = ADDR_CORRECT (data_start);
+***************
+*** 526,531
+ #endif
+ #ifndef NO_REMAP
+ f_ohdr.text_start = (long) start_of_text ();
+ f_ohdr.tsize = data_start - f_ohdr.text_start;
+ f_ohdr.data_start = data_start;
+ #endif /* NO_REMAP */
+
+--- 531,539 -----
+ #endif
+ #ifndef NO_REMAP
+ f_ohdr.text_start = (long) start_of_text ();
++ #ifdef UMAX
++ f_ohdr.tsize = (long) &etext;
++ #else
+ f_ohdr.tsize = data_start - f_ohdr.text_start;
+ #endif
+ f_ohdr.data_start = data_start;
+***************
+*** 527,532
+ #ifndef NO_REMAP
+ f_ohdr.text_start = (long) start_of_text ();
+ f_ohdr.tsize = data_start - f_ohdr.text_start;
+ f_ohdr.data_start = data_start;
+ #endif /* NO_REMAP */
+ f_ohdr.dsize = bss_start - f_ohdr.data_start;
+
+--- 535,541 -----
+ f_ohdr.tsize = (long) &etext;
+ #else
+ f_ohdr.tsize = data_start - f_ohdr.text_start;
++ #endif
+ f_ohdr.data_start = data_start;
+ #endif /* NO_REMAP */
+ f_ohdr.dsize = bss_start - f_ohdr.data_start;
diff --git a/obsolete/support/undump/Makefile.BALANCE b/obsolete/support/undump/Makefile.BALANCE
new file mode 100644
index 0000000000..fa377fed1f
--- /dev/null
+++ b/obsolete/support/undump/Makefile.BALANCE
@@ -0,0 +1,11 @@
+BINDIR=/usr/local/bin
+CFLAGS = -O
+
+undump: & undump.o scanargs.o
+ cc -o undump undump.o scanargs.o
+
+clean:
+ rm -f *.o
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Makefile.PYR b/obsolete/support/undump/Makefile.PYR
new file mode 100644
index 0000000000..a7db084836
--- /dev/null
+++ b/obsolete/support/undump/Makefile.PYR
@@ -0,0 +1,9 @@
+BINDIR=/usr/local/bin
+
+undump: undump.c
+ cc -O -o undump undump.c
+clean:
+ rm -f *.o undump
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Makefile.SUN4 b/obsolete/support/undump/Makefile.SUN4
new file mode 100644
index 0000000000..2aacc18bbf
--- /dev/null
+++ b/obsolete/support/undump/Makefile.SUN4
@@ -0,0 +1,14 @@
+BINDIR=/usr/local
+CFLAGS= -g -Dsun3
+
+undump: undump.o
+ cc $(CFLAGS) -o undump undump.o
+
+undump.o: undump.c
+ cc $(CFLAGS) -c undump.c
+
+clean:
+ rm -f *.o
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Makefile.SUN_V2 b/obsolete/support/undump/Makefile.SUN_V2
new file mode 100644
index 0000000000..b92f3af043
--- /dev/null
+++ b/obsolete/support/undump/Makefile.SUN_V2
@@ -0,0 +1,14 @@
+BINDIR=/usr/local
+CFLAGS= -g -Dsun3
+
+undump: undump.o scanargs.o
+ cc $(CFLAGS) -o undump undump.o scanargs.o
+
+undump.o: undump.c
+ cc $(CFLAGS) -c undump.c
+
+clean:
+ rm -f *.o
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Makefile.SUN_V3 b/obsolete/support/undump/Makefile.SUN_V3
new file mode 100644
index 0000000000..b92f3af043
--- /dev/null
+++ b/obsolete/support/undump/Makefile.SUN_V3
@@ -0,0 +1,14 @@
+BINDIR=/usr/local
+CFLAGS= -g -Dsun3
+
+undump: undump.o scanargs.o
+ cc $(CFLAGS) -o undump undump.o scanargs.o
+
+undump.o: undump.c
+ cc $(CFLAGS) -c undump.c
+
+clean:
+ rm -f *.o
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Makefile.SYS_V b/obsolete/support/undump/Makefile.SYS_V
new file mode 100644
index 0000000000..62831e78f3
--- /dev/null
+++ b/obsolete/support/undump/Makefile.SYS_V
@@ -0,0 +1,14 @@
+BINDIR=/usr/local
+CFLAGS= -O
+
+undump: undump.o
+ cc $(CFLAGS) -o undump undump.o
+
+undump.o: undump.c
+ cc $(CFLAGS) -c undump.c
+
+clean:
+ rm -f *.o
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Makefile.VAX4_2 b/obsolete/support/undump/Makefile.VAX4_2
new file mode 100644
index 0000000000..77de95bc65
--- /dev/null
+++ b/obsolete/support/undump/Makefile.VAX4_2
@@ -0,0 +1,13 @@
+BINDIR=/usr/local
+
+undump: undump.o scanargs.o
+ cc -O -o undump undump.o scanargs.o
+
+undump.o: undump.c
+ cc -O -c undump.c
+
+clean:
+ rm -f *.o
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Makefile.VAX4_3 b/obsolete/support/undump/Makefile.VAX4_3
new file mode 100644
index 0000000000..77de95bc65
--- /dev/null
+++ b/obsolete/support/undump/Makefile.VAX4_3
@@ -0,0 +1,13 @@
+BINDIR=/usr/local
+
+undump: undump.o scanargs.o
+ cc -O -o undump undump.o scanargs.o
+
+undump.o: undump.c
+ cc -O -c undump.c
+
+clean:
+ rm -f *.o
+
+install: undump
+ cp undump $(BINDIR)
diff --git a/obsolete/support/undump/Setup.BALANCE b/obsolete/support/undump/Setup.BALANCE
new file mode 100644
index 0000000000..9dcb1f3cbb
--- /dev/null
+++ b/obsolete/support/undump/Setup.BALANCE
@@ -0,0 +1,4 @@
+# /bin/sh
+# setup the ./undump area for Sequent Balance/DYNIX
+cp Makefile.BALANCE Makefile
+cp undump.BALANCE.c undump.c
diff --git a/obsolete/support/undump/Setup.PYR b/obsolete/support/undump/Setup.PYR
new file mode 100644
index 0000000000..907be482b0
--- /dev/null
+++ b/obsolete/support/undump/Setup.PYR
@@ -0,0 +1,7 @@
+#!/bin/sh
+# setup the ./undump area for Pyramid
+cp Makefile.PYR Makefile
+cp undump.PYR.c undump.c
+
+
+
diff --git a/obsolete/support/undump/Setup.SUN4 b/obsolete/support/undump/Setup.SUN4
new file mode 100644
index 0000000000..238b9de2d5
--- /dev/null
+++ b/obsolete/support/undump/Setup.SUN4
@@ -0,0 +1,5 @@
+#!/bin/sh
+# setup the ./undump area for Sun4
+cp Makefile.SUN4 Makefile
+cp undump.SUN4.c undump.c
+
diff --git a/obsolete/support/undump/Setup.SUN_V2 b/obsolete/support/undump/Setup.SUN_V2
new file mode 100644
index 0000000000..c79fcea64d
--- /dev/null
+++ b/obsolete/support/undump/Setup.SUN_V2
@@ -0,0 +1,5 @@
+#!/bin/sh
+# setup the ./undump area for Sun2 running O.S. 3.2 or above
+echo If you are not running O.S. 3.2, use Setup.VAX4_2 instead
+cp Makefile.SUN_V2 Makefile
+cp undump.SUN_V2.c undump.c
diff --git a/obsolete/support/undump/Setup.SUN_V3 b/obsolete/support/undump/Setup.SUN_V3
new file mode 100644
index 0000000000..1bf48da26d
--- /dev/null
+++ b/obsolete/support/undump/Setup.SUN_V3
@@ -0,0 +1,5 @@
+#!/bin/sh
+# setup the ./undump area for Sun3 running O.S. 3.0 or above
+cp Makefile.SUN_V3 Makefile
+cp undump.SUN_V3.c undump.c
+
diff --git a/obsolete/support/undump/Setup.SYS_V b/obsolete/support/undump/Setup.SYS_V
new file mode 100644
index 0000000000..1832a36228
--- /dev/null
+++ b/obsolete/support/undump/Setup.SYS_V
@@ -0,0 +1,5 @@
+#!/bin/sh
+# setup the ./undump area for System V
+cp Makefile.SYS_V Makefile
+cp undump.SYS_V.c undump.c
+
diff --git a/obsolete/support/undump/Setup.VAX4_2 b/obsolete/support/undump/Setup.VAX4_2
new file mode 100644
index 0000000000..3aae9fe29e
--- /dev/null
+++ b/obsolete/support/undump/Setup.VAX4_2
@@ -0,0 +1,5 @@
+#!/bin/sh
+# setup the ./undump area for Vax running BSD 4.2
+cp Makefile.VAX4_2 Makefile
+cp undump.VAX4_2.c undump.c
+
diff --git a/obsolete/support/undump/Setup.VAX4_3 b/obsolete/support/undump/Setup.VAX4_3
new file mode 100644
index 0000000000..bea5d5dd0b
--- /dev/null
+++ b/obsolete/support/undump/Setup.VAX4_3
@@ -0,0 +1,4 @@
+#!/bin/sh
+# setup the ./undump area for Vax running BSD 4.3
+cp Makefile.VAX4_3 Makefile
+cp undump.VAX4_3.c undump.c
diff --git a/obsolete/support/undump/scanargs.1 b/obsolete/support/undump/scanargs.1
new file mode 100644
index 0000000000..827788f4e3
--- /dev/null
+++ b/obsolete/support/undump/scanargs.1
@@ -0,0 +1,446 @@
+.TH SCANARGS 3 "AMPEX CORP."
+.SH NAME
+scanargs, qscanargs - formatted conversion from command argument list
+.SH SYNOPSIS
+.B "#include <stdio.h>"
+.PP
+.B "scanargs(argc, argv, format"
+[, pointer]...
+.B )
+.br
+.B "int argc;"
+.br
+.B "char *argv[];"
+.br
+.B "char *format;"
+.SH DESCRIPTION
+.I Scanargs
+reads
+.I argc
+arguments from an argument list pointed to by
+.I argv.
+It converts the argument list according to the format string,
+and stores the results of the conversions in its parameters.
+.I Qscanargs
+is a smaller and less powerful version which does not understand floating
+point.
+.PP
+Scanargs expects as its parameters an argument count
+.I argc,
+a pointer to an argument list
+.I argv
+(see
+.IR exec (2)),
+a control string
+.I format,
+described below, and a set of
+.I pointer
+arguments indicating where the converted output should be stored.
+.PP
+The control string contains specifications, which are used to direct
+interpretation of argument sequences. It contains
+the necessary information to describe an acceptable
+syntax for the argument list, and the expected meaning of each argument.
+.PP
+If the scanning fails it will print a cryptic
+message telling why it failed, and generate a
+.I usage
+message from the control string.
+.PP
+The control string is composed of two parts:
+.PP
+.B Name:\ \
+The first characters in the string are assumed to be the calling
+name of the program being executed. This is used for generation of
+usage messages, but is otherwise ignored.
+If this field is a % sign, it is replaced with the contents of
+.IR argv [0]
+in the message.
+.PP
+.B Conversions:\ \
+Following the name, an optional list of conversion specifications is given,
+with separating spaces. The structure of a conversion specification:
+.RS
+.PP
+.B "label_key_conversion"
+.RE
+.PP
+consists of a
+.I label
+which is a string of non-space characters describing the acceptable
+argument, a
+.I key
+which may be either of
+.TP 4
+.B %
+The argument is optional. Its absence is ignored.
+.TP 4
+.B !
+A required argument. If absent, an error return ensues.
+.PP
+and a
+.I conversion
+character which indicates the interpretation of the argument; the corresponding
+pointer parameter must be of a restricted type.
+.PP
+The following conversion characters are supported:
+.TP 4
+.B d D
+a decimal integer is expected; the corresponding parameter should be an
+.I int
+or a
+.I long
+(if
+.B D
+is specified) pointer.
+.TP 4
+.B o O
+an octal integer is expected; the corresponding parameter should be an
+.I int
+or a
+.I long
+pointer.
+.TP 4
+.B x X
+a hexadecimal integer is expected; the corresponding parameter should be an
+.I int
+or a
+.I long
+pointer.
+.TP 4
+.B n N
+an integer numeric conversion using
+.I C
+language syntax. Numbers beginning
+.B 0x
+are hexadecimal, numbers beginning
+.B 0
+are octal, and other numbers are decimal. Negative hex numbers must have
+the minus sign
+.I following
+the
+.BR 0x ,
+i.e. negative 0xa would be given as 0x\-a. The corresponding pointer
+should point to an
+.I int
+or a
+.I long.
+.TP 4
+.B f F
+a floating point number is expected; the corresponding parameter should
+be a pointer to a
+.I float
+or a
+.I double.
+Not available in
+.I qscanargs.
+.TP 4
+.B "x X d D o O f F"
+all numeric types supported by
+.I scanf(3S)
+are legal in
+.I scanargs;
+.I qscanargs
+supports all but
+.B f
+and
+.B F
+formats, and avoids including the large size of the
+.I scanf
+routine.
+.TP 4
+.B s
+a character string is expected; the corresponding parameter should be the
+address of a pointer to
+.I char.
+.TP 4
+.B \-
+a single character flag is expected; the corresponding parameter should
+be an
+.I int
+pointer. The occurrence of a
+.B \-
+followed by the character specified in the label
+will cause the setting of the least significant bit of the integer pointed to
+by the corresponding parameter. The label may consist of up to sixteen
+(32 on a VAX) option
+characters, in which case one of the bits of the integer is independantly
+set to reflect which one of the flags was present. (The right most character
+corresponds to the LSB of the integer) Only one option may be chosen from
+each conversion specification. The bits which are not set will remain in
+their previous state. For example, a specification of
+.B abc%\-
+would match one of
+.B \-a \-b
+or
+.B \-c
+in the argument list.
+.B \-c
+would cause the corresponding variable to be set to 1,
+.B \-b
+to 2, and
+.B \-a
+to 4. (Actually, these bits would be ored in, but assuming an intial value
+of 0, this is true).
+.PP
+.RS 4
+The
+.B \-
+may be followed immediately by more label_key_conversion specifications.
+These should not be separated by blanks and should not contain any
+.B \-
+specifications. They will be processed only if the flag argument is scanned.
+This allows optional specification of parameters corresponding to a flag
+(e.g.
+.I \-f file
+). Corresponding arguments on the command line must appear between the flag
+which introduces them and the next flag in the command line.
+.RE
+.TP 4
+.B $
+This may appear only as the last specifier in the format string, and is used
+to "eat up" the rest of the command arguments. The corresponding function
+argument is an
+.I int
+pointer. An index into
+.I argv
+to the dividing point between the arguments which have been used, and those
+which have not is returned. This index points to the first unused command
+argument. If there is no such dividing point, an error
+will be generated.
+.PP
+A string or numeric conversion character may be preceded by a
+.B *
+or a
+.B ,
+to indicate that a list of such arguments is expected. If
+.B ,
+is used, then the AT&T proposed argument standard is followed, and a single
+string is expected, with the individual list elements separated by commas or
+spaces. Two commas in a row will produce a null entry (0 if numeric,
+zero-length string if string conversion), but multiple spaces, and spaces
+following a comma, are taken as a single separator. If
+.B *
+is specified, then multiple arguments are parsed to produce the list. A
+format specifier with a
+.B *
+or a
+.B ,
+takes two arguments. The first is an
+.B int
+pointer, the number of items in the list is returned here. The second is a
+pointer to pointer to the correct data type for the format specifier. A
+pointer to the list of arguments is returned here.
+.PP
+The scanner will process the control string from left to right,
+and where there are multiple conversions of the same type, they will
+be assigned one to one with their order of occurrence in the argument list.
+Where the order of the arguments is not ambiguous in the control string,
+they may occur in any order in the argument list. (ie. A decimal number
+will not be confused with a flag, but may
+be confused with an octal number or another decimal number. So if an
+octal and a decimal number are to be arguments, their order will determine
+their conversion, while a decimal number and a flag as arguments may occur
+in any order and still be converted correctly.)
+.PP
+An argument list that does not match the requirements of the control
+string will cause the printing of a short message telling why, and
+a message telling what the correct usage is.
+This usage is gleaned from the control string, and the labels are used
+directly. The labels should be both terse and descriptive! Spaces, tabs,
+and newlines in the format string will be reproduced in the usage message,
+and can be used for effective prettyprinting. A single tab (following a
+newline) will indent the line directly under the command name in the usage
+message.
+.PP
+The
+.I scanargs
+function returns 1 when the argument list matched the requirements
+of the control string, and returns 0 if there was a failure.
+Parameters for any conversions not matched are left untouched.
+.br
+For example, the call
+.RS
+.PP
+int i; double x; char *name;
+.br
+scanargs(argc, argv, "program decimal%d floating%F file%s"
+.in 15
+, &i, &x, &name );
+.RE
+.PP
+in a C program executed by the shell command
+.RS
+.PP
+.I %
+program 10 3.5397 inputfile
+.RE
+.PP
+will assign to
+.I i
+the value 10,
+.I x
+the value 3.5397, and
+.I name
+will point to the string "inputfile".
+.PP
+If the program was executed by the shell command
+.RS
+.PP
+.I %
+program 3.4 .7 inputfile
+.RE
+.PP
+the following would be printed on the standard error:
+.RS
+.PP
+extra arguments not processed
+.br
+usage : program [decimal] [floating] [file]
+.RE
+.PP
+because 3.4 matches the type of 'floating' and inputfile matches
+the type of 'file', leaving .7 unmatched (it is considered a string by
+scanargs, to be considered a number, it must begin with a digit).
+.PP
+Finally, executing the command
+.RS
+.br
+.I %
+program 10
+.RE
+.br
+would assign 10 to
+.IR i ,
+leaving
+.I x
+and
+.I name
+unaffected.
+.PP
+This call could be used for the
+.IR diff (1)
+command
+.RS
+.PP
+int blanks; int flags; char *file1; char *file2;
+.br
+scanargs(argc, argv, "diff b%\- efh%\- file1!s file2!s"
+.in 15
+, &blanks, &flags, &file1, &file2 );
+.RE
+.PP
+and would only allow one of either
+.B "\-e \-f"
+or
+.B \-h
+to be chosen optionally, with
+.B \-b
+as an independent option.
+.B File1
+and
+.B file2
+are both required.
+The usage message for this version of
+.I diff
+would be
+.RS
+.PP
+usage : diff [\-b] \-{efh} file1 file2
+.RE
+
+This call could be used for a simplified version of the
+.IR sed (1)
+command
+.RS
+.PP
+int efile; int noprint; char *script; char *file1; char *file2;
+.br
+scanargs(argc, argv, "sed n%\- script%s f%\-editfile!s file%s"
+.in 15
+, &noprint, &script, &efile, &file1, &file2 );
+.RE
+.PP
+If the
+.B \-f
+option is specified, then a file name must be given as the next string
+argument.
+The usage message for this version of
+.I sed
+would be
+.RS
+.PP
+usage : sed [\-n] [script] [\-f editfile] file
+.RE
+
+.PP
+Further notes on putting together a format string:
+.PP
+It is still possible for conditional arguments to be confused with
+arguments which stand alone. For this reason, it is recommended that
+all flags (and associated conditional arguments) be specified first in
+the scanargs format string. This ordering is not necessary for the
+command line arguments, however. The only case which could still cause
+confusion if these rules are followed is illustrated below:
+.br
+.RS
+format string: "prog d%\-num%d othernum%d"
+.br
+command line: prog \-d 9
+.RE
+.br
+It is unclear whether the number 9 should be associated with the
+.I num
+parameter or the
+.I othernum
+parameter.
+.I Scanargs
+assigns it to the
+.I num
+parameter. To force it to be associated with
+.I othernum
+the
+command could be invoked as either
+.br
+.RS
+ prog 9 \-d
+.br
+or prog \-d \-\- 9
+.RE
+.br
+The
+.B \-\-
+in the second example is interpreted as a flag, thereby
+terminating the scan for arguments introduced by the
+.BR \-d .
+According to the proposed standard, an argument of
+.B \-\-
+is to be interpreted as terminating the optional arguments on a flag.
+.PP
+Note that if the format string in the above example were
+.br
+.RS
+ "prog othernum%d d%\-num%d"
+.RE
+.br
+it would be impossible to assign a value to
+.I num
+without also
+assigning a value to
+.I othernum.
+
+.SH SEE ALSO
+exec(2), scanf(3S)
+.SH DIAGNOSTICS
+Returns 0 on error, 1 on success.
+.SH AUTHOR
+Gary Newman \(em Ampex Corporation
+.br
+Spencer W. Thomas \(em University of Utah
+.SH BUGS
+By its nature a call to scanargs defines a syntax
+which may be ambiguous, and although the results may be surprising,
+they are quite predictable.
+The heuristic used to tell string arguments from numeric arguments is just
+that. In fact, that you can't give a number as a string argument
+is sort of bogus.
diff --git a/obsolete/support/undump/scanargs.c b/obsolete/support/undump/scanargs.c
new file mode 100644
index 0000000000..ec78837f93
--- /dev/null
+++ b/obsolete/support/undump/scanargs.c
@@ -0,0 +1,879 @@
+/*
+ * $Header: scanargs.c,v 1.7 86/11/16 03:25:48 thomas Exp $
+ * Version 7 compatible
+ * Argument scanner, scans argv style argument list.
+ *
+ * Some stuff is a kludge because sscanf screws up
+ *
+ * Gary Newman - 10/4/1979 - Ampex Corp.
+ *
+ * Modified by Spencer W. Thomas, Univ. of Utah, 5/81 to
+ * add args introduced by a flag, add qscanargs call,
+ * allow empty flags.
+ *
+ * Compiling with QUICK defined generates 'qscanargs' ==
+ * scanargs w/o floating point support; avoids huge size
+ * of scanf.
+ *
+ * If you make improvements we'd like to get them too.
+ * Jay Lepreau lepreau@utah-20, decvax!harpo!utah-cs!lepreau
+ * Spencer Thomas thomas@utah-20, decvax!harpo!utah-cs!thomas
+ *
+ * (I know the code is ugly, but it just grew, you see ...)
+ *
+ * Modified by: Spencer W. Thomas
+ * Date: Feb 25 1983
+ * 1. Fixed scanning of optional args. Now args introduced by a flag
+ * must follow the flag which introduces them and precede any other
+ * flag argument. It is still possible for a flag introduced
+ * argument to be mistaken for a "bare" argument which occurs
+ * earlier in the format string. This implies that flags may not
+ * be conditional upon other flags, and a message will be generated
+ * if this is attempted.
+ *
+ * 2. Usage message can be formatted by inserting newlines, tabs and
+ * spaces into the format string. This is especially useful for
+ * long argument lists.
+ *
+ * 3. Added n/N types for "numeric" args. These args are scanned
+ * using the C language conventions - a number starting 0x is
+ * hexadecimal, a number starting with 0 is octal, otherwise it is
+ * decimal.
+ *
+ * Modified at BRL 16-May-88 by Mike Muuss to avoid Alliant STDC desire
+ * to have all "void" functions so declared.
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+#include <varargs.h>
+
+typedef char bool;
+/*
+ * An explicit assumption is made in this code that all pointers look
+ * alike, except possible char * pointers.
+ */
+typedef int *ptr;
+
+#define YES 1
+#define NO 0
+#define ERROR(msg) {fprintf(stderr, "msg\n"); goto error; }
+
+/*
+ * Storage allocation macros
+ */
+#define NEW( type, cnt ) (type *) malloc( (cnt) * sizeof( type ) )
+#define RENEW( type, ptr, cnt ) (type *) realloc( ptr, (cnt) * sizeof( type ) )
+
+static char * prformat();
+static bool isnum();
+static int _do_scanargs();
+void scan_usage();
+
+/*
+ * Argument list is (argc, argv, format, ... )
+ */
+#ifndef QUICK
+scanargs ( va_alist )
+#else
+qscanargs ( va_alist )
+#endif
+va_dcl
+{
+ va_list argl;
+ int retval;
+
+ va_start( argl );
+ retval = _do_scanargs( argl );
+ va_end( argl );
+ return retval;
+}
+
+/*
+ * This routine is necessary because of a pyramid compiler botch that
+ * uses parameter registers in a varargs routine. The extra
+ * subroutine call isolates the args on the register stack so they
+ * don't get trashed.
+ */
+
+static
+_do_scanargs( argl )
+va_list argl;
+{
+ int argc; /* Actual arguments */
+ char **argv;
+ char *format;
+
+ register check; /* check counter to be sure all argvs
+ are processed */
+ register char *cp;
+ register cnt;
+ int optarg = 0; /* where optional args start */
+ int nopt;
+ char tmpflg, /* temp flag */
+ typchr; /* type char from format string */
+ char c;
+ bool * arg_used; /* array of flags */
+ char * malloc();
+ ptr aptr; /* pointer to return loc */
+
+ bool required;
+ int excnt; /* which flag is set */
+ bool exflag; /* when set, one of a set of exclusive
+ flags is set */
+
+ bool list_of; /* set if parsing off a list of args */
+ bool comma_list; /* set if AT&T style multiple args */
+ int * cnt_arg; /* where to stuff list count */
+ int list_cnt; /* how many in list */
+ /* These are used to build return lists */
+ char ** strlist;
+ int * intlist;
+ long * longlist;
+ float * fltlist;
+ double *dbllist;
+
+ char *ncp; /* remember cp during flag scanning */
+#ifndef QUICK
+ char *cntrl; /* control string for scanf's */
+ char junk[2]; /* junk buffer for scanf's */
+
+ cntrl = "% %1s"; /* control string initialization for
+ scanf's */
+#endif
+
+ argc = va_arg( argl, int );
+ argv = va_arg( argl, char ** );
+ format = va_arg( argl, char * );
+
+ arg_used = NEW( bool, argc );
+ if (arg_used == NULL)
+ {
+ fprintf(stderr, "malloc failed in scanargs, exiting\n");
+ exit(-1);
+ }
+ else
+ {
+ for (cnt=0; cnt<argc; cnt++)
+ arg_used[cnt] = NO;
+ }
+
+ check = 0;
+ cp = format;
+ /*
+ * Skip program name
+ */
+ while ( *cp != ' ' && *cp != '\t' && *cp != '\n' && *cp != '\0' )
+ cp++;
+
+ while (*cp)
+ {
+ required = NO; /* reset per-arg flags */
+ list_of = NO;
+ comma_list = NO;
+ list_cnt = 0;
+ switch (*(cp++))
+ {
+ default: /* all other chars */
+ break;
+ case ' ': /* separators */
+ case '\t':
+ case '\n':
+ optarg = 0; /* end of optional arg string */
+ break;
+
+ case '!': /* required argument */
+ required = YES;
+ case '%': /* not required argument */
+reswitch: /* after finding '*' or ',' */
+ switch (typchr = *(cp++))
+ {
+ case ',': /* argument is AT&T list of things */
+ comma_list = YES;
+ case '*': /* argument is list of things */
+ list_of = YES;
+ list_cnt = 0; /* none yet */
+ cnt_arg = va_arg( argl, int *); /* item count * here */
+ goto reswitch; /* try again */
+
+ case '$': /* "rest" of argument list */
+ while ( argc > 1 && !arg_used[argc-1] )
+ argc--; /* find last used argument */
+ *va_arg( argl, int * ) = argc;
+ break;
+
+ case '-': /* argument is flag */
+ if (optarg > 0)
+ ERROR(Format error: flag conditional on flag not allowed);
+
+ /* go back to label */
+ ncp = cp-1; /* remember */
+ cp -= 3;
+ for (excnt = exflag = 0
+ ; *cp != ' ' && !(*cp=='-' &&(cp[-1]=='!'||cp[-1]=='%'));
+ (--cp, excnt++))
+ {
+ for (cnt = optarg+1; cnt < argc; cnt++)
+ {
+ /* flags all start with - */
+ if (*argv[cnt] == '-' && !arg_used[cnt] &&
+ !isdigit(argv[cnt][1]))
+ if (*(argv[cnt] + 1) == *cp)
+ {
+ if (*(argv[cnt] + 2) != 0)
+ ERROR (extra flags ignored);
+ if (exflag)
+ ERROR (more than one exclusive flag chosen);
+ exflag++;
+ required = NO;
+ check += cnt;
+ arg_used[cnt] = 1;
+ nopt = cnt;
+ *va_arg( argl, int *) |= (1 << excnt);
+ break;
+ }
+ }
+ }
+ if (required)
+ ERROR (flag argument missing);
+ cp = ncp;
+ /*
+ * If none of these flags were found, skip any
+ * optional arguments (in the varargs list, too).
+ */
+ if (!exflag)
+ {
+ va_arg( argl, int * ); /* skip the arg, too */
+ while (*++cp && ! isspace(*cp))
+ if (*cp == '!' || *cp == '%')
+ {
+ if ( *++cp == '*' || *cp == ',' )
+ {
+ cp++;
+ va_arg( argl, int * );
+ }
+ /*
+ * Assume that char * might be a
+ * different size, but that all
+ * other pointers are same size.
+ */
+ if ( *cp == 's' )
+ va_arg( argl, char * );
+ else
+ va_arg( argl, ptr );
+ }
+ }
+ else
+ {
+ optarg = nopt;
+ cp++; /* skip over - */
+ }
+
+ break;
+
+ case 's': /* char string */
+ case 'd': /* decimal # */
+ case 'o': /* octal # */
+ case 'x': /* hexadecimal # */
+ case 'n': /* "number" in C syntax */
+#ifndef QUICK
+ case 'f': /* floating # */
+#endif
+ case 'D': /* long decimal # */
+ case 'O': /* long octal # */
+ case 'X': /* long hexadecimal # */
+ case 'N': /* long number in C syntax */
+#ifndef QUICK
+ case 'F': /* double precision floating # */
+#ifdef sgi
+ /* Fix for broken SGI IRIS floats */
+ if ( typchr == 'F' ) typchr = 'f';
+#endif /* sgi */
+#endif /* QUICK */
+ for (cnt = optarg+1; cnt < argc; cnt++)
+ {
+ ncp = argv[cnt];
+
+ if ( isnum( ncp, typchr, comma_list ) )
+ {
+ ; /* it's ok, then */
+ }
+ else if ( *ncp == '-' && ncp[1] != '\0' )
+ if ( optarg > 0 ) /* end optional args? */
+ {
+ /* Eat the arg, too, if necessary */
+ if ( list_cnt == 0 )
+ if ( typchr == 's' )
+ va_arg( argl, char * );
+ else
+ va_arg( argl, ptr );
+ break;
+ }
+ else
+ continue;
+ else if ( typchr != 's' )
+ continue; /* not number, keep looking */
+
+ /*
+ * Otherwise usable argument may already
+ * be used. (Must check this after
+ * checking for flag, though.)
+ */
+ if (arg_used[cnt]) continue;
+
+ /*
+ * If it's a comma-and-or-space-separated
+ * list then count how many, and separate
+ * the list into an array of strings.
+ */
+ if ( comma_list )
+ {
+ register char * s;
+ int pass;
+
+ /*
+ * On pass 0, just count them. On
+ * pass 1, null terminate each string
+ */
+ for ( pass = 0; pass <= 1; pass++ )
+ {
+ for ( s = ncp; *s != '\0'; )
+ {
+ if ( pass )
+ strlist[list_cnt] = s;
+ while ( (c = *s) != '\0' && c != ' ' &&
+ c != '\t' && c != ',' )
+ s++;
+ if ( pass )
+ *s = '\0';
+
+ list_cnt++; /* count separators */
+ /*
+ * Two commas in a row give a null
+ * string, but two spaces
+ * don't. Also skip spaces
+ * after a comma.
+ */
+ if ( c != '\0' )
+ while ( *++s == ' ' || *s == '\t' )
+ ;
+ }
+ if ( pass == 0 )
+ {
+ strlist = NEW( char *, list_cnt );
+ list_cnt = 0;
+ }
+ }
+ }
+ else if ( list_of )
+ list_cnt++; /* getting them one at a time */
+ /*
+ * If it's either type of list, then alloc
+ * storage space for the returned values
+ * (except that comma-separated string
+ * lists already are done).
+ */
+ if ( list_of )
+ {
+ if ( list_cnt == 1 || comma_list )
+ switch( typchr )
+ {
+ case 's':
+ if ( !comma_list )
+ strlist = NEW( char *, 1 );
+ aptr = (ptr) &strlist[0];
+ break;
+ case 'n':
+ case 'd':
+ case 'o':
+ case 'x':
+ intlist = NEW( int, list_cnt );
+ aptr = (ptr) &intlist[0];
+ break;
+ case 'N':
+ case 'D':
+ case 'O':
+ case 'X':
+ longlist = NEW( long, list_cnt );
+ aptr = (ptr) &longlist[0];
+ break;
+ case 'f':
+ fltlist = NEW( float, list_cnt );
+ aptr = (ptr) &fltlist[0];
+ break;
+ case 'F':
+ dbllist = NEW( double, list_cnt );
+ aptr = (ptr) &dbllist[0];
+ break;
+ }
+ else
+ switch( typchr )
+ {
+ case 's':
+ strlist = RENEW( char *, strlist,
+ list_cnt );
+ aptr = (ptr) &strlist[list_cnt-1];
+ break;
+ case 'n':
+ case 'd':
+ case 'o':
+ case 'x':
+ intlist = RENEW( int, intlist,
+ list_cnt );
+ aptr = (ptr) &intlist[list_cnt-1];
+ break;
+ case 'N':
+ case 'D':
+ case 'O':
+ case 'X':
+ longlist = RENEW( long, longlist,
+ list_cnt );
+ aptr = (ptr) &longlist[list_cnt-1];
+ break;
+ case 'f':
+ fltlist = RENEW( float, fltlist,
+ list_cnt );
+ aptr = (ptr) &fltlist[list_cnt-1];
+ break;
+ case 'F':
+ dbllist = RENEW( double, dbllist,
+ list_cnt );
+ aptr = (ptr) &dbllist[list_cnt-1];
+ break;
+ }
+ }
+ else
+ aptr = va_arg( argl, ptr );
+
+ if ( typchr == 's' )
+ {
+ if ( ! comma_list )
+ *(char **)aptr = ncp;
+ }
+ else
+ {
+ nopt = 0;
+ do {
+ /*
+ * Need to update aptr if parsing
+ * a comma list
+ */
+ if ( comma_list && nopt > 0 )
+ {
+ ncp = strlist[nopt];
+ switch( typchr )
+ {
+ case 'n':
+ case 'd':
+ case 'o':
+ case 'x':
+ aptr = (ptr) &intlist[nopt];
+ break;
+ case 'N':
+ case 'D':
+ case 'O':
+ case 'X':
+ aptr = (ptr) &longlist[nopt];
+ break;
+ case 'f':
+ aptr = (ptr) &fltlist[nopt];
+ break;
+ case 'F':
+ aptr = (ptr) &dbllist[nopt];
+ break;
+ }
+ }
+ /*
+ * Do conversion for n and N types
+ */
+ tmpflg = typchr;
+ if (typchr == 'n' || typchr == 'N' )
+ if (*ncp != '0')
+ tmpflg = 'd';
+ else if (*(ncp+1) == 'x' ||
+ *(ncp+1) == 'X')
+ {
+ tmpflg = 'x';
+ ncp += 2;
+ }
+ else
+ tmpflg = 'o';
+ if (typchr == 'N')
+ toupper( tmpflg );
+
+
+#ifndef QUICK
+ cntrl[1] = tmpflg;/* put in conversion */
+ if (sscanf (ncp, cntrl, aptr, junk) != 1)
+ ERROR (Bad numeric argument);
+#else
+ if (numcvt(ncp, tmpflg, aptr) != 1)
+ ERROR (Bad numeric argument);
+#endif
+ } while ( comma_list && ++nopt < list_cnt );
+ }
+ check += cnt;
+ arg_used[cnt] = 1;
+ required = NO;
+ /*
+ * If not looking for multiple args,
+ * then done, otherwise, keep looking.
+ */
+ if ( !( list_of && !comma_list ) )
+ break;
+ else
+ continue;
+ }
+ if (required)
+ switch (typchr)
+ {
+ case 'x':
+ case 'X':
+ ERROR (missing hexadecimal argument);
+ case 's':
+ ERROR (missing string argument);
+ case 'o':
+ case 'O':
+ ERROR (missing octal argument);
+ case 'd':
+ case 'D':
+ ERROR (missing decimal argument);
+ case 'f':
+ case 'F':
+ ERROR (missing floating argument);
+ case 'n':
+ case 'N':
+ ERROR (missing numeric argument);
+ }
+ if ( list_cnt > 0 )
+ {
+ *cnt_arg = list_cnt;
+ switch ( typchr )
+ {
+ case 's':
+ *va_arg( argl, char *** ) = strlist;
+ break;
+ case 'n':
+ case 'd':
+ case 'o':
+ case 'x':
+ *va_arg( argl, int ** ) = intlist;
+ break;
+ case 'N':
+ case 'D':
+ case 'O':
+ case 'X':
+ *va_arg( argl, long ** ) = longlist;
+ break;
+ case 'f':
+ *va_arg( argl, float ** ) = fltlist;
+ break;
+ case 'F':
+ *va_arg( argl, double **) = dbllist;
+ break;
+ }
+ if ( typchr != 's' )
+ free( (char *) strlist );
+ }
+ else if ( cnt >= argc )
+ {
+ /* Fell off end looking, so must eat the arg */
+ if ( typchr == 's' )
+ va_arg( argl, char * );
+ else
+ va_arg( argl, ptr );
+ }
+ break;
+ default: /* error */
+ fprintf (stderr, "error in call to scanargs\n");
+ return (0);
+ }
+ }
+ }
+
+ /* Count up empty flags */
+ for (cnt=1; cnt<argc; cnt++)
+ if (argv[cnt][0] == '-' && argv[cnt][1] == '-' && argv[cnt][2] == 0
+ && !arg_used[cnt] )
+ check += cnt;
+
+ /* sum from 1 to N = n*(n+1)/2 used to count up checks */
+ if (check != (((argc - 1) * argc) / 2))
+ ERROR (extra arguments not processed);
+
+ free(arg_used);
+ return (1);
+
+error:
+ scan_usage( argv, format );
+ free(arg_used);
+ return 0;
+}
+
+void
+scan_usage( argv, format )
+char ** argv;
+char * format;
+{
+ register char * cp;
+
+ fprintf (stderr, "usage : ");
+ if (*(cp = format) != ' ')
+ {
+ if ( *cp == '%' )
+ {
+ /*
+ * This is bogus, but until everyone can agree on a name
+ * for (rindex/strrchr) ....
+ */
+ for ( cp = argv[0]; *cp != '\0'; cp++ )
+ ; /* find the end of the string */
+ for ( ; cp > argv[0] && *cp != '/'; cp-- )
+ ; /* find the last / */
+ if ( *cp == '/' )
+ cp++;
+ fprintf( stderr, "%s", cp );
+
+ cp = format + 1; /* reset to where it should be */
+ }
+ while (putc (*cp++, stderr) != ' ');
+ }
+ else
+ fprintf (stderr, "?? ");
+ while (*cp == ' ')
+ cp++;
+ prformat (cp, NO);
+}
+
+static char *
+prformat (format, recurse)
+char *format;
+{
+ register char *cp;
+ bool required, comma_list;
+ int list_of;
+
+ cp = format;
+ if (recurse)
+ putc (' ', stderr);
+
+ required = NO;
+ list_of = 0;
+ comma_list = NO;
+ while (*cp)
+ {
+ switch (*cp)
+ {
+ default:
+ cp++;
+ break;
+ case ' ':
+ case '\n':
+ case '\t':
+ /* allow annotations */
+ for ( ; format < cp; format++ )
+ putc( *format, stderr );
+ putc(*cp, stderr);
+ format = ++cp;
+ break;
+ case '!':
+ required = YES;
+ case '%':
+reswitch:
+ switch (*++cp)
+ {
+ case ',':
+ comma_list++;
+ case '*':
+ list_of++;
+ goto reswitch;
+
+ case '$': /* "rest" of argument list */
+ if (!required)
+ putc ('[', stderr);
+ for (; format < cp - 1 - list_of; format++)
+ putc (*format, stderr);
+ fputs( " ...", stderr );
+ if ( !required )
+ putc( ']', stderr );
+ break;
+
+ case '-': /* flags */
+ if (!required)
+ putc ('[', stderr);
+ putc ('-', stderr);
+
+ if (cp - format > 2 + list_of)
+ putc ('{', stderr);
+ cp = format;
+ while (*cp != '%' && *cp != '!')
+ putc (*cp++, stderr);
+ if (cp - format > 1 + list_of)
+ putc ('}', stderr);
+ cp += 2; /* skip !- or %- */
+ if (*cp && !isspace(*cp))
+ cp = prformat (cp, YES);
+ /* this is a recursive call */
+
+ cp--; /* don't ignore next character */
+
+ if (!required)
+ putc (']', stderr);
+ break;
+ case 's': /* char string */
+ case 'd': /* decimal # */
+ case 'o': /* octal # */
+ case 'x': /* hexadecimal # */
+ case 'f': /* floating # */
+ case 'D': /* long decimal # */
+ case 'O': /* long octal # */
+ case 'X': /* long hexadecimal # */
+ case 'F': /* double precision floating # */
+ case 'n': /* numeric arg (C format) */
+ case 'N': /* long numeric arg */
+ if (!required)
+ putc ('[', stderr);
+ for (; format < cp - 1 - list_of; format++)
+ putc (*format, stderr);
+ if ( list_of != 0 )
+ {
+ if ( comma_list )
+ putc( ',', stderr );
+ else
+ putc( ' ', stderr );
+ fputs( "...", stderr );
+ }
+ if (!required)
+ putc (']', stderr);
+ break;
+ default:
+ break;
+ }
+ required = NO;
+ list_of = NO;
+ comma_list = NO;
+ if (*cp) /* check for end of string */
+ format = ++cp;
+ if (*cp && !isspace(*cp))
+ putc (' ', stderr);
+ }
+ if (recurse && isspace(*cp))
+ break;
+ }
+ if (!recurse)
+ {
+ for ( ; format < cp; format++ )
+ putc( *format, stderr );
+ putc ('\n', stderr);
+ }
+ return (cp);
+}
+
+/*
+ * isnum - determine whether a string MIGHT represent a number.
+ * typchr indicates the type of argument we are looking for, and
+ * determines the legal character set. If comma_list is YES, then
+ * space and comma are also legal characters.
+ */
+static bool
+isnum( str, typchr, comma_list )
+register char * str;
+char typchr;
+bool comma_list;
+{
+ register char * allowed, * digits, * cp;
+ bool hasdigit = NO;
+
+ switch( typchr )
+ {
+ case 'n':
+ case 'N':
+ allowed = " \t,+-x0123456789abcdefABCDEF";
+ break;
+ case 'd':
+ case 'D':
+ allowed = " \t,+-0123456789";
+ break;
+ case 'o':
+ case 'O':
+ allowed = " \t,01234567";
+ break;
+ case 'x':
+ case 'X':
+ allowed = " \t,0123456789abcdefABCDEF";
+ break;
+ case 'f':
+ case 'F':
+ allowed = " \t,+-eE.0123456789";
+ break;
+ case 's': /* only throw out decimal numbers */
+ default:
+ allowed = " \t,+-.0123456789";
+ break;
+ }
+ digits = allowed;
+ while ( *digits != '0' )
+ digits++;
+ if ( ! comma_list )
+ allowed += 3; /* then don't allow space, tab, comma */
+
+ while ( *str != '\0' )
+ {
+ for ( cp = allowed; *cp != '\0' && *cp != *str; cp++ )
+ ;
+ if ( *cp == '\0' )
+ return NO; /* if not in allowed chars, not number */
+ if ( cp - digits >= 0 )
+ hasdigit = YES;
+ str++;
+ }
+ return hasdigit;
+}
+
+#ifdef QUICK
+numcvt(str, conv, val)
+register char *str;
+char conv;
+int *val;
+{
+ int base, neg = 0;
+ register unsigned int d;
+ long retval = 0;
+ register char *digits;
+ extern char *index();
+ if (conv == 'o' || conv == 'O')
+ base = 8;
+ else if (conv == 'd' || conv == 'D')
+ base = 10;
+ else if (conv == 'x' || conv == 'X')
+ base = 16;
+ else
+ return 0;
+
+ if (*str == '-')
+ {
+ neg = 1;
+ str++;
+ }
+ while (*str)
+ {
+ if (*str >= '0' && *str < '0'+base)
+ d = *str - '0';
+ else if (base == 16 && *str >= 'a' && *str <= 'f')
+ d = 10 + *str - 'a';
+ else if (base == 16 && *str >= 'A' && *str <= 'F')
+ d = 10 + *str - 'A';
+ else
+ return 0;
+ retval = retval*base + d;
+ str++;
+ }
+ if (neg)
+ retval = -retval;
+ if (conv == 'D' || conv == 'O' || conv == 'X')
+ *(long *) val = retval;
+ else
+ *val = (int) retval;
+ return 1;
+}
+#endif QUICK
diff --git a/obsolete/support/undump/undump.1 b/obsolete/support/undump/undump.1
new file mode 100644
index 0000000000..797cdb0377
--- /dev/null
+++ b/obsolete/support/undump/undump.1
@@ -0,0 +1,28 @@
+.TH UNDUMP 1 "University of Utah"
+.SH NAME
+undump \- convert a core dump to an executable a.out file
+.SH SYNOPSIS
+undump new-a.out-file [old-a.out-file] [core-file]
+.SH DESCRIPTION
+Undump takes a core dump file and the executable "a.out" file which
+caused it and produces a new executable file with all static
+variables initialised to the values they held at the time of the
+core dump. It is primarily useful for programs which take a long time
+to initialise themselves, e.g. Emacs. The idea is to go through all of
+the initialisations and then create a core dump (e.g. with the abort()
+call). One then uses undump to make a new executable file with all of it
+done. This usually implies the use of a global flag variable which says
+whether or not initialisation has been done.
+.PP
+Undump's arguments, old-a.out-file and core-file, default to "a.out" and
+"core", respectively.
+.PP
+A few things to keep in mind about undump:
+.IP
+It doesn't preserve open files.
+.IP
+The program will be re-entered at the beginning of main(), not at the point
+where the core dump occurred.
+.SH BUGS
+Probably should have an option to not require
+old-a.out-file if the core came from a 407 file.
diff --git a/obsolete/support/undump/undump.BALANCE.c b/obsolete/support/undump/undump.BALANCE.c
new file mode 100644
index 0000000000..e8bdedec11
--- /dev/null
+++ b/obsolete/support/undump/undump.BALANCE.c
@@ -0,0 +1,298 @@
+/*
+ * This program is hacked for Sequent Balance.
+ * The original is from 4.2undump.c of UNIX TeX distribution.
+ * This is tested on Serquent Balance 21000, DYNIX 2.1.1
+ * with UNIX TeX 2.1. Modification may be necessary for newer DYNIX.
+ * Takashi Chikayama, ICOT Research Center.
+ */
+
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * It requires a local subroutine called scanargs, somewhat similar to
+ * getopt (I think). You should be able to easily get around this, though.
+ * =Spencer
+ */
+
+
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Modification for Balance/DYNIX 2.1.1:
+ * Takashi Chikayama
+ * ICOT Research Center
+ * Date: Wed Nov 25 1987
+ * Copyright (c) 1987 Takashi Chikayama
+ * See copy_text for details.
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <sys/user.h>
+#include <sys/stat.h>
+#include <a.out.h>
+
+#define PSIZE 10240
+
+struct user u;
+struct exec hdr, ohdr;
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ if (scanargs(argc, argv, "undump new-a.out!s a.out%s core%s",
+ &new_name, &a_out_name, &core_name)
+ != 1)
+ exit(1);
+
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+ read_u(core);
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+ if (fread(&hdr, sizeof hdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read header from a.out file");
+ exit(1);
+ }
+ ohdr = hdr;
+ if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ }
+
+/*** Checks are omitted for now. (T.C.)
+ if (hdr.a_magic != u.u_exdata.ux_mag ||
+ hdr.a_text != u.u_exdata.ux_tsize ||
+ hdr.a_data != u.u_exdata.ux_dsize ||
+ hdr.a_entry != u.u_exdata.ux_entloc)
+ {
+ fprintf(stderr, "Core file didn't come from this a.out\n");
+ exit(1);
+ }
+***/
+
+ printf("Data segment size was %u", hdr.a_data);
+ hdr.a_data = ctob(u.u_dsize);
+ hdr.a_bss = 0; /* all data is inited now! */
+ printf(" now is %u\n", hdr.a_data);
+ if (fwrite(&hdr, sizeof hdr, 1, new) != 1)
+ {
+ perror("Couldn't write header to new a.out file");
+ exit(1);
+ }
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+/*
+ * Modification by T.C.:
+ * Text size is actually smaller in files in case of DYNIX.
+ * As a_text includes exec structure, we avoid overwriting it here.
+ */
+ int txtcnt = hdr.a_text - N_ADDRADJ(hdr) - sizeof(struct exec);
+ fseek(new, sizeof(struct exec), 0);
+ fseek(a_out, sizeof(struct exec), 0);
+ if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); /* skip over text */
+ return;
+ }
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+ int datacnt = ctob(u.u_dsize);
+
+ if (hdr.a_magic == OMAGIC)
+ datacnt += u.u_tsize;
+ fseek(core, ctob(UPAGES), 0);
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+/*
+ * Modification by T.C.:
+ * Use macro N_SYMOFF to compute symbol table offset.
+ */
+ fseek(a_out, N_SYMOFF(ohdr), 0); /* find symbol table */
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/undump/undump.PYR.c b/obsolete/support/undump/undump.PYR.c
new file mode 100644
index 0000000000..0dd413c77e
--- /dev/null
+++ b/obsolete/support/undump/undump.PYR.c
@@ -0,0 +1,287 @@
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * It requires a local subroutine called scanargs, somewhat similar to
+ * getopt (I think). You should be able to easily get around this, though.
+ * =Spencer
+ *
+ * Scanargs didn't work on the Pyramid, and its function was
+ * too simple in this case to bother with repair, so it was chucked.
+ * -Mike
+ */
+
+
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <sys/user.h>
+#include <sys/stat.h>
+#include <a.out.h>
+
+#define PSIZE 10240
+#define ctob(x) (x<<PGSHIFT) /* Pyramid */
+
+struct user u;
+struct exec hdr, ohdr;
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ /*if (scanargs(argc, argv, "undump new-a.out!s a.out%s core%s",
+ /*&new_name, &a_out_name, &core_name)
+ /*!= 1)
+ /*exit(1);*/
+ if ((argc > 4)|| (argc < 2)) {
+ fprintf(stderr, "Usage: %s new-a.out [old-a.out] [core]\n",argv[0]);
+ exit(1);
+ }
+ new_name = argv[1];
+ if (argc > 2) a_out_name = argv[2];
+ if (argc > 3) core_name = argv[3];
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+ read_u(core);
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+ if (fread(&hdr, sizeof hdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read header from a.out file");
+ exit(1);
+ }
+ ohdr = hdr;
+ if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ }
+ if (hdr.a_magic != u.u_exdata.ux_mag ||
+ hdr.a_text != u.u_exdata.ux_tsize ||
+ hdr.a_data != u.u_exdata.ux_dsize ||
+ hdr.a_entry != u.u_exdata.ux_entloc)
+ {
+ fprintf(stderr, "Core file didn't come from this a.out\n");
+fprintf(stderr, "magic: %o %o", hdr.a_magic, u.u_exdata.ux_mag);
+fprintf(stderr, "text: %o %o", hdr.a_text, u.u_exdata.ux_tsize);
+fprintf(stderr, "data: %o %o", hdr.a_data, u.u_exdata.ux_dsize);
+fprintf(stderr, "entry: %o %o", hdr.a_entry, u.u_exdata.ux_entloc);
+ exit(1);
+ }
+
+ printf("Data segment size was %u", hdr.a_data);
+ hdr.a_data = ctob(u.u_dsize);
+ hdr.a_bss = 0; /* all data is inited now! */
+ printf(" now is %u\n", hdr.a_data);
+ if (fwrite(&hdr, sizeof hdr, 1, new) != 1)
+ {
+ perror("Couldn't write header to new a.out file");
+ exit(1);
+ }
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int txtcnt = hdr.a_text;
+
+ fseek(new, N_TXTOFF(hdr), 0);
+ fseek(a_out, N_TXTOFF(hdr), 0);
+ if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); /* skip over text */
+ return;
+ }
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+ int datacnt = ctob(u.u_dsize);
+
+ if (hdr.a_magic == OMAGIC)
+ datacnt += u.u_tsize;
+ fseek(core, ctob(UPAGES), 0);
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+ fseek(a_out, ohdr.a_data, 1); /* skip over data segment */
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/undump/undump.SUN4.c b/obsolete/support/undump/undump.SUN4.c
new file mode 100644
index 0000000000..fa518f733b
--- /dev/null
+++ b/obsolete/support/undump/undump.SUN4.c
@@ -0,0 +1,367 @@
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * Other versions of this program required a local subroutine called
+ * scanargs, which has been eliminated in the SUN4 version.
+ */
+
+
+/*
+ * Barry Shein (BZS@BU-CS.CSNET) - Add SUN/3 changes, tried and
+ * worked on TeX but not certain about OMAGIC files. Build it
+ * on a SUN/3 with -Dsun3 on the command line. (1/26/86)
+ *
+ *
+ * This version has applied the patch for a SUN4 contributed by
+ * Christopher A. Welty (weltyc@nisc.nyser.net).
+ * It has not been tested, and I do not know what the effect of
+ * the "#ifdef sun3" lines will be.
+ *
+ * Christopher Welty describes the patch as follows,
+ *
+ * Here is the quick hack to the SUN 3 undump that I made. The problem is
+ * that scanargs doesn't use varargs (the Other Unix Text Formatter is
+ * full of problems like this :-) so I just used brute force...
+ *
+ */
+
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+
+#ifdef sun3
+#include <sys/core.h>
+#include <machine/param.h>
+#else
+#include <sys/user.h>
+#endif
+
+#include <sys/stat.h>
+#include <a.out.h>
+
+#ifdef sun3
+#define PSIZE NBPG
+#else
+#define PSIZE 10240
+#endif sun3
+
+#define TEXITUDE
+
+#ifdef sun3
+struct core c ;
+#else
+struct user u;
+#endif
+
+struct exec hdr, ohdr;
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ if ( argc < 2 || argc > 4 ) {
+ fprintf(stderr, "usage: %s new-a.out [a.out] [core]\n",argv[0]);
+ exit(1);
+ }
+
+ new_name = argv[1];
+ if ( argc > 2 )
+ a_out_name = argv[2];
+ if ( argc > 3 )
+ core_name = argv[3];
+
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+#ifdef sun3
+ read_c(core);
+#else
+ read_u(core);
+#endif
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+#ifdef sun3
+read_c(core) FILE *core;
+{
+ if(fread(&c, sizeof c, 1, core) != 1) {
+ perror("Couldn't read core header");
+ exit(1);
+ }
+ if(c.c_magic != CORE_MAGIC) {
+ fprintf(stderr,"Not a core file\n");
+ exit(1);
+ }
+}
+
+#else
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+#endif sun3
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+ if (fread(&hdr, sizeof hdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read header from a.out file");
+ exit(1);
+ }
+ ohdr = hdr;
+ if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ }
+#ifdef sun3
+ if (hdr.a_magic != c.c_aouthdr.a_magic ||
+ hdr.a_text != c.c_aouthdr.a_text ||
+ hdr.a_data != c.c_aouthdr.a_data ||
+ hdr.a_entry != c.c_aouthdr.a_entry)
+#else
+ if (hdr.a_magic != u.u_exdata.ux_mag ||
+ hdr.a_text != u.u_exdata.ux_tsize ||
+ hdr.a_data != u.u_exdata.ux_dsize ||
+ hdr.a_entry != u.u_exdata.ux_entloc)
+#endif sun3
+ {
+ fprintf(stderr, "Core file didn't come from this a.out\n");
+#ifndef TEXITUDE
+ exit(1);
+#endif
+ }
+
+ printf("Data segment size was %u", hdr.a_data);
+#ifdef sun3
+ hdr.a_data = c.c_dsize;
+#else
+ hdr.a_data = ctob(u.u_dsize);
+#endif sun3
+ hdr.a_bss = 0; /* all data is inited now! */
+ printf(" now is %u\n", hdr.a_data);
+ if (fwrite(&hdr, sizeof hdr, 1, new) != 1)
+ {
+ perror("Couldn't write header to new a.out file");
+ exit(1);
+ }
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int txtcnt = hdr.a_text;
+
+#ifdef sun3
+ fseek(new,(long) N_TXTOFF(hdr)+sizeof(hdr),0);
+ fseek(a_out,(long) N_TXTOFF(hdr)+sizeof(hdr),0);
+ txtcnt -= sizeof(hdr);
+#else
+ fseek(new, N_TXTOFF(hdr), 0);
+ fseek(a_out, N_TXTOFF(hdr), 0);
+#endif sun3
+ if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); /* skip over text */
+ return;
+ }
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+#ifdef sun3
+ int datacnt = c.c_dsize;
+#else
+ int datacnt = ctob(u.u_dsize);
+#endif sun3
+
+ if (hdr.a_magic == OMAGIC)
+#ifdef sun3
+ datacnt += c.c_tsize; /* BZS - not sure about this */
+#else
+ datacnt += u.u_tsize;
+#endif
+
+#ifndef sun3 /* for the sun3 the data should be right where we left off */
+ fseek(core, ctob(UPAGES), 0);
+#endif
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+#ifdef sun3
+ fseek(a_out, N_SYMOFF(ohdr), 0);
+#else
+ fseek(a_out, ohdr.a_data, 1); /* skip over data segment */
+#endif sun3
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/undump/undump.SUN_V2.c b/obsolete/support/undump/undump.SUN_V2.c
new file mode 100644
index 0000000000..ebff8a31f7
--- /dev/null
+++ b/obsolete/support/undump/undump.SUN_V2.c
@@ -0,0 +1,352 @@
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * It requires a local subroutine called scanargs, somewhat similar to
+ * getopt (I think). You should be able to easily get around this, though.
+ * =Spencer
+ */
+
+
+/*
+ * Barry Shein (BZS@BU-CS.CSNET) - Add SUN/3 changes, tried and
+ * worked on TeX but not certain about OMAGIC files. Build it
+ * on a SUN/3 with -Dsun3 on the command line. (1/26/86)
+ *
+ *
+ * Believed to work on a Sun2 with O.S. 3.2 as well. If it
+ * doesn't, try the 4.2undump.c (P. A. MacKay. (2/23/86)
+ */
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+
+#ifdef sun3
+#include <sys/core.h>
+#include <machine/param.h>
+#else
+#include <sys/user.h>
+#endif
+
+#include <sys/stat.h>
+#include <a.out.h>
+
+#ifdef sun3
+#define PSIZE NBPG
+#else
+#define PSIZE 10240
+#endif sun3
+
+#define TEXITUDE
+
+#ifdef sun3
+struct core c ;
+#else
+struct user u;
+#endif
+
+struct exec hdr, ohdr;
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ if (scanargs(argc, argv, "undump new-a.out!s a.out%s core%s",
+ &new_name, &a_out_name, &core_name)
+ != 1)
+ exit(1);
+
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+#ifdef sun3
+ read_c(core);
+#else
+ read_u(core);
+#endif
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+#ifdef sun3
+read_c(core) FILE *core;
+{
+ if(fread(&c, sizeof c, 1, core) != 1) {
+ perror("Couldn't read core header");
+ exit(1);
+ }
+ if(c.c_magic != CORE_MAGIC) {
+ fprintf(stderr,"Not a core file\n");
+ exit(1);
+ }
+}
+
+#else
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+#endif sun3
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+ if (fread(&hdr, sizeof hdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read header from a.out file");
+ exit(1);
+ }
+ ohdr = hdr;
+ if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ }
+#ifdef sun3
+ if (hdr.a_magic != c.c_aouthdr.a_magic ||
+ hdr.a_text != c.c_aouthdr.a_text ||
+ hdr.a_data != c.c_aouthdr.a_data ||
+ hdr.a_entry != c.c_aouthdr.a_entry)
+#else
+ if (hdr.a_magic != u.u_exdata.ux_mag ||
+ hdr.a_text != u.u_exdata.ux_tsize ||
+ hdr.a_data != u.u_exdata.ux_dsize ||
+ hdr.a_entry != u.u_exdata.ux_entloc)
+#endif sun3
+ {
+ fprintf(stderr, "Core file didn't come from this a.out\n");
+#ifndef TEXITUDE
+ exit(1);
+#endif
+ }
+
+ printf("Data segment size was %u", hdr.a_data);
+#ifdef sun3
+ hdr.a_data = c.c_dsize;
+#else
+ hdr.a_data = ctob(u.u_dsize);
+#endif sun3
+ hdr.a_bss = 0; /* all data is inited now! */
+ printf(" now is %u\n", hdr.a_data);
+ if (fwrite(&hdr, sizeof hdr, 1, new) != 1)
+ {
+ perror("Couldn't write header to new a.out file");
+ exit(1);
+ }
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int txtcnt = hdr.a_text;
+
+#ifdef sun3
+ fseek(new,(long) N_TXTOFF(hdr)+sizeof(hdr),0);
+ fseek(a_out,(long) N_TXTOFF(hdr)+sizeof(hdr),0);
+ txtcnt -= sizeof(hdr);
+#else
+ fseek(new, N_TXTOFF(hdr), 0);
+ fseek(a_out, N_TXTOFF(hdr), 0);
+#endif sun3
+ if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); /* skip over text */
+ return;
+ }
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+#ifdef sun3
+ int datacnt = c.c_dsize;
+#else
+ int datacnt = ctob(u.u_dsize);
+#endif sun3
+
+ if (hdr.a_magic == OMAGIC)
+#ifdef sun3
+ datacnt += c.c_tsize; /* BZS - not sure about this */
+#else
+ datacnt += u.u_tsize;
+#endif
+
+#ifndef sun3 /* for the sun3 the data should be right where we left off */
+ fseek(core, ctob(UPAGES), 0);
+#endif
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+#ifdef sun3
+ fseek(a_out, N_SYMOFF(ohdr), 0);
+#else
+ fseek(a_out, ohdr.a_data, 1); /* skip over data segment */
+#endif sun3
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/undump/undump.SUN_V3 b/obsolete/support/undump/undump.SUN_V3
new file mode 100644
index 0000000000..ebff8a31f7
--- /dev/null
+++ b/obsolete/support/undump/undump.SUN_V3
@@ -0,0 +1,352 @@
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * It requires a local subroutine called scanargs, somewhat similar to
+ * getopt (I think). You should be able to easily get around this, though.
+ * =Spencer
+ */
+
+
+/*
+ * Barry Shein (BZS@BU-CS.CSNET) - Add SUN/3 changes, tried and
+ * worked on TeX but not certain about OMAGIC files. Build it
+ * on a SUN/3 with -Dsun3 on the command line. (1/26/86)
+ *
+ *
+ * Believed to work on a Sun2 with O.S. 3.2 as well. If it
+ * doesn't, try the 4.2undump.c (P. A. MacKay. (2/23/86)
+ */
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+
+#ifdef sun3
+#include <sys/core.h>
+#include <machine/param.h>
+#else
+#include <sys/user.h>
+#endif
+
+#include <sys/stat.h>
+#include <a.out.h>
+
+#ifdef sun3
+#define PSIZE NBPG
+#else
+#define PSIZE 10240
+#endif sun3
+
+#define TEXITUDE
+
+#ifdef sun3
+struct core c ;
+#else
+struct user u;
+#endif
+
+struct exec hdr, ohdr;
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ if (scanargs(argc, argv, "undump new-a.out!s a.out%s core%s",
+ &new_name, &a_out_name, &core_name)
+ != 1)
+ exit(1);
+
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+#ifdef sun3
+ read_c(core);
+#else
+ read_u(core);
+#endif
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+#ifdef sun3
+read_c(core) FILE *core;
+{
+ if(fread(&c, sizeof c, 1, core) != 1) {
+ perror("Couldn't read core header");
+ exit(1);
+ }
+ if(c.c_magic != CORE_MAGIC) {
+ fprintf(stderr,"Not a core file\n");
+ exit(1);
+ }
+}
+
+#else
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+#endif sun3
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+ if (fread(&hdr, sizeof hdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read header from a.out file");
+ exit(1);
+ }
+ ohdr = hdr;
+ if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ }
+#ifdef sun3
+ if (hdr.a_magic != c.c_aouthdr.a_magic ||
+ hdr.a_text != c.c_aouthdr.a_text ||
+ hdr.a_data != c.c_aouthdr.a_data ||
+ hdr.a_entry != c.c_aouthdr.a_entry)
+#else
+ if (hdr.a_magic != u.u_exdata.ux_mag ||
+ hdr.a_text != u.u_exdata.ux_tsize ||
+ hdr.a_data != u.u_exdata.ux_dsize ||
+ hdr.a_entry != u.u_exdata.ux_entloc)
+#endif sun3
+ {
+ fprintf(stderr, "Core file didn't come from this a.out\n");
+#ifndef TEXITUDE
+ exit(1);
+#endif
+ }
+
+ printf("Data segment size was %u", hdr.a_data);
+#ifdef sun3
+ hdr.a_data = c.c_dsize;
+#else
+ hdr.a_data = ctob(u.u_dsize);
+#endif sun3
+ hdr.a_bss = 0; /* all data is inited now! */
+ printf(" now is %u\n", hdr.a_data);
+ if (fwrite(&hdr, sizeof hdr, 1, new) != 1)
+ {
+ perror("Couldn't write header to new a.out file");
+ exit(1);
+ }
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int txtcnt = hdr.a_text;
+
+#ifdef sun3
+ fseek(new,(long) N_TXTOFF(hdr)+sizeof(hdr),0);
+ fseek(a_out,(long) N_TXTOFF(hdr)+sizeof(hdr),0);
+ txtcnt -= sizeof(hdr);
+#else
+ fseek(new, N_TXTOFF(hdr), 0);
+ fseek(a_out, N_TXTOFF(hdr), 0);
+#endif sun3
+ if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); /* skip over text */
+ return;
+ }
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+#ifdef sun3
+ int datacnt = c.c_dsize;
+#else
+ int datacnt = ctob(u.u_dsize);
+#endif sun3
+
+ if (hdr.a_magic == OMAGIC)
+#ifdef sun3
+ datacnt += c.c_tsize; /* BZS - not sure about this */
+#else
+ datacnt += u.u_tsize;
+#endif
+
+#ifndef sun3 /* for the sun3 the data should be right where we left off */
+ fseek(core, ctob(UPAGES), 0);
+#endif
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+#ifdef sun3
+ fseek(a_out, N_SYMOFF(ohdr), 0);
+#else
+ fseek(a_out, ohdr.a_data, 1); /* skip over data segment */
+#endif sun3
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/undump/undump.SUN_V3.c b/obsolete/support/undump/undump.SUN_V3.c
new file mode 100644
index 0000000000..ebff8a31f7
--- /dev/null
+++ b/obsolete/support/undump/undump.SUN_V3.c
@@ -0,0 +1,352 @@
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * It requires a local subroutine called scanargs, somewhat similar to
+ * getopt (I think). You should be able to easily get around this, though.
+ * =Spencer
+ */
+
+
+/*
+ * Barry Shein (BZS@BU-CS.CSNET) - Add SUN/3 changes, tried and
+ * worked on TeX but not certain about OMAGIC files. Build it
+ * on a SUN/3 with -Dsun3 on the command line. (1/26/86)
+ *
+ *
+ * Believed to work on a Sun2 with O.S. 3.2 as well. If it
+ * doesn't, try the 4.2undump.c (P. A. MacKay. (2/23/86)
+ */
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+
+#ifdef sun3
+#include <sys/core.h>
+#include <machine/param.h>
+#else
+#include <sys/user.h>
+#endif
+
+#include <sys/stat.h>
+#include <a.out.h>
+
+#ifdef sun3
+#define PSIZE NBPG
+#else
+#define PSIZE 10240
+#endif sun3
+
+#define TEXITUDE
+
+#ifdef sun3
+struct core c ;
+#else
+struct user u;
+#endif
+
+struct exec hdr, ohdr;
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ if (scanargs(argc, argv, "undump new-a.out!s a.out%s core%s",
+ &new_name, &a_out_name, &core_name)
+ != 1)
+ exit(1);
+
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+#ifdef sun3
+ read_c(core);
+#else
+ read_u(core);
+#endif
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+#ifdef sun3
+read_c(core) FILE *core;
+{
+ if(fread(&c, sizeof c, 1, core) != 1) {
+ perror("Couldn't read core header");
+ exit(1);
+ }
+ if(c.c_magic != CORE_MAGIC) {
+ fprintf(stderr,"Not a core file\n");
+ exit(1);
+ }
+}
+
+#else
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+#endif sun3
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+ if (fread(&hdr, sizeof hdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read header from a.out file");
+ exit(1);
+ }
+ ohdr = hdr;
+ if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ }
+#ifdef sun3
+ if (hdr.a_magic != c.c_aouthdr.a_magic ||
+ hdr.a_text != c.c_aouthdr.a_text ||
+ hdr.a_data != c.c_aouthdr.a_data ||
+ hdr.a_entry != c.c_aouthdr.a_entry)
+#else
+ if (hdr.a_magic != u.u_exdata.ux_mag ||
+ hdr.a_text != u.u_exdata.ux_tsize ||
+ hdr.a_data != u.u_exdata.ux_dsize ||
+ hdr.a_entry != u.u_exdata.ux_entloc)
+#endif sun3
+ {
+ fprintf(stderr, "Core file didn't come from this a.out\n");
+#ifndef TEXITUDE
+ exit(1);
+#endif
+ }
+
+ printf("Data segment size was %u", hdr.a_data);
+#ifdef sun3
+ hdr.a_data = c.c_dsize;
+#else
+ hdr.a_data = ctob(u.u_dsize);
+#endif sun3
+ hdr.a_bss = 0; /* all data is inited now! */
+ printf(" now is %u\n", hdr.a_data);
+ if (fwrite(&hdr, sizeof hdr, 1, new) != 1)
+ {
+ perror("Couldn't write header to new a.out file");
+ exit(1);
+ }
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int txtcnt = hdr.a_text;
+
+#ifdef sun3
+ fseek(new,(long) N_TXTOFF(hdr)+sizeof(hdr),0);
+ fseek(a_out,(long) N_TXTOFF(hdr)+sizeof(hdr),0);
+ txtcnt -= sizeof(hdr);
+#else
+ fseek(new, N_TXTOFF(hdr), 0);
+ fseek(a_out, N_TXTOFF(hdr), 0);
+#endif sun3
+ if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); /* skip over text */
+ return;
+ }
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+#ifdef sun3
+ int datacnt = c.c_dsize;
+#else
+ int datacnt = ctob(u.u_dsize);
+#endif sun3
+
+ if (hdr.a_magic == OMAGIC)
+#ifdef sun3
+ datacnt += c.c_tsize; /* BZS - not sure about this */
+#else
+ datacnt += u.u_tsize;
+#endif
+
+#ifndef sun3 /* for the sun3 the data should be right where we left off */
+ fseek(core, ctob(UPAGES), 0);
+#endif
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+#ifdef sun3
+ fseek(a_out, N_SYMOFF(ohdr), 0);
+#else
+ fseek(a_out, ohdr.a_data, 1); /* skip over data segment */
+#endif sun3
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/undump/undump.SYS_V.c b/obsolete/support/undump/undump.SYS_V.c
new file mode 100644
index 0000000000..8d61cb61ee
--- /dev/null
+++ b/obsolete/support/undump/undump.SYS_V.c
@@ -0,0 +1,250 @@
+/*
+ * undump - resurrect a core file into a running program.
+ *
+ * for UNIX System V on a 3Bx
+ * that uses the Common Object File Format
+ *
+ * Author:
+ * Lou Salkind
+ * New York University
+ * Tue Mar 3 13:18:25 EST 1987
+ *
+ * Adapted from:
+ * Spencer Thomas's undump and the file unexec.c in GNU emacs
+ */
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/psw.h>
+#include <sys/pcb.h>
+#include <sys/signal.h>
+#include <sys/fs/s5dir.h>
+#include <sys/user.h>
+
+#include <stdio.h>
+#include <sys/stat.h>
+
+#include <aouthdr.h>
+#include <filehdr.h>
+#include <scnhdr.h>
+#include <syms.h>
+
+#define PAGE_SIZE NBPC
+
+struct filehdr fh;
+AOUTHDR aout;
+struct scnhdr tsc;
+struct scnhdr dsc;
+struct scnhdr bsc;
+
+long bias;
+long lnnoptr;
+long text_scnptr;
+long data_scnptr;
+long symlocptr;
+
+main(argc, argv)
+ char **argv;
+{
+ FILE *afp, *cfp, *nfp;
+ struct user u;
+ long off;
+ long size;
+ struct scnhdr sc;
+ int i, n;
+ char *a_out_name = "a.out";
+ char *core_name = "core";
+ char *new_name;
+
+ if (argc < 2 || argc > 4) {
+ fprintf(stderr, "usage: %s new [a.out [core]]\n", argv[0]);
+ exit(1);
+ }
+ new_name = argv[1];
+ if (argc > 2)
+ a_out_name = argv[2];
+ if (argc > 3)
+ core_name = argv[3];
+ afp = fopen(a_out_name, "r");
+ if (afp == 0)
+ Perror(a_out_name);
+ cfp = fopen(core_name, "r");
+ if (cfp == 0)
+ Perror(core_name);
+ nfp = fopen(new_name, "w");
+ if (nfp == 0)
+ Perror(new_name);
+
+ if (fread(&fh, sizeof fh, 1, afp) != 1)
+ Perror("fh read");
+ if (fread(&aout, sizeof aout, 1, afp) != 1)
+ Perror("aout read");
+
+ for (i = 0; i < fh.f_nscns; i++) {
+ if (fread(&sc, sizeof(sc), 1, afp) != 1)
+ Perror("read");
+ if (strcmp(sc.s_name, ".text") == 0) {
+ tsc = sc;
+ } else if (strcmp(sc.s_name, ".data") == 0) {
+ dsc = sc;
+ } else if (strcmp(sc.s_name, ".bss") == 0) {
+ bsc = sc;
+ }
+ }
+
+ if (fread(&u, sizeof u, 1, cfp) != 1)
+ Perror("core read");
+ if (u.u_exdata.ux_tsize != aout.tsize ||
+ u.u_exdata.ux_dsize != aout.dsize ||
+ u.u_exdata.ux_bsize != aout.bsize) {
+ fprintf("mismatch between %s and %s sizes\n", a_out_name, core_name);
+ exit(1);
+ }
+
+ off = USIZE*PAGE_SIZE;
+ size = u.u_dsize *PAGE_SIZE;
+
+ fh.f_flags |= F_RELFLG | F_EXEC;
+ aout.dsize = size;
+ aout.bsize = 0;
+ tsc.s_size = aout.tsize;
+ tsc.s_scnptr = sizeof(fh) + sizeof(aout);
+ tsc.s_scnptr += fh.f_nscns * sizeof (struct scnhdr);
+ text_scnptr = tsc.s_scnptr;
+ lnnoptr = tsc.s_lnnoptr;
+ symlocptr = fh.f_symptr;
+
+ dsc.s_paddr = dsc.s_vaddr = aout.data_start;
+ dsc.s_size = aout.dsize;
+ dsc.s_scnptr = tsc.s_scnptr + tsc.s_size;
+ data_scnptr = dsc.s_scnptr;
+
+ bsc.s_paddr = bsc.s_vaddr = aout.data_start + aout.dsize;
+ bsc.s_size = aout.bsize;
+ bsc.s_scnptr = 0L;
+ bias = dsc.s_scnptr + dsc.s_size - lnnoptr;
+
+ if (fh.f_symptr > 0L)
+ fh.f_symptr += bias;
+ if (tsc.s_lnnoptr > 0L)
+ tsc.s_lnnoptr += bias;
+
+ if (fwrite(&fh, sizeof(fh), 1, nfp) != 1)
+ Perror("fh write");
+ if (fwrite(&aout, sizeof(aout), 1, nfp) != 1)
+ Perror("aout write");
+ if (fwrite(&tsc, sizeof(tsc), 1, nfp) != 1)
+ Perror("ts write");
+ if (fwrite(&dsc, sizeof(dsc), 1, nfp) != 1)
+ Perror("ds write");
+ if (fwrite(&bsc, sizeof(bsc), 1, nfp) != 1)
+ Perror("bs write");
+ fseek(nfp, (long)text_scnptr, 0);
+ copy(afp, nfp, aout.tsize);
+ fseek(cfp, off, 0);
+ fseek(nfp, (long)data_scnptr, 0);
+ copy(cfp, nfp, size);
+ copy_syms(afp, nfp);
+ fclose(nfp);
+ fclose(afp);
+ fclose(cfp);
+ mark_x(new_name);
+ exit(0);
+}
+
+copy_syms(afp, nfp)
+ register FILE *afp, *nfp;
+{
+ char page[BUFSIZ];
+ register int n;
+ register int nsyms;
+ struct syment symentry;
+ AUXENT auxentry;
+
+ /* if there are line numbers, copy them */
+ if (lnnoptr) {
+ if (fseek(afp, lnnoptr, 0) == -1L)
+ Perror("ln fseek");
+ copy(afp, nfp, symlocptr - lnnoptr);
+ }
+
+ /* now write the symbol table */
+ if (fseek(nfp, fh.f_symptr, 0) == -1L)
+ Perror("fh fseek");
+ for (nsyms = 0; nsyms < fh.f_nsyms; nsyms++) {
+ if (fread(&symentry, SYMESZ, 1, afp) != 1)
+ Perror("sym fread");
+ if (fwrite(&symentry, SYMESZ, 1, nfp) != 1)
+ Perror("sym fwrite");
+ /*
+ * adjust relative offsets of line numbers for
+ * function definitions
+ */
+ if (symentry.n_numaux) {
+ if (fread(&auxentry, AUXESZ, 1, afp) != 1)
+ Perror("aux fread");
+ nsyms++;
+ if (ISFCN (symentry.n_type))
+ auxentry.x_sym.x_fcnary.x_fcn.x_lnnoptr += bias;
+ if (fwrite(&auxentry, AUXESZ, 1, nfp) != 1)
+ Perror("aux fwrite");
+ }
+ }
+
+ /* finally write the string table, if any */
+ while ((n = fread(page, 1, sizeof page, afp)) > 0) {
+ if (fwrite(page, 1, n, nfp) != n)
+ Perror("sym write");
+ }
+ if (n < 0)
+ Perror("sym read");
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
+copy(a, b, size)
+ register FILE *a, *b;
+ long size;
+{
+ char buf[BUFSIZ];
+ register int i, n;
+
+ while (size > 0) {
+ i = size;
+ if (i > sizeof buf)
+ i = sizeof buf;
+ if ((n = fread(buf, 1, i, a)) <= 0)
+ Perror("copy read");
+ if (fwrite(buf, 1, n, b) != n)
+ Perror("copy write");
+ size -= n;
+ }
+}
+
+Perror(s)
+ char *s;
+{
+ perror(s);
+ exit(1);
+}
diff --git a/obsolete/support/undump/undump.VAX4_2.c b/obsolete/support/undump/undump.VAX4_2.c
new file mode 100644
index 0000000000..f5588abf6e
--- /dev/null
+++ b/obsolete/support/undump/undump.VAX4_2.c
@@ -0,0 +1,272 @@
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * It requires a local subroutine called scanargs, somewhat similar to
+ * getopt (I think). You should be able to easily get around this, though.
+ * =Spencer
+ */
+
+
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <sys/user.h>
+#include <sys/stat.h>
+#include <a.out.h>
+
+#define PSIZE 10240
+
+struct user u;
+struct exec hdr, ohdr;
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ if (scanargs(argc, argv, "undump new-a.out!s a.out%s core%s",
+ &new_name, &a_out_name, &core_name)
+ != 1)
+ exit(1);
+
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+ read_u(core);
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+ if (fread(&hdr, sizeof hdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read header from a.out file");
+ exit(1);
+ }
+ ohdr = hdr;
+ if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ }
+ if (hdr.a_magic != u.u_exdata.ux_mag ||
+ hdr.a_text != u.u_exdata.ux_tsize ||
+ hdr.a_data != u.u_exdata.ux_dsize ||
+ hdr.a_entry != u.u_exdata.ux_entloc)
+ {
+ fprintf(stderr, "Core file didn't come from this a.out\n");
+ exit(1);
+ }
+
+ printf("Data segment size was %u", hdr.a_data);
+ hdr.a_data = ctob(u.u_dsize);
+ hdr.a_bss = 0; /* all data is inited now! */
+ printf(" now is %u\n", hdr.a_data);
+ if (fwrite(&hdr, sizeof hdr, 1, new) != 1)
+ {
+ perror("Couldn't write header to new a.out file");
+ exit(1);
+ }
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int txtcnt = hdr.a_text;
+
+ fseek(new, N_TXTOFF(hdr), 0);
+ fseek(a_out, N_TXTOFF(hdr), 0);
+ if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); /* skip over text */
+ return;
+ }
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+ int datacnt = ctob(u.u_dsize);
+
+ if (hdr.a_magic == OMAGIC)
+ datacnt += u.u_tsize;
+ fseek(core, ctob(UPAGES), 0);
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+ fseek(a_out, ohdr.a_data, 1); /* skip over data segment */
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/undump/undump.VAX4_3.c b/obsolete/support/undump/undump.VAX4_3.c
new file mode 100644
index 0000000000..19fe9315bb
--- /dev/null
+++ b/obsolete/support/undump/undump.VAX4_3.c
@@ -0,0 +1,264 @@
+/*
+ * This program was advertised on unix-wizards. I have had such a large
+ * response I'm sending it out to the world.
+ *
+ * Here is the source. It works fine under 4.1bsd, I see no fundamental
+ * reason why it shouldn't work on an 11. (Except possibly small format
+ * changes in exec header or user structure.) No documentation yet.
+ * Usage is
+ * undump new-a.out-file [old-a.out-file] [core-file]
+ * where old-a.out-file and core-file default to "a.out" and "core",
+ * respectively. Probably should have an option to not require
+ * old-a.out-file if the core came from a 407 file.
+ *
+ * It doesn't preserve open files, and the program is re-entered at main
+ * when you run it. It's used locally to dump a lisp and restart it.
+ *
+ * It requires a local subroutine called scanargs, somewhat similar to
+ * getopt (I think). You should be able to easily get around this, though.
+ * =Spencer
+ */
+
+
+/*
+ * undump.c - Convert a core file to an a.out.
+ *
+ * Author: Spencer W. Thomas
+ * Computer Science Dept.
+ * University of Utah
+ * Date: Wed Feb 17 1982
+ * Copyright (c) 1982 Spencer W. Thomas
+ *
+ * Usage:
+ * undump new-a.out [a.out] [core]
+ */
+
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <sys/user.h>
+#include <sys/stat.h>
+#include <a.out.h>
+
+#define PSIZE 10240
+
+struct user u;
+struct exec hdr, ohdr;
+
+main(argc, argv)
+char **argv;
+{
+ char *new_name, *a_out_name = "a.out", *core_name = "core";
+ FILE *new, *a_out, *core;
+
+ if (scanargs(argc, argv, "undump new-a.out!s a.out%s core%s",
+ &new_name, &a_out_name, &core_name)
+ != 1)
+ exit(1);
+
+ if ((a_out = fopen(a_out_name, "r")) == NULL)
+ {
+ perror(a_out_name);
+ exit(1);
+ }
+ if ((core = fopen(core_name, "r")) == NULL)
+ {
+ perror(core_name);
+ exit(1);
+ }
+ if ((new = fopen(new_name, "w")) == NULL)
+ {
+ perror(new_name);
+ exit(1);
+ }
+
+ read_u(core);
+ make_hdr(new, a_out);
+ copy_text(new, a_out);
+ copy_data(new, core);
+ copy_sym(new, a_out);
+ fclose(new);
+ fclose(core);
+ fclose(a_out);
+ mark_x(new_name);
+}
+
+/*
+ * read the u structure from the core file.
+ */
+read_u(core)
+FILE *core;
+{
+ if ( fread(&u, sizeof u, 1, core) != 1 )
+ {
+ perror("Couldn't read user structure from core file");
+ exit(1);
+ }
+}
+
+/*
+ * Make the header in the new a.out from the header in the old one
+ * modified by the new data size.
+ */
+make_hdr(new, a_out)
+FILE *new, *a_out;
+{
+ if (fread(&hdr, sizeof hdr, 1, a_out) != 1)
+ {
+ perror("Couldn't read header from a.out file");
+ exit(1);
+ }
+ ohdr = hdr;
+ if N_BADMAG(hdr)
+ {
+ fprintf(stderr, "a.out file doesn't have legal magic number\n");
+ exit(1);
+ }
+
+ printf("Data segment size was %u", hdr.a_data);
+ hdr.a_data = ctob(u.u_dsize);
+ hdr.a_bss = 0; /* all data is inited now! */
+ printf(" now is %u\n", hdr.a_data);
+ if (fwrite(&hdr, sizeof hdr, 1, new) != 1)
+ {
+ perror("Couldn't write header to new a.out file");
+ exit(1);
+ }
+}
+
+/*
+ * Copy the text from the a.out to the new a.out
+ */
+copy_text(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int txtcnt = hdr.a_text;
+
+ fseek(new, N_TXTOFF(hdr), 0);
+ fseek(a_out, N_TXTOFF(hdr), 0);
+ if (hdr.a_magic == OMAGIC)
+ {
+ printf("a.out file is not shared text, getting text from core file\n");
+ fseek(a_out, hdr.a_text, 1); /* skip over text */
+ return;
+ }
+ while (txtcnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ txtcnt -= PSIZE;
+ }
+ if (txtcnt)
+ {
+ if (fread(page, txtcnt, 1, a_out) != 1)
+ {
+ perror("Read failure on a.out text");
+ exit(1);
+ }
+ if (fwrite(page, txtcnt, 1, new) != 1)
+ {
+ perror("Write failure in text segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * copy the data from the core file to the new a.out
+ */
+copy_data(new, core)
+FILE *new, *core;
+{
+ char page[PSIZE];
+ int datacnt = ctob(u.u_dsize);
+
+ if (hdr.a_magic == OMAGIC)
+ datacnt += u.u_tsize;
+ fseek(core, ctob(UPAGES), 0);
+ while (datacnt >= PSIZE)
+ {
+ if (fread(page, PSIZE, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, PSIZE, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ datacnt -= PSIZE;
+ }
+ if (datacnt)
+ {
+ if (fread(page, datacnt, 1, core) != 1)
+ {
+ perror("Read failure on core data");
+ exit(1);
+ }
+ if (fwrite(page, datacnt, 1, new) != 1)
+ {
+ perror("Write failure in data segment");
+ exit(1);
+ }
+ }
+}
+
+/*
+ * Copy the relocation information and symbol table from the a.out to the new
+ */
+copy_sym(new, a_out)
+FILE *new, *a_out;
+{
+ char page[PSIZE];
+ int n;
+
+ fseek(a_out, ohdr.a_data, 1); /* skip over data segment */
+ while ((n = fread(page, 1, PSIZE, a_out)) > 0)
+ {
+ if (fwrite(page, 1, n, new) != n)
+ {
+ perror("Error writing symbol table to new a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ return;
+ }
+ }
+ if (n < 0)
+ {
+ perror("Error reading symbol table from a.out");
+ fprintf(stderr, "new a.out should be ok otherwise\n");
+ }
+}
+
+/*
+ * After succesfully building the new a.out, mark it executable
+ */
+mark_x(name)
+char *name;
+{
+ struct stat sbuf;
+ int um;
+
+ um = umask(777);
+ umask(um);
+ if (stat(name, &sbuf) == -1)
+ {
+ perror ("Can't stat new a.out");
+ fprintf(stderr, "Setting protection to %o\n", 0777 & ~um);
+ sbuf.st_mode = 0777;
+ }
+ sbuf.st_mode |= 0111 & ~um;
+ if (chmod(name, sbuf.st_mode) == -1)
+ perror("Couldn't change mode of new a.out to executable");
+
+}
+
diff --git a/obsolete/support/win32-emacs-auctex/LICENSES b/obsolete/support/win32-emacs-auctex/LICENSES
new file mode 100644
index 0000000000..547a3e3c69
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/LICENSES
@@ -0,0 +1,316 @@
+<!--*- markdown -*-->
+
+Licenses
+========
+
+Emacs
+-----
+
+[GPL version 3](www.gnu.org/licenses/gpl.html)
+
+AUCTeX
+------
+
+[GPL version 3](www.gnu.org/licenses/gpl.html)
+
+librsvg
+-------
+
+[GNU Library GPL](http://www.gnu.org/copyleft/library.html)
+
+gnutls
+------
+
+[Lesser GPL](http://www.gnu.org/licenses/lgpl.html)
+or
+[GPL version 3](www.gnu.org/licenses/gpl.html)
+
+libtiff
+-------
+
+ Copyright (c) 1988-1997 Sam Leffler
+ Copyright (c) 1991-1997 Silicon Graphics, Inc.
+
+ Permission to use, copy, modify, distribute, and sell this software and
+ its documentation for any purpose is hereby granted without fee, provided
+ that (i) the above copyright notices and this permission notice appear in
+ all copies of the software and related documentation, and (ii) the names of
+ Sam Leffler and Silicon Graphics may not be used in any advertising or
+ publicity relating to the software without the specific, prior written
+ permission of Sam Leffler and Silicon Graphics.
+
+ THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+ IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ OF THIS SOFTWARE.
+
+libpng
+------
+
+ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+ If you modify libpng you may insert additional notices immediately following
+ this sentence.
+
+ libpng versions 1.2.6, August 15, 2004, through 1.2.8, December 3, 2004, are
+ Copyright (c) 2004 Glenn Randers-Pehrson, and are
+ distributed according to the same disclaimer and license as libpng-1.2.5
+ with the following individual added to the list of Contributing Authors:
+
+ Cosmin Truta
+
+ libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are
+ Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
+ distributed according to the same disclaimer and license as libpng-1.0.6
+ with the following individuals added to the list of Contributing Authors:
+
+ Simon-Pierre Cadieux
+ Eric S. Raymond
+ Gilles Vollant
+
+ and with the following additions to the disclaimer:
+
+ There is no warranty against interference with your enjoyment of the
+ library or against infringement. There is no warranty that our
+ efforts or the library will fulfill any of your particular purposes
+ or needs. This library is provided with all faults, and the entire
+ risk of satisfactory quality, performance, accuracy, and effort is with
+ the user.
+
+ libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
+ Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
+ distributed according to the same disclaimer and license as libpng-0.96,
+ with the following individuals added to the list of Contributing Authors:
+
+ Tom Lane
+ Glenn Randers-Pehrson
+ Willem van Schaik
+
+ libpng versions 0.89, June 1996, through 0.96, May 1997, are
+ Copyright (c) 1996, 1997 Andreas Dilger
+ Distributed according to the same disclaimer and license as libpng-0.88,
+ with the following individuals added to the list of Contributing Authors:
+
+ John Bowler
+ Kevin Bracey
+ Sam Bushell
+ Magnus Holmgren
+ Greg Roelofs
+ Tom Tanner
+
+ libpng versions 0.5, May 1995, through 0.88, January 1996, are
+ Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+ For the purposes of this copyright and license, "Contributing Authors"
+ is defined as the following set of individuals:
+
+ Andreas Dilger
+ Dave Martindale
+ Guy Eric Schalnat
+ Paul Schmidt
+ Tim Wegner
+
+ The PNG Reference Library is supplied "AS IS". The Contributing Authors
+ and Group 42, Inc. disclaim all warranties, expressed or implied,
+ including, without limitation, the warranties of merchantability and of
+ fitness for any purpose. The Contributing Authors and Group 42, Inc.
+ assume no liability for direct, indirect, incidental, special, exemplary,
+ or consequential damages, which may result from the use of the PNG
+ Reference Library, even if advised of the possibility of such damage.
+
+ Permission is hereby granted to use, copy, modify, and distribute this
+ source code, or portions hereof, for any purpose, without fee, subject
+ to the following restrictions:
+
+ 1. The origin of this source code must not be misrepresented.
+
+ 2. Altered versions must be plainly marked as such and
+ must not be misrepresented as being the original source.
+
+ 3. This Copyright notice may not be removed or altered from
+ any source or altered source distribution.
+
+ The Contributing Authors and Group 42, Inc. specifically permit, without
+ fee, and encourage the use of this source code as a component to
+ supporting the PNG file format in commercial products. If you use this
+ source code in a product, acknowledgment is not required but would be
+ appreciated.
+
+zlib
+----
+
+ zlib.h -- interface of the 'zlib' general purpose compression library
+ version 1.2.8, April 28th, 2013
+
+ Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+
+ The data format used by the zlib library is described by RFCs (Request for
+ Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
+ (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
+
+libjpeg
+-------
+
+ In plain English:
+
+ 1. We don't promise that this software works. (But if you find any bugs,
+ please let us know!)
+ 2. You can use this software for whatever you want. You don't have to pay us.
+ 3. You may not pretend that you wrote this software. If you use it in a
+ program, you must acknowledge somewhere in your documentation that
+ you've used the IJG code.
+
+ In legalese:
+
+ The authors make NO WARRANTY or representation, either express or implied,
+ with respect to this software, its quality, accuracy, merchantability, or
+ fitness for a particular purpose. This software is provided "AS IS", and you,
+ its user, assume the entire risk as to its quality and accuracy.
+
+ This software is copyright (C) 1991-1998, Thomas G. Lane.
+ All Rights Reserved except as specified below.
+
+ Permission is hereby granted to use, copy, modify, and distribute this
+ software (or portions thereof) for any purpose, without fee, subject to these
+ conditions:
+ (1) If any part of the source code for this software is distributed, then this
+ README file must be included, with this copyright and no-warranty notice
+ unaltered; and any additions, deletions, or changes to the original files
+ must be clearly indicated in accompanying documentation.
+ (2) If only executable code is distributed, then the accompanying
+ documentation must state that "this software is based in part on the work of
+ the Independent JPEG Group".
+ (3) Permission for use of this software is granted only if the user accepts
+ full responsibility for any undesirable consequences; the authors accept
+ NO LIABILITY for damages of any kind.
+
+ These conditions apply to any software derived from or based on the IJG code,
+ not just to the unmodified library. If you use our work, you ought to
+ acknowledge us.
+
+ Permission is NOT granted for the use of any IJG author's name or company name
+ in advertising or publicity relating to this software or products derived from
+ it. This software may be referred to only as "the Independent JPEG Group's
+ software".
+
+ We specifically permit and encourage the use of this software as the basis of
+ commercial products, provided that all warranty or liability claims are
+ assumed by the product vendor.
+
+
+ ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
+ sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
+ ansi2knr.c is NOT covered by the above copyright and conditions, but instead
+ by the usual distribution terms of the Free Software Foundation; principally,
+ that you must include source code if you redistribute it. (See the file
+ ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
+ of any program generated from the IJG code, this does not limit you more than
+ the foregoing paragraphs do.
+
+ The Unix configuration script "configure" was produced with GNU Autoconf.
+ It is copyright by the Free Software Foundation but is freely distributable.
+ The same holds for its supporting scripts (config.guess, config.sub,
+ ltconfig, ltmain.sh). Another support script, install-sh, is copyright
+ by M.I.T. but is also freely distributable.
+
+ It appears that the arithmetic coding option of the JPEG spec is covered by
+ patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot
+ legally be used without obtaining one or more licenses. For this reason,
+ support for arithmetic coding has been removed from the free JPEG software.
+ (Since arithmetic coding provides only a marginal gain over the unpatented
+ Huffman mode, it is unlikely that very many implementations will support it.)
+ So far as we are aware, there are no patent restrictions on the remaining
+ code.
+
+ The IJG distribution formerly included code to read and write GIF files.
+ To avoid entanglement with the Unisys LZW patent, GIF reading support has
+ been removed altogether, and the GIF writer has been simplified to produce
+ "uncompressed GIFs". This technique does not use the LZW algorithm; the
+ resulting GIF files are larger than usual, but are readable by all standard
+ GIF decoders.
+
+ We are required to state that
+ "The Graphics Interchange Format(c) is the Copyright property of
+ CompuServe Incorporated. GIF(sm) is a Service Mark property of
+ CompuServe Incorporated."
+
+giflib
+------
+
+ The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+libxml2
+-------
+
+ Except where otherwise noted in the source code (e.g. the files hash.c,
+ list.c and the trio files, which are covered by a similar licence but
+ with different Copyright notices) all the files are:
+
+ Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is fur-
+ nished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+ NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+ NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of Daniel Veillard shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from him.
+
+---
diff --git a/obsolete/support/win32-emacs-auctex/README.md b/obsolete/support/win32-emacs-auctex/README.md
new file mode 100644
index 0000000000..8ef3c6f342
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/README.md
@@ -0,0 +1,69 @@
+Emacs and AUCTeX for Windows
+============================
+
+The file
+[`emacs-24.5_auctex-11.89.zip`](emacs-24.5_auctex-11.89.zip)
+contains a ready-to-use version of [Emacs](http://www.gnu.org/software/emacs)
+and [AUCTeX](http://www.gnu.org/software/auctex) for Windows.
+
+Installation
+------------
+
+Extract
+[`emacs-24.5_auctex-11.89.zip`](emacs-24.5_auctex-11.89.zip)
+in a directory of your choice and execute
+
+ emacs-24.5_auctex-11.89\bin\addpm.exe
+
+in order to create a shortcut in the "start menu".
+
+Documentation
+-------------
+
+### Manuals
+
+#### Emacs
+
+* [The Emacs User Manual](doc/emacs.pdf)
+* [Specialized Emacs Features](doc/emacs-xtra.pdf)
+* [The Emacs Lisp Reference](doc/elisp.pdf)
+
+#### AUCTeX
+* [The AUCTeX User Manual](doc/auctex.pdf)
+* [The preview-latex Manual](doc/preview-latex.pdf)
+
+### Reference Cards
+
+* [Emacs Reference Card](doc/emacs-ref.pdf)
+* [Dired Reference Card](doc/dired-ref.pdf)
+* [AUCTeX Reference Card](doc/tex-ref.pdf)
+
+Sources
+-------
+
+This package contains files from various sources:
+
+* http://www.gnu.org/software/emacs
+* http://www.gnu.org/software/auctex
+* http://www.libpng.org
+* http://libjpeg.sourceforge.net
+* http://www.zlib.net
+* http://www.libtiff.org
+* http://giflib.sourceforge.net
+* http://www.gnutls.org
+* http://librsvg.sourceforge.net
+* http://www.xmlsoft.org
+
+
+Acknowledgments
+---------------
+
+All libraries which are not part of GNU Emacs or AUCTeX were compiled
+with [MinGW](http://www.mingw.org) by Eli Zaretskii.
+
+See [ezwinports](http://sourceforge.net/projects/ezwinports)
+and the
+[ezwinports download area](http://sourceforge.net/projects/ezwinports/files)
+for more information.
+
+---
diff --git a/obsolete/support/win32-emacs-auctex/doc/auctex.pdf b/obsolete/support/win32-emacs-auctex/doc/auctex.pdf
new file mode 100644
index 0000000000..4ddb0238be
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/doc/auctex.pdf
Binary files differ
diff --git a/obsolete/support/win32-emacs-auctex/doc/dired-ref.pdf b/obsolete/support/win32-emacs-auctex/doc/dired-ref.pdf
new file mode 100644
index 0000000000..11ddc20b31
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/doc/dired-ref.pdf
Binary files differ
diff --git a/obsolete/support/win32-emacs-auctex/doc/elisp.pdf b/obsolete/support/win32-emacs-auctex/doc/elisp.pdf
new file mode 100644
index 0000000000..03b3a1131b
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/doc/elisp.pdf
Binary files differ
diff --git a/obsolete/support/win32-emacs-auctex/doc/emacs-ref.pdf b/obsolete/support/win32-emacs-auctex/doc/emacs-ref.pdf
new file mode 100644
index 0000000000..2aa342b4bc
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/doc/emacs-ref.pdf
Binary files differ
diff --git a/obsolete/support/win32-emacs-auctex/doc/emacs-xtra.pdf b/obsolete/support/win32-emacs-auctex/doc/emacs-xtra.pdf
new file mode 100644
index 0000000000..bb9642bcac
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/doc/emacs-xtra.pdf
Binary files differ
diff --git a/obsolete/support/win32-emacs-auctex/doc/emacs.pdf b/obsolete/support/win32-emacs-auctex/doc/emacs.pdf
new file mode 100644
index 0000000000..e8573cf8c0
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/doc/emacs.pdf
Binary files differ
diff --git a/obsolete/support/win32-emacs-auctex/doc/preview-latex.pdf b/obsolete/support/win32-emacs-auctex/doc/preview-latex.pdf
new file mode 100644
index 0000000000..bc891cbb0d
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/doc/preview-latex.pdf
Binary files differ
diff --git a/obsolete/support/win32-emacs-auctex/doc/tex-ref.pdf b/obsolete/support/win32-emacs-auctex/doc/tex-ref.pdf
new file mode 100644
index 0000000000..f1e14d5208
--- /dev/null
+++ b/obsolete/support/win32-emacs-auctex/doc/tex-ref.pdf
Binary files differ
diff --git a/obsolete/support/windex/windex.c b/obsolete/support/windex/windex.c
new file mode 100644
index 0000000000..c61213d5a2
--- /dev/null
+++ b/obsolete/support/windex/windex.c
@@ -0,0 +1,927 @@
+/* windex.c
+** Author: Ronald L. Rivest
+** Helpful modifications from Carl Manning, Ron Greenberg.
+** Documentation: see windex.doc
+** Version: 1/26/90
+** Basic functionality:
+** (1) input the file windex.tex into your tex source
+** (2) put index entries into your Tex document (e.g. foo.tex)
+** These are written out into file foo.idx by Tex.
+** (3) Run `windex foo' to compile index.
+** Output is now in file foo.index
+** (4) Include in foo.tex the line
+** \makeatletter\@input{book.index}\makeatother
+** where you want the index to go.
+*/
+
+#include <stdio.h>
+#include <malloc.h>
+#include <ctype.h>
+#include <strings.h>
+
+/* Miscellaneous constants */
+#define TRUE 1
+#define FALSE 0
+#define DEBUG 0
+#define CR '\r'
+#define LF '\n'
+#define EOS 0 /* end of string */
+
+/* WINDEX constants */
+/* String constants */
+#define WINDEX_BANNER "WINDEX index-creation program. Version 1/26/90.\n"
+#define INPUT_EXTENSION ".idx"
+#define OUTPUT_EXTENSION ".index"
+#define MAX_STRING_LENGTH 300
+#define DEFAULT_FORMAT "0" /* just print the page number */
+char NULL_FORMAT[] = ""; /* null format string */
+#define NULL_SORT_CHARS "-" /* nonblank characters to ignore when sorting */
+#define UNKNOWN -1
+
+/* Character constants: changing these constants changes syntax of windex */
+#define SLASH '/' /* separates levels in sort key */
+#define LANGLE '<' /* marks entry to start range */
+#define RANGLE '>' /* marks entry to end range */
+#define LBRACE '{' /* marks start of print value */
+#define RBRACE '}' /* marks end of print value */
+#define LBRACKET '[' /* marks start of format string */
+#define RBRACKET ']' /* marks end of format string */
+#define ZERO '0' /* marks position of page or range in format */
+#define COLON ':' /* marks beginning of page number */
+#define BLANK ' ' /* whitespace to ignore at beginning */
+/* Windex policy switches */
+#define MAKE_RANGES TRUE /* create ranges for adjacent page entries */
+#define IGNORE_SMALL_WORDS TRUE /* ignore initial small words in subitems */
+ /* when sorting them into order */
+
+/* TEX constants */
+#define TEX_BEGIN_GROUP '{'
+#define TEX_END_GROUP '}'
+#define TEX_EMPTY_GROUP "{}"
+#define TEX_BEGIN_INDEX "\\begin{theindex}\n"
+#define TEX_END_INDEX "\n\n\\end{theindex}\n"
+#define TEX_MAX_LEVEL 2
+#define TEX_BEGIN_LEVEL0 "\n\\item "
+#define TEX_BEGIN_LEVEL1 "\n \\subitem "
+#define TEX_BEGIN_LEVEL2 "\n \\subsubitem "
+#define TEX_AFTER_ENTRY ", " /* string to print after print value */
+#define TEX_BETWEEN_PAGES ", " /* string to print between page entries */
+#define TEX_BETWEEN_RANGE "--"
+/* end of TEX constants */
+
+FILE *instream; /* lines as produced by \index commands */
+FILE *outstream; /* actual latex commands to make index */
+
+typedef /* for a page or a range of pages */
+struct pageref {
+ int level; /* 0...TEX_MAX_LEVEL */
+ char *sortkey[TEX_MAX_LEVEL+1]; /* values to sort/compare keys by */
+ char *pv; /* print value or else NULL */
+ char *format; /* format or replacement for page reference */
+ int firstpageno; /* first page number in range or UNKNOWN */
+ int lastpageno; /* last page number in range or UNKNOWN */
+ struct pageref *next; /* link to next page reference */
+} entry;
+
+entry elist;
+entry *elast;
+
+/* mymalloc(n)
+** allocate n bytes but check for out of memory condition
+*/
+char *mymalloc(n)
+int n;
+{ char *p = malloc((unsigned)n);
+ if (p == NULL)
+ { printf("\nERROR: Windex ran out of memory.\n");
+ exit(0);
+ }
+ return(p);
+}
+
+/* mystrdup(s)
+** copy string s but check for out of memory condition
+*/
+char *mystrdup(s)
+char *s;
+{ char *p = mymalloc(strlen(s)+1);
+ strcpy(p,s);
+ return(p);
+}
+
+/* uppercase(c)
+** convert character to uppercase
+*/
+char uppercase(c)
+char c;
+{ if (islower(c)) return(toupper(c));
+ return(c);
+}
+
+/* printspage(s)
+** TRUE if s is a format string that contains a spot to print a pageno
+*/
+printspage(s)
+char *s;
+{ if (*s == EOS) return(FALSE);
+ if (*s == ZERO) return(TRUE);
+ return(printspage(s+1));
+}
+
+/* sortpageno(e)
+** return page to sort entry e by
+*/
+sortpageno(e)
+entry *e;
+{ if (e->firstpageno != UNKNOWN) return(e->firstpageno);
+ return(e->lastpageno);
+}
+
+/* entrylesseq(e1,e2,format_first)
+** Returns TRUE if entry e1 should come before (or is equal to) entry e2
+** in the sorted list of entries. This is the basic comparison operation
+** for sorting the entries into order.
+** if format_first == TRUE then order by key, format, then page
+** if format_first == FALSE then order by key, page, then format
+*/
+entrylesseq(e1,e2,format_first)
+entry *e1,*e2;
+int format_first;
+{ int i,r;
+ /* if e1 doesn't exist, then e2 comes first */
+ if (e1 == NULL) return(FALSE);
+ /* if e2 doesn't exist, then e1 comes first */
+ if (e2 == NULL) return(TRUE);
+
+ /* compare sort keys and return TRUE if e1 sorts first,
+ ** FALSE if e2 sorts first.
+ */
+ for (i=0;i<=e1->level && i<=e2->level;i++)
+ { r = keycmp(i,e1,e2);
+ if (r<0) return(TRUE);
+ if (r>0) return(FALSE);
+ /* level i keys are the same */
+ if (e1->level == i && e2->level > i) return(TRUE);
+ if (e1->level > i && e2->level == i) return(FALSE);
+ }
+
+ /* The sort keys are the same. */
+ if (format_first)
+ {
+ r = strcmp(e1->format,e2->format);
+ if (r<0) return(TRUE);
+ if (r>0) return(FALSE);
+ /* formats are the same */
+ if (sortpageno(e1) <= sortpageno(e2)) return(TRUE);
+ return(FALSE);
+ }
+ else /* sort by pageno, then format */
+ {
+ if (sortpageno(e1)<sortpageno(e2)) return(TRUE);
+ if (sortpageno(e1)>sortpageno(e2)) return(FALSE);
+ /* sort pages are the same */
+ if (strcmp(e1->format,e2->format)<=0) return(TRUE);
+ return(FALSE);
+ }
+}
+
+/* skipspace(p)
+** advance p beyond any space characters (space, tabs, CRs, etc.)
+*/
+char *skipspace(p)
+char *p;
+{ while (*p != EOS && isspace(*p)) p++;
+ return(p);
+}
+
+/* skipnonsortletters(p)
+** advance p beyond any non-sorting letters: whitespace or '-'s.
+*/
+char *skipnonsortletters(p)
+char *p;
+{ char *q;
+ if (*p == EOS) return(p);
+ if (isspace(*p)) return(skipnonsortletters(p+1));
+ q = NULL_SORT_CHARS;
+ while (*q && *p != *q) q++;
+ if (*q) return(skipnonsortletters(p+1));
+ return(p);
+}
+
+char *smallword[] =
+{ "a", "about", "also", "an", "and", "as", "at",
+ "by",
+ "of",
+ "for", "from",
+ "in", "into",
+ "on", "onto",
+ "the", "to",
+ "with",
+ "***" /* end marker */
+};
+
+/* skipsmallwords(p)
+** advances p over any small words in the small word list.
+** capitalization is ignored.
+** small word must be followed by a blank
+*/
+char *skipsmallwords(p)
+char *p;
+{ int i;
+ char *pp, *q;
+ p = skipnonsortletters(p);
+ for (i=0;strcmp("***",smallword[i]);i++)
+ { q = smallword[i];
+ pp = p;
+ while (*pp && *q && uppercase(*pp) == uppercase(*q))
+ { pp++;
+ q++;
+ };
+ if (*q==EOS && isspace(*pp))
+ return(skipsmallwords(pp));
+ }
+ return(p);
+}
+
+/* keycmp(i,e1,e2)
+** compare e1->sortkey[i] with e2->sortkey[i]
+** return -1 if e1 sorts first
+** 0 if they are the same
+** 1 if e2 sorts first
+*/
+keycmp(i,e1,e2)
+int i;
+entry *e1, *e2;
+{ char *p1, *p2;
+ int r;
+
+ /* get sort keys */
+ p1 = e1->sortkey[i];
+ p2 = e2->sortkey[i];
+
+ /* ignore initial small words when sorting subitems */
+ if (i>0 && IGNORE_SMALL_WORDS)
+ { p1 = skipsmallwords(p1);
+ p2 = skipsmallwords(p2);
+ }
+
+ /* find position of their first difference, if any (ignoring case,
+ ** blanks, hyphens)
+ */
+ p1 = skipnonsortletters(p1);
+ p2 = skipnonsortletters(p2);
+ while (*p1!=EOS && *p2!=EOS && uppercase(*p1) == uppercase(*p2))
+ { p1 = skipnonsortletters(p1+1);
+ p2 = skipnonsortletters(p2+1);
+ }
+ if ( *p1 == EOS && *p2 != EOS )
+ return(-1); /* e1 a prefix of e2 --> -1 */
+ if ( *p2 == EOS && *p1 != EOS )
+ return(1); /* e2 a prefix of e1 --> FALSE */
+ /* sort alphabetically by uppercase version of letters, if possible */
+ if (uppercase(*p1) < uppercase(*p2)) return(-1);
+ if (uppercase(*p2) < uppercase(*p1)) return(1);
+
+ /* now the uppercase version of the entries are known to be the same */
+ /* redo the comparison, paying attention to case */
+ /* sort upper case entry AFTER lower case entry */
+ /* get sort keys */
+ p1 = e1->sortkey[i];
+ p2 = e2->sortkey[i];
+ while (*p1!=EOS && *p2!=EOS && *p1 == *p2)
+ { p1 = skipnonsortletters(p1+1);
+ p2 = skipnonsortletters(p2+1);
+ }
+ /* sort alphabetically by differing cases of same letter, if possible */
+ if (isupper(*p1) && islower(*p2)) return(1);
+ if (isupper(*p2) && islower(*p1)) return(-1);
+
+ /* keys are totally identical */
+ /* try to sort by blanks and hyphens ??? */
+ r = strcmp(e1->sortkey[i],e2->sortkey[i]);
+ if (r!=0)
+ printf("\n----- WARNING: Keys `%s' and `%s' are almost identical.\n",
+ e1->sortkey[i],e2->sortkey[i]);
+ return(r);
+}
+
+/* mergelists(e1,e2,format_first)
+** This is the basic merge operation for a merge-sort.
+** The entries e1 and e2 are the heads of two disjoint lists of entries.
+** The result is the merged list of entries.
+** The lists are destructively modified in this merge by modification
+** of the `next' entries.
+** The `entrylesseq' operator is used for comparisons between entries.
+** if format_first == TRUE then merge by key, format, then page
+** if format_first == FALSE then merge by key, page, then format
+*/
+entry *mergelists(e1,e2,format_first)
+entry *e1, *e2;
+int format_first;
+{ entry head, *last = &head;
+ head.next = NULL;
+ while (TRUE) {
+ if (e1 == NULL) { last->next = e2; return(head.next); }
+ if (e2 == NULL) { last->next = e1; return(head.next); }
+ if (entrylesseq(e1,e2,format_first))
+ {
+ if (DEBUG)
+ { printf("\n [");
+ printsortkey(e1);
+ printf("] <= [");
+ printsortkey(e2);
+ printf("]");
+ }
+ last->next = e1; last = e1; e1 = e1->next;
+ }
+ else
+ {
+ if (DEBUG)
+ { printf("\n [");
+ printsortkey(e1);
+ printf("] > [");
+ printsortkey(e2);
+ printf("]");
+ }
+ last->next = e2; last = e2; e2 = e2->next;
+ }
+ }
+}
+
+/* sortlist(e,format_first)
+** This a the merge-sort operator on list e of entries.
+** The sort is a ``stable sort'', so entries with the same key stay
+** in the same relative order.
+** if format_first == TRUE then sort by key, format, then page
+** if format_first == FALSE then sort by key, page, then format
+*/
+entry *sortlist(e,format_first)
+entry *e;
+int format_first;
+{ entry *f,*g;
+ int i,len;
+ if (e == NULL || e->next == NULL) return(e);
+ if (DEBUG)
+ { printf("\n\nSorting:");
+ printlist(e);
+ }
+ /* let f point to entry half-way down list */
+ f = e; len = 0; while (f != NULL) {len++; f = f->next;}
+ for (f=e,i=0; i<len/2-1; i++,f=f->next) ;
+ /* now split list into two */
+ g = f->next;
+ f->next = NULL;
+ /* recurse and merge */
+ e = sortlist(e,format_first); /* first half of list */
+ g = sortlist(g,format_first); /* second half of list */
+ e = mergelists(e,g,format_first);
+ if (DEBUG)
+ { printf("\n\nSorting result:");
+ printlist(e);
+ }
+ return(e);
+}
+
+/* needsparent(e, f)
+** Here e and f are entries in the sorted list: f = e->next.
+** The question is whether or not an entry should be added to precede f
+** in the list, because f is a multi-level entry but no entry for the super-
+** entries are present. Since e is the predecessor of f in the list, we
+** don't need to add a parent (superentry) if
+** f is at level 0
+** (e.g. f = "FOO"), or
+** The f->level - 1 first keys of e are the same as f's:
+** (e.g. e = "A/B", f = "A/B/C"),
+** (e.g. e = "A/B/C/D", f = "A/B/E")
+*/
+needsparent(e, f)
+entry *e, *f;
+{ int i;
+ if (f->level == 0) return(FALSE);
+ /* e is the prefix of f --> FALSE */
+ for (i=0;i<=f->level-1;i++)
+ if (strcmp(e->sortkey[i],f->sortkey[i])) return(TRUE);
+ return(FALSE);
+}
+
+/* addparentifnecessary(e)
+** Add a new entry after e if the entry f following e is multi-level and
+** it's superentries are not already in list. This can be determined
+** by examining e and f together, assuming the list entries are processed
+** in order.
+*/
+addparentifnecessary(e)
+entry *e;
+{ entry *f = e->next;
+ int i;
+ if (samesortkey(e,f)) return; /* same sortkey --> do nothing */
+ if (f->level == 0) return; /* f at level 0 --> do nothing */
+ if (needsparent(e,f))
+ { /* create a new entry for f's parent */
+ entry *g = (entry *)mymalloc(sizeof(entry));
+ g->level = f->level - 1;
+ for (i=0;i<=TEX_MAX_LEVEL;i++) g->sortkey[i] = NULL;
+ for (i=0;i<=g->level;i++) g->sortkey[i] = mystrdup(f->sortkey[i]);
+ g->pv = NULL;
+ g->format = NULL_FORMAT; /* no page numbers for super-entries */
+ g->firstpageno = 0;
+ g->lastpageno = 0;
+ g->next = f; /* splice g into list: e-->g-->f */
+ e->next = g;
+ addparentifnecessary(e); /* redo in case g now needs a parent */
+ }
+}
+
+/* addparents()
+** add all superentries that are needed to the entry list `elist',
+** using the `addparentifnecessary' routine on each entry.
+*/
+addparents()
+{ entry *e = &elist;
+ while (e->next != NULL)
+ { addparentifnecessary(e);
+ e = e->next;
+ }
+}
+
+/* samesortkey(e,f)
+** returns TRUE if and only if entries e and f have the same sort key
+*/
+samesortkey(e,f)
+entry *e, *f;
+{ int i;
+ if (e->level != f->level) return(FALSE);
+ for (i=0;i<=e->level;i++)
+ if (strcmp(e->sortkey[i],f->sortkey[i])) return(FALSE);
+ return(TRUE);
+}
+
+/* spliceout(e,f)
+** splice out the entry f. e is f's predecessor.
+*/
+spliceout(e,f)
+entry *e,*f;
+{
+ e->next = f->next;
+
+ /* save print value of f if e doesn't have a print value */
+ if (e->pv == NULL && f->pv != NULL)
+ e->pv = f->pv;
+ else if (e->pv != NULL &&
+ f->pv != NULL &&
+ strcmp(e->pv,f->pv) &&
+ strcmp(f->pv,f->sortkey[f->level])
+ )
+ { printf("\n----- WARNING: Print value %s overridden for entry:\n",f->pv);
+ printentry(f);
+ printf("\n");
+ }
+
+ /* save format string (assumption: e's is the same or NULL_FORMAT */
+ e->format = f->format;
+}
+
+/* compressentrylist()
+** Loop through list `elist' of index entries, and combine adjacent
+** entries to make page ranges whenever possible.
+*/
+compressentrylist()
+{ entry *e = elist.next,*f;
+ while (e != NULL && e->next != NULL)
+ { f = e->next;
+ if (!samesortkey(e,f))
+ {
+ e=f; /* can't combine, move on to f */
+ }
+ else if (e->format == NULL_FORMAT) /* Note NULL_FORMATs sort earlier */
+ { spliceout(e,f);
+ e->firstpageno = f->firstpageno;
+ e->lastpageno = f->lastpageno;
+ }
+ else if (strcmp(e->format,f->format))
+ { /* different formats */
+ e=f; /* can't combine, move on to f */
+ }
+ else if (e->lastpageno == UNKNOWN && f->firstpageno == UNKNOWN)
+ { spliceout(e,f); /* combine start and end of range */
+ e->lastpageno = f->lastpageno;
+ /* reprocess e */
+ }
+ else if (e->lastpageno == UNKNOWN && f->firstpageno != UNKNOWN)
+ { spliceout(e,f); /* delete page in middle of range */
+ }
+ else if (f->firstpageno == UNKNOWN)
+ { /* ERROR -- no start of range */
+ e = f; /* (will be reported later) */
+ }
+ else if ( e->lastpageno == f->firstpageno ||
+ e->lastpageno +1 == f->firstpageno)
+ { spliceout(e,f); /* remove f */
+ e->lastpageno = f->lastpageno;
+ /* reprocess e */
+ }
+ else
+ {
+ e = f; /* process f next */
+ }
+ }
+}
+
+/* main(argc,argv)
+** requires one command-line argument: the name of the file (no extension)
+*/
+main(argc,argv)
+int argc;
+char **argv;
+{ char fname[MAX_STRING_LENGTH];
+ int i;
+
+ /* If no arguments given, instruct user */
+ if (argc == 1)
+ { printf("\nUsage: windex filename\n");
+ exit(0);
+ }
+
+ /* print banner */
+ printf(WINDEX_BANNER);
+
+ /* Open input and output files */
+ strcpy(fname,argv[1]);
+ strcat(fname,INPUT_EXTENSION); /* input file = foo.idx */
+ instream = fopen(fname,"r");
+ if (instream == NULL)
+ { printf("\nERROR: input file `%s' can not be opened.\n",fname);
+ exit(0);
+ }
+ strcpy(fname,argv[1]);
+ strcat(fname,OUTPUT_EXTENSION); /* output file = foo.index */
+ outstream = fopen(fname,"w");
+ if (outstream == NULL)
+ { printf("\nERROR: output file `%s' can not be opened.\n",fname);
+ exit(0);
+ }
+
+ /* Initialize entry list to one entry, consisting of a null string */
+ /* (The null string should sort first) */
+ elist.level = 0;
+ elist.next = NULL;
+ for (i=0;i<TEX_MAX_LEVEL;i++)
+ elist.sortkey[i] = "";
+ elast = &elist;
+
+ /* Read the input file foo.idx */
+ if (DEBUG) printf("\n\nInput: ");
+ inputfile();
+
+ /* Sort the entries into order, by key, format then page */
+ elist.next = sortlist(elist.next,TRUE);
+ /* Debug printout */
+ if (DEBUG)
+ { printf("\n\nSorted:"); printlist(elist.next); }
+
+ /* Add parent superentries for those entries that need them */
+ addparents();
+ /* Debug printout */
+ if (DEBUG)
+ { printf("\n\nSorted with parents:"); printlist(elist.next); }
+
+ /* Combine pages into ranges as appropriate */
+ compressentrylist();
+ /* Debug printout */
+ if (DEBUG)
+ { printf("\n\nSorted with parents and ranges:"); printlist(elist.next); }
+
+ /* Sort the entries into order, by key, page, then format */
+ elist.next = sortlist(elist.next,FALSE);
+ /* Debug printout */
+ if (DEBUG)
+ { printf("\n\nSorted:"); printlist(elist.next); }
+
+ /* print out the output file */
+ makeindex();
+
+ fclose(instream);
+ fclose(outstream);
+}
+
+/* scanbalance(bufferp,out)
+** input: bufferp is a pointer to an input buffer
+** the first character of bufferp is LBRACE or LBRACKET
+** out is a pointer to an output buffer
+** The procedure copies bufferp up to the matching delimiter into out.
+** The outermost delimeters are converted to TEX_BEGIN_GROUP..TEX_END_GROUP
+** (So if there is nothing between the delimiters, we get TEX_EMPTY_GROUP.)
+** This procedure returns a pointer to the character after the final delimiter.
+*/
+char *scanbalance(bufferp,out)
+char *bufferp;
+char *out;
+{ int n = 0;
+ char c, *q = out;
+ top: c = *q++ = *bufferp++;
+ if (c == LBRACKET || c == LBRACE) n++; /* left delimiter */
+ if (c == RBRACKET || c == RBRACE) n--; /* right delimiter */
+ if (c == EOS || c == CR || c == LF || n == 0)
+ /* end of string or all matched */
+ { /* convert outermost delimiters to TEX_BEGIN_GROUP..TEX_END_GROUP */
+ out[0] = TEX_BEGIN_GROUP;
+ *(q-1) = TEX_END_GROUP;
+ *q = EOS; /* terminate output string */
+ return(bufferp);
+ }
+ goto top;
+}
+
+/* printsortkey(e)
+** print out the sort key of entry e in form similar to input form
+*/
+printsortkey(e)
+entry *e;
+{ printf("%s",e->sortkey[0]);
+ if (e->level>=1) printf("/%s",e->sortkey[1]);
+ if (e->level>=2) printf("/%s",e->sortkey[2]);
+}
+
+/* printentry(e)
+** print out the entry e in form similar to input form.
+*/
+printentry(e)
+entry *e;
+{ printf("\n");
+ if (e==NULL) printf("NULL");
+ printsortkey(e);
+ if (e->pv != NULL) printf("%s",e->pv);
+ /* else printf("{%s}",e->sortkey[e->level]); */
+ if (e->lastpageno == UNKNOWN) printf("%c",LANGLE);
+ if (e->firstpageno == UNKNOWN) printf("%c",RANGLE);
+ if (e->format != NULL) printf("[%s]",e->format);
+ printf(":%d",sortpageno(e));
+ fflush(stdout);
+}
+
+/* printlist(e)
+** print out the list of entries starting at e
+*/
+printlist(e)
+entry *e;
+{ while (e != NULL) { printentry(e); e = e->next; }
+}
+
+
+/* inputfile()
+** read the input file a line at a time and process each line.
+** print a warning if any line begins with ``\indexentry{''
+*/
+inputfile()
+{ char buffer[MAX_STRING_LENGTH];
+ int oldstylewarn; /* flag: only give the warning once */
+ oldstylewarn = FALSE;
+
+ while (NULL != fgets(buffer,MAX_STRING_LENGTH-1,instream))
+ { if ((!oldstylewarn) && oldstyle(buffer))
+ { oldstylewarn = TRUE;
+ printf("\n----- WARNING: You appear not to have \\input windex.tex.");
+ printf("\n Proceeding anyway.\n");
+ };
+ inputline(buffer);
+ }
+}
+
+
+/* oldstyle(buffer)
+** true if buffer starts with "\indexentry{"
+*/
+oldstyle(buffer)
+char *buffer;
+{ int i = 0;
+ while ((buffer[i] == "\\indexentry{"[i]) && (++i < 12)) ;
+ return(i == 12);
+}
+
+
+/* inputline(buffer)
+** Scan an input line and create an entry for it.
+*/
+inputline(buffer)
+char *buffer;
+{ char key[MAX_STRING_LENGTH]; /* sort key */
+ char pv[MAX_STRING_LENGTH]; /* print value */
+ char format[MAX_STRING_LENGTH]; /* format string for page number */
+ char *bufferp,*keyp,*pvp;
+ entry *e;
+ int pvseen; /* flag if print-value has been seen */
+ int i,pageno;
+
+ /* Create a new empty entry for this line */
+ e = (entry *)mymalloc(sizeof(entry));
+ e->level = 0;
+ for (i=0;i<TEX_MAX_LEVEL;i++) e->sortkey[i] = NULL;
+ e->pv = NULL;
+ e->format = DEFAULT_FORMAT;
+ e->firstpageno = 0;
+ e->lastpageno = 0;
+
+ /* scan line */
+ bufferp = buffer; /* input buffer pointer */
+ keyp = key; /* sort key output pointer */
+ key[0] = EOS; /* sort key is null string */
+ pvp = pv; /* print value output pointer */
+ pvseen = FALSE; /* print value not seen yet */
+ strcpy(format,DEFAULT_FORMAT);
+ while (*bufferp==BLANK) bufferp++; /* skip leading blanks */
+ while (*bufferp && *bufferp != CR && *bufferp != LF)
+ { switch (*bufferp) {
+
+ case LANGLE: /* LANGLE (<) is flag to start a page range */
+ e->lastpageno = UNKNOWN;
+ bufferp++;
+ break;
+
+ case RANGLE: /* RANGLE (>) is flag to end a page range */
+ e->firstpageno = UNKNOWN;
+ bufferp++;
+ break;
+
+ case LBRACE: /* LBRACE ({) marks beginning of print value string */
+ bufferp = scanbalance(bufferp,pv); /* copy string into pv */
+ pvp = pv + strlen(pv);
+ pvseen = TRUE;
+ break;
+
+ case LBRACKET: /* LBRACKET ([) marks start of format string */
+ bufferp = scanbalance(bufferp,format);
+ break;
+
+ case COLON: /* COLON (:) marks beginning of page number */
+ pageno = atoi(++bufferp);
+ if (e->firstpageno != UNKNOWN) e->firstpageno = pageno;
+ if (e->lastpageno != UNKNOWN) e->lastpageno = pageno;
+ goto saveline; /* and break out of loop */
+
+ case SLASH: /* SLASH marks superentry divisions */
+ bufferp++; /* skip over the slash */
+ *keyp = EOS; /* terminate sort key */
+ e->sortkey[e->level] = mystrdup(key);
+ keyp = key;
+ e->level = e->level + 1;
+ if (e->level > TEX_MAX_LEVEL)
+ printf("\n----- WARNING: Too many levels in entry: %s",
+ buffer);
+ break;
+
+ default: /* Copy character into sort key */
+ *keyp++ = *bufferp++;
+ }
+ }
+
+ saveline:
+ /* If we haven't seen a sort key, this is probably a blank line.
+ ** Don't save this entry on the list.
+ */
+ if (strlen(key)==0) return;
+
+ /* Terminate sort key */
+ *keyp = EOS;
+
+ /* Copy sort key into newly allocated string */
+ e->sortkey[e->level] = mystrdup(key);
+
+ /* Copy print value into newly allocated string */
+ if (pvseen) e->pv = mystrdup(pv);
+
+ /* Copy format into newly allocated string, if format exists */
+ if (strcmp(format,TEX_EMPTY_GROUP)==0) /* empty format means no page */
+ { e->format = NULL_FORMAT; /* (used for super-entry) */
+ }
+ else if (format[0] != EOS)
+ { e->format = mystrdup(format);
+ }
+
+ /* If format doesn't contain a spot for pageno, then make pageno = 0 */
+ /* so it sorts at front */
+ if (!printspage(e->format))
+ e->firstpageno = e->lastpageno = 0;
+
+ /* Append new entry to end of list. elast points to end of list */
+ e->next = NULL;
+ elast->next = e;
+ elast = e;
+
+ if (DEBUG) printentry(e);
+}
+
+
+/* printvalueaux(f,e)
+** returns NULL if sort key of e is the different than f's
+** otherwise returns printvalue of e, if it exists
+** otherwise returns printvalueaux of e's successor
+*/
+char *printvalueaux(f,e)
+entry *f, *e;
+{
+ if (e == NULL) return(NULL);
+ if (!samesortkey(f,e)) return(NULL);
+ if (e->pv != NULL) return(e->pv);
+ return(printvalueaux(f,e->next));
+}
+
+/* printvalue(f)
+** returns print value for entry f, or sort key if no print value given
+** checks succeeding entries with same sort key to see if any of them
+** have a print value given, and if so, uses that
+*/
+char *printvalue(f)
+entry *f;
+{ char *pv;
+ pv = printvalueaux(f,f);
+ if (pv != NULL) return(pv);
+ return(f->sortkey[f->level]);
+}
+
+/* makeindex()
+** Runs through the list elist, and prints out the output file foo.index.
+*/
+makeindex()
+{ entry *e = &elist;
+ entry *f;
+ int n = 0; /* number of entries printed */
+ int entry_printed_last = FALSE; /* TRUE if entry printed last,
+ FALSE if page printed last */
+ char *q;
+
+ if (e->next == NULL)
+ {
+ printf("No output produced (no entries found in input file).\n",n);
+ return;
+ }
+
+ fprintf(outstream,TEX_BEGIN_INDEX);
+
+ while (e->next != NULL)
+ { f = e->next; /* entry to print is f */
+ n++;
+
+ /* Check for unbalanced page ranges and print warnings */
+ if (f->lastpageno == UNKNOWN)
+ { printf("\n----- WARNING: closing entry not found to match following starting %c entry:",LANGLE);
+ printentry(f);
+ printf("\n");
+ }
+ if (f->firstpageno == UNKNOWN)
+ { printf("\n----- WARNING: starting entry not found to match following ending %c entry:",RANGLE);
+ printentry(f);
+ printf("\n");
+ }
+
+ /* Print entry text if necessary */
+ if (!samesortkey(e,f))
+ { /* Key of f is different than key of predecessor e */
+ /* print appropriately indented entry with subitems, etc. */
+ if (f->level == 0) fprintf(outstream,TEX_BEGIN_LEVEL0);
+ else if (f->level == 1) fprintf(outstream,TEX_BEGIN_LEVEL1);
+ else if (f->level == 2) fprintf(outstream,TEX_BEGIN_LEVEL2);
+ /* print ``print value'' for f */
+ fprintf(outstream,"%s",printvalue(f));
+ entry_printed_last = TRUE;
+ }
+
+ /* print TEX_AFTER_ENTRY or TEX_BETWEEN_PAGES if necessary */
+ if (strcmp(f->format,NULL_FORMAT)==0)
+ { ; /* no page entry to be printed, so no separator */
+ }
+ else if (entry_printed_last)
+ fprintf(outstream,TEX_AFTER_ENTRY);
+ else if (entry_printed_last == FALSE)
+ fprintf(outstream,TEX_BETWEEN_PAGES);
+
+ /* Print page number in its format */
+ if (strcmp(f->format,NULL_FORMAT))
+ { /* check for no page number printed */
+ if (!printspage(f->format))
+ fprintf(outstream,"%s",f->format);
+ else /* insert page or page range */
+ { /* print first part of format */
+ q = f->format;
+ while (*q && *q != ZERO)
+ { fprintf(outstream,"%c",*q); q++; }
+ /* print first page number */
+ fprintf(outstream,"%d",f->firstpageno);
+ /* if necessary, print range */
+ if (f->lastpageno != f->firstpageno)
+ {
+ fprintf(outstream,"%s",TEX_BETWEEN_RANGE);
+ fprintf(outstream,"%d",f->lastpageno);
+ }
+ q++; /* skip the zero */
+ while (*q) fprintf(outstream,"%c",*q++);
+ }
+ entry_printed_last = FALSE;
+ }
+
+ /* go on to next entry */
+ e = e->next;
+ }
+ fprintf(outstream,TEX_END_INDEX);
+ printf("Done. %d entries processed.\n",n);
+}
+
diff --git a/obsolete/support/windex/windex.tex b/obsolete/support/windex/windex.tex
new file mode 100644
index 0000000000..2374e039e5
--- /dev/null
+++ b/obsolete/support/windex/windex.tex
@@ -0,0 +1,66 @@
+% File windex.tex
+% Macro for writing out index files (.idx files) for use with windex
+% Author: Ronald L. Rivest
+% Date: 11/20/89
+% Note: If you are using windex, then this file should be input into
+% your source file before and \index commands are given.
+% (It need not precede the \makeindex command.)
+% At the end of your file foo, you can place the commands
+% \makeatletter
+% \@input{foo.index}
+% \makeatother
+% just before the \end{document} command.
+% (These command are equivalent to
+% \input{foo.index}
+% unless foo.index doesn't yet exist, in which case \@input
+% merely prints a warning message and procedes, whereas \input
+% asks you for another file name.)
+
+\makeatletter
+
+%% The following causes all indexed terms to be printed in the right-hand
+%% margin of the page.
+%% To kill this effect, redefine \indexmargin to be a null macro
+
+%% The following is for debugging (produces marginal index terms)
+%% Comment this out for production; leave in for debugging.
+%\newcommand{\indexmargin}[1]{{\tiny\marginpar{#1}}}
+%% The following is for production (no marginal index terms)
+%% Comment this out for debugging; leave in for production.
+\newcommand{\indexmargin}[1]{}
+
+\@mparswitchfalse % Cause all marginal pars to go on right side
+
+%% End of marginal notes for index terms hack
+
+%% Make all characters ``other'' so that par box doesn't give errors
+\def\@makeallother{%
+\@makeother a\@makeother n\@makeother A\@makeother N%
+\@makeother b\@makeother o\@makeother B\@makeother O%
+\@makeother c\@makeother p\@makeother C\@makeother P%
+\@makeother d\@makeother q\@makeother D\@makeother Q%
+\@makeother e\@makeother r\@makeother E\@makeother R%
+\@makeother f\@makeother s\@makeother F\@makeother S%
+\@makeother g\@makeother t\@makeother G\@makeother T%
+\@makeother h\@makeother u\@makeother H\@makeother U%
+\@makeother i\@makeother v\@makeother I\@makeother V%
+\@makeother j\@makeother w\@makeother J\@makeother W%
+\@makeother k\@makeother x\@makeother K\@makeother X%
+\@makeother l\@makeother y\@makeother L\@makeother Y%
+\@makeother m\@makeother z\@makeother M\@makeother Z%
+\@makeother /\@makeother !\@makeother <\@makeother >%
+\@makeother \$\@makeother [\@makeother ]%
+%\@makeother\
+\@makeother\\\@makeother\$\@makeother\&%
+\@makeother\#\@makeother\^\@makeother\^^K\@makeother\_\@makeother\^^A%
+\@makeother\%\@makeother\~}
+
+\def\index{\@bsphack\begingroup\@makeallother\@wrindex\@indexfile}
+
+%% In the following #1 is the file,#2 is the string being indexed
+\def\@wrindex#1#2{\let\thepage\relax
+ \indexmargin{\fbox{\parbox[t]{1in}{#2}}}%
+ \xdef\@gtempa{\write#1{#2:\thepage}}\endgroup\@gtempa
+ \if@nobreak \ifvmode\nobreak\fi\fi\@esphack}
+
+\makeatother
diff --git a/obsolete/support/windex/windexample.idx b/obsolete/support/windex/windexample.idx
new file mode 100644
index 0000000000..714ff969c8
--- /dev/null
+++ b/obsolete/support/windex/windexample.idx
@@ -0,0 +1,61 @@
+apple:10 This is a test file for windex.
+banana:12 (These comments are ignored since
+apple: 13 all text after the pageno is ignored.)
+banana:14
+apple:14
+banana:15
+banana:16
+fruit/orange:16
+fruit/grapefruit:19
+pear:19 Test range creation and merging.
+pear<:20
+pear:22
+fruit/in a bowl:77
+fruit/trees:10
+fruit/banana[{\em See} banana]:11
+pear>:25
+fruit/on ice cream:39
+pear<:27
+pear>:29
+pear<:29
+pear>:33
+pear<:35
+fruit{\bf fruit}[]:44
+pear>:37
+pear<:38
+fruit/orange{\bf orange}[]:45
+pear>:40
+pear<:80
+pear>:80
+pear:89
+pear<:90
+pear>:90
+pear<:95
+pear>:95
+pear:96
+pear:99
+pear<:100
+pear>:100
+pear:101
+pear<:110
+pear>:112
+pear<:112
+pear>:114
+pear<:120
+pear>:122
+pear<:123
+pear>:125
+pear[\em 0]<:33
+pear[\em 0]>:95
+fruit/orange:30
+fruit/berries/strawberries:35
+fruit/berries/raspberries:40
+fruit/berries:37
+beans/green{lima}:45
+pomme[{\em see} apple]:50
+fruit/orange:60
+tomatoes<:70
+tomatoes>:75
+eggplant:35
+eggplant[{\em see} yuccky]:50
+
diff --git a/obsolete/support/windex/windexample.index b/obsolete/support/windex/windexample.index
new file mode 100644
index 0000000000..3cd281b4ad
--- /dev/null
+++ b/obsolete/support/windex/windexample.index
@@ -0,0 +1,22 @@
+\begin{theindex}
+
+\item apple, 10, 13--14
+\item banana, 12, 14--16
+\item beans
+ \subitem {lima}, 45
+\item eggplant, {{\em see} yuccky}, 35
+\item {\bf fruit}
+ \subitem banana, {{\em See} banana}
+ \subitem berries, 37
+ \subsubitem raspberries, 40
+ \subsubitem strawberries, 35
+ \subitem in a bowl, 77
+ \subitem grapefruit, 19
+ \subitem on ice cream, 39
+ \subitem {\bf orange}, 16, 30, 60
+ \subitem trees, 10
+\item pear, 19--25, 27--33, {\em 33--95}, 35--40, 80, 89--90, 95--96, 99--101, 110--114, 120--125
+\item pomme, {{\em see} apple}
+\item tomatoes, 70--75
+
+\end{theindex}
diff --git a/obsolete/support/windex/windexdoc.tex b/obsolete/support/windex/windexdoc.tex
new file mode 100644
index 0000000000..268402c2ff
--- /dev/null
+++ b/obsolete/support/windex/windexdoc.tex
@@ -0,0 +1,403 @@
+\documentstyle{article}
+\makeindex
+\input{windex}
+\begin{document}
+\bigskip
+\centerline{\Large \bf Windex: An index compilation program}
+\centerline{by Ronald L. Rivest}
+\centerline{MIT Laboratory for Computer Science}
+\centerline{\tt rivest@theory.lcs.mit.edu}
+\centerline{\today}
+\bigskip
+
+Windex is a system to assist in compiling an index for a Latex
+document. It consists of a modification to the Latex \verb+\index+ command
+and a C program for compiling the index.
+
+\section{Using windex --- basic case}
+
+To use windex in its simplest form, you need to obtain (or obtain
+access to) two files:
+\begin{itemize}
+ \item {\tt windex.tex}---a Latex macro package.
+ \item {\tt windex}---the compiled form of {\tt windex.c}.
+\end{itemize}
+You should then do the following:
+\begin{itemize}
+ \item Include the lines
+\begin{quote}
+ \verb+\makeindex+ \\
+ \verb+\include{windex}+ \\
+\end{quote}
+before the \verb+\begin{document}+ command in your latex file.
+ \item Include an index command of the form \verb+\index{term}+
+ at the position you wish to index \verb+term+ in your
+ document, for each such \verb+term+.
+ \item Compile your document with Latex. If your document is
+ called \verb+paper+, then Latex will create a file
+ called \verb+paper.idx+ containing the raw index information.
+ \item Issue the command \verb+windex paper+. The windex program
+ will read the file \verb+paper.idx+ and produce as output
+ a file called \verb+paper.index+ containing the actual
+ Latex commands necessary to produce the index.
+ \item Include the command \verb+\input{paper.index}+ at the place
+ you wish the index to appear in your paper.
+ \item Recompile \verb+paper+ with latex.
+ \item Review the index produced and modify your paper as necessary
+ until the index produced is satisfactory.
+\end{itemize}
+
+The output index will be alphabetized, and page ranges will be
+automatically created when possible to conserve space. For example,
+the page numbers ``20, 21, 22, 23'' will be condensed to read
+``20--23''. This provides a very simple indexing capability.
+
+Windex also has a number of
+sophisticated features that you can use for more complicated indices.
+In particular, windex supports the following capabilities:
+\begin{itemize}
+ \item using multi-level entries (up to three levels),
+ \item using \verb+\index+ commands in the source document to
+ indicate where a range of relevant pages begins and where
+ it ends,
+ \item separately specifying the text to sort an entry by, and
+ the text to print,
+ \item formatting control for page numbers, such as allowing
+ italicized page numbers, or replacing the page number
+ with text of the form ``See fruit.'' for cross-references.
+\end{itemize}
+
+The following sections give details on using the \verb+\index+ command
+to use these features and obtain satisfactory results.
+
+\section{Placing index commands in your document}
+
+In general, you should place the \verb+\index+ immediately {\em before}
+the term being indexed, with no intervening spaces, so that the page reference
+generated is to the beginning of the term. Once in a while Latex may
+split a term across pages, and you want the index command to refer to
+the first page the term is on. As an example,
+\begin{quote}
+ \verb+falls in the area of \index{machine learning}machine learning, which+\ldots
+\end{quote}
+gives the desired behavior, even if a page break occurs between \verb+machine+
+and \verb+learning+.
+
+The text of the index entry may not contain the characters:
+\verb+{ } / < > [ ]+. These characters have special meaning to windex,
+as noted below. The text may contain blanks, hyphens, periods, or other
+special characters.
+
+Windex does not directly support non-arabic page numbers, such as you
+might have in a preface. If you place an \verb+\index+ command on a
+page with non-arabic page numbers, you'll get the arabic version of
+the page number in the index. By using the format control for page
+numbers, however, you can solve this problem
+(see Section~\ref{sec:page-format}).
+
+\section{Multi-level entries}
+
+You can use the ``{\tt /}'' character to separate levels in a multi-level
+index entry. For example, an entry of the form \verb+\index{fruit/apples}+
+on page 10 will produce in the index a two-level entry of the form
+\begin{quote}
+ fruit\\
+ \hspace*{2em}apples, 10
+\end{quote}
+
+You can create an index with up to three levels. For example, an
+entry of the form \verb+\index{fruit/apples/Macintosh}+ would cause a
+three-level entry to be generated.
+
+Note that you don't need to specify the ``parent'' entries separately.
+For example, in the above example, the parent entry for ``fruit''
+(with no page reference) was automatically generated from the
+occurrence of \verb+\index{fruit/apples}+. You may have entries for
+the parent entry too, but a dummy one with no page reference is
+generated if you don't give one explicitly.
+
+\section{Alphabetization}
+
+Windex uses the following rules when alphabetizing the index.
+\begin{itemize}
+\item The entries are sorted according to their top-level entry, then
+ according to the second-level entry, and so on, in the
+ natural manner.
+\item Blanks and hyphens are ignored. Thus, we might have as output:
+ \begin{quote}
+ high bettor, 10\\
+ highest elevation, 12\\
+ high-point, 15
+ \end{quote}
+\item In the second and third levels, initial prepositions and articles
+ are also ignored. Thus, we might have as output:
+ \begin{quote}
+ fruit\\
+ \hspace*{2em}banana, 15\\
+ \hspace*{2em}in cakes, 20\\
+ \hspace*{2em}as a decoration, 30\\
+ \hspace*{2em}grapefruit, 19
+ \end{quote}
+\item Capitalization is ignored unless two entries agree
+in all but capitalization, in which case the capitalized entry goes second.
+For example, we might have as output:
+ \begin{quote}
+ apple, 15\\
+ Apple, 20
+ \end{quote}
+\end{itemize}
+
+\section{Page ranges}
+
+You can place one \verb+\index+ command at the beginning of a range of
+pages for a given term, and another \verb+\index+ command at the end of the
+range of pages. The first \verb+\index+ command should contain the character
+``{\tt <}'', and the second command should contain the character ``{\tt >}''.
+
+For example, the entry
+\verb+\index{number-theory algorithms/gcd<}+ on page 300
+and the corresponding entry
+\verb+\index{number-theory algorithms/gcd>}+ on page 306
+generates as output
+\begin{quote}
+ number-theory algorithms\\
+ \hspace*{2em}gcd, 300--306
+\end{quote}
+
+In addition to the ranges you create explicitly in this manner, windex
+may create ranges of its own by combining a sequence of consecutive
+pages references into a page range. Windex may also combine several
+page ranges into one, or combine extend a range to include additional
+pages in the obvious manner. In general, windex attempts to describe
+the pages covered in the most compact form possible.
+For example, the list of pages and ranges
+\begin{quote}
+ 301,302,302--305,304,306--308,308,309--311,311--320,321
+\end{quote}
+combines to yield
+\begin{quote}
+ 301--321
+\end{quote}
+If the range includes other
+individual pages in their interior, they will be eliminated from the
+listing (e.g., page 304 in the above example.)
+
+If the two index commands you give to specify happen to end up on the
+same page, then only a single reference, rather than a range, is printed.
+
+
+\section{Controlled printing of index keys}
+
+Windex allows you to print the text for a given entry in an arbitrary
+manner. For example, your index entry terms can be printed in italics
+or can contain mathematical symbols.
+The \verb+\index+ command allows you to specify
+how to print an index term
+{\em separately} from how to place it in the sorted order.
+To specify special printing for an index entry, merely include within
+the argument to the \verb+\index+ command the Latex commands for printing
+the entry, enclosed within braces. For example, the commands
+\begin{quote}
+ \verb+\index{beta-decay{$\beta$-decay}}+ on page 12\\
+ \verb+\index{Lovasz, L.{Lov\'asz, L.}}+ on page 15\\
+ \verb+\index{fruit/apple{\bf apple}}+ on page 18
+\end{quote}
+might produce as output
+\begin{quote}
+ $\beta$-decay, 12\\
+ fruit\\
+ \hspace*{2em}{\bf apple}, 18\\
+ Lov\'asz, L., 15
+\end{quote}
+
+Let us call the text within braces the {\em print value} for that
+index entry, and call the unenclosed text the {\em sort key} for that
+index entry. Ordinarily, only the sort key is given, and the print
+value is automatically determined by windex to be the same as the sort
+key. (Or, in the case of a multi-level entry, the print value is
+automatically taken to be the same as the last component of the
+multi-level entry.)
+
+Note that specifying the print value affects only how that entry is printed;
+the print value is not considered during the alphabetization of the entries.
+In particular, two entries are considered the same if and only if they have
+the same sort key. If two entries have the same sort key, but one of them
+specifies a print value and the other doesn't, then the entries will be
+considered the same, and printed with the given print value. For example,
+the commands
+\begin{quote}
+ \verb+\index{fruit<}+ on page 101\\
+ \verb+\index{fruit{\bf fruit}>}+ on page 120\\
+ \verb+\index{fruit}+ on page 130
+\end{quote}
+will produce as output
+\begin{quote}
+ {\bf fruit}, 101--120, 130
+\end{quote}
+
+Only one print value can be associated with a given sort key. If two different
+\verb+\index+ commands specify different print values for the same sort key
+an error is reported.
+
+\section{Controlled printing of page references}
+\label{sec:page-format}
+
+Windex also allows you to control how the page references are printed,
+including a {\em format} for the page reference in brackets within the
+argument to the \verb+\index+ command. The digit ``{\tt 0}'', if present
+within the format, will be replaced with the actual page reference.
+For example, the commands
+\begin{quote}
+ \verb+\index{vegetable}+ on page 10 \\
+ \verb+\index{vegetable[\bf 0]}+ on page 15 \\
+ \verb+\index{vegetable[\it 0]}+ on page 20 \\
+ \verb+\index{vegetable[0 ff.]}+ on page 25 \\
+\end{quote}
+will produce as output:
+\begin{quote}
+ vegetable, 10, {\bf 15}, {\it 20}, 25 ff.
+\end{quote}
+Note that the brackets delimit the scope of Latex commands. (That is,
+there is no need to surround the format with an outer set of braces;
+the format is automatically surrounded by braces when included in the
+Latex output.)
+
+You can also get roman numerals out in this manner for page references
+in prefaces, etc. For example, the command
+\begin{quote}
+ \verb+\index{Knuth, Donald E.[\romanpage{0}]}+ on page {\em xv}
+\end{quote}
+where \verb+\romanpage+ has been defined
+\begin{quote}
+ \verb+\newcounter{pgno}+\\
+ \verb+\newcommand{\romanpage}[1]{\setcounter{pgno}{#1}\roman{pgno}}+
+\end{quote}
+will produce as output
+\begin{quote}
+ Knuth, Donald E., {\em xv}
+\end{quote}
+Note, however, that the roman format for the page reference doesn't affect
+where in the list of page references {\em xv} will appear; it will be sorted
+after page 13 and before page 17. (If this is a problem, you have to
+edit your {\tt .index} file by hand or modify the {\tt windex.c} program.)
+
+A special case occurs when the format does not include the digit ``{\tt 0}''
+at all. In this case the format actually specifies a {\em replacement}
+for the page reference. For example, the commands
+\begin{quote}
+ \verb+\index{pomme}+ on page 10\\
+ \verb+\index{pomme[{\em See also} apple]}+ on page 20 \\
+ \verb+\index{gcd[{\em See} greatest common divisor]}+ on page 30
+\end{quote}
+will produce as output
+\begin{quote}
+ gcd, {\em See} greatest common divisor\\
+ pomme, {\em See also} apple, 10
+\end{quote}
+Note that replacement texts are always placed at the beginning of a
+list of page references, independent of which page the \verb+\index+
+command specifying the replacement text occurred on.
+
+If no format is given, the default format of
+``{\tt [0]}'' is used, causing just the page number to be printed.
+However, parent entries that are created automatically
+have a default format of ``{\tt []}'', causing no page reference or
+replacement text at all to be printed. For example, the
+two-level command
+\begin{quote}
+ \verb+\index{fruit/apples}+
+\end{quote}
+is entirely equivalent to the pair of commands
+\begin{quote}
+ \verb+\index{fruit[]}+\\
+ \verb+\index{fruit/apples}+
+\end{quote}
+
+Specifying a format of ``{\tt []}'' can be useful when you wish to
+give a print value to an automatically created parent entry. For example,
+if we wish to put both ``fruit'' and ``apple'' in boldface in the above
+example, the commands
+\begin{quote}
+ \verb+\index{fruit{\bf fruit}[]}+ on page 10\\
+ \verb+\index{fruit/apples{\bf apples}}+ on page 10
+\end{quote}
+produces as output
+\begin{quote}
+ {\bf fruit}\\
+ \hspace*{2em}{\bf apples}, 10
+\end{quote}
+
+The specification of formats and replacement texts affects how windex
+combines page references into ranges. Specifically,
+pages are only combined into ranges if they have the same format.
+If they are combined, the range string ``{\tt nnn-mmm}''
+is placed at the position of the \verb+0+ in the format string.
+For example, the commands
+\begin{quote}
+ \verb+\index{apple[\em 0]}+ on page 301\\
+ \verb+\index{apple[\em 0]}+ on page 302\\
+ \verb+\index{apple}+ on page 302\\
+ \verb+\index{apple}+ on page 303\\
+ \verb+\index{apple<}+ on page 400\\
+ \verb+\index{apple[\em 0]<}+ on page 401\\
+ \verb+\index{apple[\bf 0]}+ on page 403\\
+ \verb+\index{apple[\bf 0]}+ on page 404\\
+ \verb+\index{apple>}+ on page 405\\
+ \verb+\index{apple}+ on page 406\\
+ \verb+\index{apple[\em 0]>}+ on page 410
+\end{quote}
+produce as output
+\begin{quote}
+ apple {\em 301--302}, 302--303, 400--406, {\em 401--410}, {\bf 403--404}
+\end{quote}
+In such an example, the ranges are sorted into order according to the
+first page number in each range.
+
+If you really want a ``0'' in your format or replacement string, use
+the Tex command ``\verb+\char48+''. For example, you might have on page 200
+\begin{quote}
+ \verb+\index{zero-one programming[\char48-1 programming]}+
+\end{quote}
+which will produce
+\begin{quote}
+ 0-1 programming, 200
+\end{quote}
+
+\section{Macros and interfacing with Latex}
+
+If all you do to create \verb+\index+ commands is to place them
+directly in your document, then you don't need to read this section.
+If, however, you wish to write Latex macros that generate
+\verb+\index+ macros automatically, then you will find this section
+helpful.
+
+If you use the \verb+\index+ command inside a macro, and there are
+Latex commands inside the argument to\verb+\index+, then you should precede
+them with \verb+\string+ to prevent their interpretation until the
+index is produced. For example, the following defines a variant of
+the \verb+\index+ command that automatically makes a boldface print value.
+\begin{quote}
+ \verb+\newcommand{\bfindex}[1]{\index{#1{\string\bf{#1}}}}+
+\end{quote}
+
+Because of the special way that the \verb+\index+ command parses its
+argument, writing macros that generate \verb+\index+ commands is rather
+tricky, and is best avoided. The given macro \verb+\bfindex+, for example,
+does not work correctly if formats are given containing Latex commands.
+
+\section{Implementation notes}
+
+The ``{\tt .idx}'' file that is produced by the \verb+\index+ commands
+consists of one line for each \verb+\index+ command. Each such line has
+the form.
+\begin{quote}
+ \verb+text:nn+
+\end{quote}
+where {\tt text} is the argument to the \verb+\index+ command and {\tt nn}
+is the page number on which that \verb+\index+ command was placed.
+
+The C program {\tt windex.c} is extensively commented, and easily modified,
+should you want slightly different behavior from {\tt windex}.
+
+\end{document}
+
diff --git a/obsolete/support/xpdf/CHANGES b/obsolete/support/xpdf/CHANGES
new file mode 100644
index 0000000000..cde9756bbb
--- /dev/null
+++ b/obsolete/support/xpdf/CHANGES
@@ -0,0 +1,2149 @@
+0.2 (95-dec-12)
+---------------
+First public release.
+
+
+0.3 (96-jan-13)
+---------------
+LZW patent workaround.
+Implemented inline images.
+Fixed (mostly) disjoint polygon fills.
+Added remote server stuff.
+Added page number on command line.
+Fixed problem with font encodings which caused character misalignment.
+Fixed inverted CCITT decoding and inverted image mask drawing.
+Now compiles under gcc 2.7.x (ignore those stupid 'unused parameter'
+ warnings).
+Many minor bug fixes and optimizations.
+
+
+0.4 (96-apr-24)
+---------------
+Implemented DCT filter.
+Implemented PostScript output; wrote pdftops program.
+Implemented links.
+Implemented font rotation -- I was wrong: X11R6 servers *do* support
+ font rotation (by specifying a matrix in place of a size).
+Added bindings for Home/End, Page Up/Down, arrow keys.
+Added initialZoom resource and -z option.
+Added geometry resource and -g option.
+Fixed image size off-by-one bug.
+Fixed bug where page content is reference to an array of streams.
+Cleaned up uninitialized variables which were causing random problems
+ on various platforms.
+Manually skip whitespace before calling atoi() for startxref.
+Replaced calls to XrmCombineFileDatabase() with calls to
+ XrmGetFileDatabase() and XrmMergeDatabases() so it will work under
+ older versions of X.
+Fixed problem with reading multiple xref tables in updated PDF files.
+Check for encryption and print appropriate error message.
+Rudimentary dithering of images.
+Fixed bug in CCITTFax filter (pass mode followed by horizontal mode).
+Optimized drawImage() and drawImageMask().
+Changed several things to ease porting:
+ - changed '__inline' to 'inline' (to adhere to the ANSI standard)
+ - surrounded interface/implementation pragmas with #ifdef _GNUC__
+ - got rid of empty array initializer lists
+ - moved Operator type definition from Gfx.cc to Gfx.h
+ - renamed String, uint, etc.
+ - ability to uncompress to file (NO_POPEN and USE_GZIP flags)
+ - added definitions of XK_Page_Up/Down and XPointer for old versions
+ of X
+For VMS port:
+ - use correct Xdefaults name for VMS, get rid of ltkGetHomeDir()
+ - added '#include <stddef.h>' before all X includes
+ - renamed files with multiple periods in their names
+Fixed window resizing infinite oscillation bug.
+Fixed problem with string-type (as opposed to stream-type) indexed
+ color space lookup tables (which are used in inline images).
+If an X font is not found, try smaller and then larger sizes (this is
+ useful for old or broken X servers which can't scale bitmap fonts).
+Added -rgb (color cube size) option.
+Various minor bug fixes.
+
+
+0.5 (96-may-23)
+---------------
+Fixed bug in LTKWindow which broke the remote server mode.
+Fixed PostScript output:
+ - doesn't seg fault if file is unwritable.
+ - incorrect DSC comment - need colon in '%%Page:'.
+ - use 'imagemask' command for masks.
+ - output filters in the correct order.
+ - Stream::isBinary() checks the next-to-bottom, not top, stream.
+ - if page width > height, rotate it 90 degrees.
+ - if page is larger than paper size, scale it down.
+Set default MediaBox to 8.5" x 11" to deal with non-compliant PDF
+ files which don't specify a MediaBox.
+Added DEBUG_MEM stuff in gmem.c and gmempp.cc.
+Fixed memory leaks:
+ - LTKWindow didn't delete the LTKBox.
+ - LinkAction needs a virtual destructor.
+Use $(RANLIB) variable in goo/Makefile and ltk/Makefile.
+Allocate image data after calling XCreateImage, using
+ image->bytes_per_line -- works in 24-bit mode now.
+DCTStream rounds width of rowBuf lines up to the next multiple of
+ mcuWidth, so last MCU doesn't run off end of buffer.
+Increase size of block (from 255 to 1024 bytes) read at end of file to
+ search for 'startxref'.
+Skip past garbage at start of file, look for '%PDF'.
+Moved more compiler options out of Makefiles into Makefile.config.
+Top-level Makefile uses '$(MAKE)' instead of 'make' for making
+ subdirectories.
+Space/PageDown/Next and Backspace/PageUp/Previous now moves to
+ next/previous page if already scrolled to bottom/top of current
+ page.
+
+
+0.5a (96-jul-09)
+----------------
+[not a public release]
+For PDF 1.2 (a.k.a. Amber, a.k.a. Acrobat 3) support:
+ - look for trailer after first xref instead of at end of file.
+Deal with font subsets by converting character names of the form
+ 'Cnnnn' to the appropriate character from the standard encoding.
+Extract encoding from embedded Type 1 fonts.
+Kludge to fill one-pixel thick polygons.
+Changed X font encoding to use endash for hyphen (gets rid of too-long
+ hyphens).
+Handle Resources key in Pages dictionaries (needed for pstoedit
+ output).
+Fix comment handling in Parser (needed for pstoedit output).
+Move Bezier curve conversion from GfxState to XOutputDev; look at
+ flatness parameter in GfxState.
+Change all of the path functions in XOutputDev (stroke, fill, clip) to
+ use the same path transformation/conversion function.
+Rewrote PostScript output driver as a subclass of OutputDev; removed
+ duplicated code (ps_ functions) from Gfx.
+Fixed bug in xref code with small (< 1024 bytes) PDF files.
+Implemented BX/EX operators.
+Added PDFDoc class.
+
+
+0.6 (96-nov-12)
+---------------
+Add support for PostScript output to stdout (-) and to a command
+ (|lpr); added -ps option and psFile resource.
+Decryption is implemented but not included in the distribution due to
+ legal restrictions: the decryption algorithm is a trade secret of
+ RSA, Inc., and the U.S.A. still has bogus export controls on
+ cryptography software.
+Added .xpdfrc config file:
+ - Added fontmap parameter: user can map PDF font names to X fonts.
+ - Added fontpath parameter: search for Type 1 font if encoding is
+ not in PDF file.
+Incremental display: display is updated after every 200 commands.
+Added forward and backward by-10-page buttons.
+Links:
+ - Implement links with "Launch" actions that point to PDF files.
+ - Draw borders around links.
+ - Handle links with named destinations.
+ - GoToR links specify a page number instead of a page reference.
+Optimizations:
+ - Rewrote Stream to use buffering, and added lookChar() functions;
+ rewrote Lexer to take advantage of this.
+ - Use hash tables for name->code mapping in font encodings.
+ - Made XOutputDev::doCurve() iterative, changed /2 to *0.5, and
+ changed the flatness test.
+Added file name to window title.
+Implemented RunLength filter.
+Implemented forms.
+Convert ObjType to an enum.
+Changed isDict("Pages") to isDict() (in Catalog.cc) to deal with
+ incorrect PDF files.
+Changed color selection so that very pale colors don't map to white.
+Fixed bug in CCITTFax filter (multiple make-up codes).
+In GString::clear(): need to set length to 0 before calling resize().
+Base initial window size on first displayed page, not page 1; deal
+ correctly with rotated pages.
+Added ltkGetIntResource() and LTKApp::getIntResource().
+PostScript output fixes:
+ - Escape backslashes in strings.
+ - When doing ASCII85 encoding, keep both chars of EOF marker ('~>')
+ on same line.
+ - Add extra line '%-EOD-' after image data streams; call wrapper
+ functions for image and imagemask which look for this line -- this
+ should fix the 'too much data in stream' bug.
+ - Font tags can be reused for different fonts on different pages --
+ so use font object reference (number/generation) instead.
+Initialize character widths to zero (this caused crashes on OSF/1).
+Handle image masks which go outside of pixmap.
+Makefile.config changes:
+ - Remove -o in C++ compile rule.
+ - Add $(AR) variable.
+Code which read char widths from font dictionary read all but the last
+ width.
+Add 'return 0;' to main() in xpdf and pdftops.
+Allow fonts to use StandardEncoding.
+Convert man pages to VMS help files.
+
+0.7 (97-may-28)
+---------------
+Implemented FlateDecode filter (for PDF 1.2).
+Basic xref table reconstruction for damaged files
+New pdftotext program converts PDF to plain text.
+Implemented menus in LTK; added a menu to xpdf.
+Added open and save functions; allow xpdf to start without any PDF
+ file.
+Implemented text find.
+Implemented text select/copy.
+Change mouse cursor when it's over a link.
+Embed Type 1 fonts in PostScript output.
+Moved rotate functions to menu; added quit to menu.
+Fixed stroke color bug in PostScript output (was using fill color
+ instead of stroke color; this sometimes caused lines to be missing
+ (white) in PostScript output).
+Support Launch-type links -- pops up a dialog before executing
+ anything. Expects the A (action) dictionary to contain a Unix
+ dictionary with F (file) and P (paremeter) keys just like the Win
+ dictionary.
+A moveto op all by itself should just be discarded, instead of
+ generating a subpath with one point (this was causing seg faults).
+Balanced parentheses in strings don't need to be escaped.
+Tj operator in PostScript prolog didn't check for zero when dividing
+ by length of string.
+Implemented selection in LTK; TextIn widgets support dragging/copy/
+ paste.
+Handle font subsets that use hex character codes.
+Added icon pixmap; added the XPMLIB and NO_XPM variables to
+ Makefile.config.
+Fixed subtle bug in use of horizontal scaling parameter (it affects
+ only the width of drawn characters, not positioning done in text
+ space).
+Memory testing (with DEBUG_MEM):
+ - gmalloc now fills memory blocks with garbage to catch unitialized
+ fields.
+ - gfree fills memory blocks with garbage to catch uses of freed
+ blocks.
+Handle image masks which go off the pixmap on the top and/or left.
+Fixed inline functions which had two return statements (to make the
+ HP, SCO, and other cfront-based compilers happy).
+Fixed bug which caused seg faults when following a link to a different
+ file (info in LinkGoto object was used after link was deleted by
+ loadFile).
+If page content is an array of streams, the streams are concatenated;
+ objects and commands can span multiple streams.
+If file open fails, try lower-casing and upper-casing the file name.
+Commands should end when lexer sees a '/' character.
+GString::append(char *, int) was broken.
+Changed LTKScrollingCanvas redraw to be more efficient: copy as much
+ as possible from window before copying from off-screen pixmap.
+Ignore gs (set extended graphics state) operator.
+Handle colorspaces (CalGray/RGB are treated as DeviceGray/RGB; the
+ weird colorspaces are not yet implemented).
+Named destinations (for links) can be strings as well as names; deal
+ with the names tree in the catalog.
+Clip to the page CropBox.
+Added '-q' to gzip options (to suppress warnings, in case user has -v
+ in GZIP env var).
+Added 'include Makefile.config' to top-level Makefile.
+Added INSTALL variable to Makefile.config; used in top-level
+ Makefile.
+Always initialize LinkDest left/bottom/top/right/zoom fields (bogus
+ floating point values were causing crashes on Alpha).
+Added Makefile.config options for Digital Unix (DEC compilers), HP-UX
+ (HP compilers), SCO Unix, and Evans & Sutherland ES/OS.
+Added flag to set stream mode in fopen call for VMS.
+Rewrote Link module.
+Pages with no contents shouldn't cause an error message.
+In PostScript output: pdfImM needs to set fill color before doing
+ imagemask.
+If font doesn't specify character widths, use widths from built-in
+ font, based on font flags.
+Fixed LTK scrollbar to delay before repeating and to control the
+ period between repeats.
+Removed window/widget copy() methods (they were untested and unused).
+Unknown filter types produce a single error message instead of a
+ stream of errors.
+Added a dummy target in top-level Makefile so making individual
+ executables (e.g., 'make pdftops') should now work.
+Added optional xpdf-flip.ltk with buttons on right side instead of
+ bottom of window.
+
+0.7a (98-feb-22)
+----------------
+Moved find command from menu to toolbar button ('f' key still works).
+Support TrueColor visuals.
+Added a -cmap option and a installCmap resource to install a private
+ colormap.
+Mouse button 2 pans the window.
+Selecting a URI link now executes a configurable command (from the
+ urlCommand resource).
+Added a "link info" display which shows the URL or file for the link
+ under the mouse.
+Don't draw (or convert to PostScript) text drawn in render modes 3 and
+ 7 -- this is invisible text, used by Acrobat Capture; this text is
+ still passed to the TextPage object so that selection works.
+Recognize (and quietly ignore) marked content operators (BMC, BDC,
+ EMC, MP, DP).
+Recognize new color-setting operators (scn, SCN).
+Added A4_PAPER option.
+Embed external Type 1 font files (this currently only works with PFA
+ files).
+Added "-level1" option (in xpdf and pdftops) to generate Level 1
+ PostScript.
+Setup autoconf -- replaced Makefile.config. Added SELECT_TAKES_INT
+ flag, and use configure to autodetect (for HP-UX).
+Fixed appendToPath() to behave reasonably when appending ".." to root
+ directory.
+Fixed array size in FlateStream::compHuffmanCodes() (was causing xpdf
+ to crash under OSF/1).
+ASCII85Stream, ASCIIHexStream, and DCTStream didn't check for EOF and
+ could run past the end of the stream in damaged files.
+Handle hex escapes (#xx) in names. Still allow the name /# for
+ backward-compatibility.
+Check for NULL characters in encoding array in GfxFont.cc (was calling
+ strcmp() with NULL which crashed under Solaris).
+PageAttrs::PageAttrs() didn't initialize crop box boundaries.
+Changed uses of lookup() to lookupNF() in XRef.cc.
+Fixed type checking of operators which take a variable number of
+ args.
+Gfx::buildImageStream() doesn't need to check for parser (since I got
+ rid of the bogus array-of-command thing).
+XOutputFont matches on font reference instead of font tag (similar to
+ PSOutputDev fix).
+Fixed bug in position calculation for multi-char substitutions in
+ XOutputDev.
+Cleaned up local variables which hid class variables.
+Optimized variable length decoding in CCITTFaxStream.
+Set link border width to zero if Border dictionary entry is missing.
+Throw away zero-length strings in TextOutputDev -- they don't have
+ valid xMin/xMax values.
+Swapped order of XLIBS and XPMLIB in xpdf/Makefile.
+Deleted 'LTKApp::' in function declaration in LTKApp.h.
+Changed '(XKeyEvent *)&event' to '&event.xkey' in LTKApp.cc.
+Check that the link rectangle coordinates are in the correct order,
+ and swap if necessary.
+TextOutputDev didn't set text to NULL, which caused pdftotext to
+ segfault if it couldn't open it's output file.
+Fixed a hash table search bug in GfxFontEncoding::getCharCode().
+Cleaned up colorspace code: rewrote GfxColorSpace and added
+ GfxImageColorMap; cleaned up PSOutputDev::doImage.
+Handle named colorspaces in images.
+Correctly set the default color after a colorspace change.
+Old setcolor operators now set the colorspace.
+Fixed bug with uncompressed blocks in FlateStream.
+Fixed bug with fixed Huffman code table in FlateStream.
+Added hash table of X windows (for LTKWindow and LTKWidget) to LTKApp
+ and replaced calls to XQueryTree with hash table searches -- this
+ avoids a roundtrip to the server for each event and also fixes the
+ problem where XQueryTree crashed if the window no longer existed
+ (with leftover events from a destroyed window). (Thanks to Yair
+ Lenga for the suggestion.)
+Create a new GC for selection -- xor black and white (instead of LTK
+ foreground and background).
+Fixed crash with blank lines in .xpdfrc.
+Allow spaces in font descriptors in fontmap lines in .xpdfrc.
+Check for bogus object number in XRef::fetch().
+Use MacRomanEncoding for TrueType fonts that don't specify an
+ encoding.
+Certain PDF generators apparently don't include FontDescriptors for
+ Arial, TimesNewRoman, and CourierNew -- set GfxFont flags
+ appropriately.
+Fixed a bug in width guessing in GfxFont -- sans serif and serif were
+ swapped.
+Rewrote XRef::readXRef() to avoid using a parser to read the xref
+ entries.
+Added NO_TEXT_SELECT option.
+Ignore APPn/COM/etc. markers in DCT streams.
+Replaced select() with XMultiplexInput() in LTKApp.cc for VMS.
+Handle WM_DELETE_WINDOW protocol -- if you ask the window manager to
+ delete the xpdf window, xpdf will exit cleanly; other
+ windows/dialogs are simply closed.
+Optimized DCT decoder; switched to integer arithmetic.
+The "/Type /Annots" field in an annotation dictionary is optional.
+Check for null nameTree in Catalog::findDest().
+In XOutputDev, search user font map before default font map.
+Added "normal" SETWIDTH parameter to all font descriptors in
+ XOutputDev (some systems have a narrow-width Helvetica font).
+Added FOPEN_READ_BIN and FOPEN_WRITE_BIN to support Win32.
+Added a hack which allows better font substitution for some Type 3
+ fonts. Also allow character names of the form /nn and /nnn.
+Added <strings.h> and <bstring.h> to LTKApp.cc (needed by AIX and IRIX
+ for bzero() declaration for FD_ZERO).
+
+0.80 (98-nov-27)
+----------------
+Support for some Japanese fonts (Type 0 fonts using the Adobe-Japan1-2
+ character collection, horizontal only).
+Added pdfinfo application.
+Added pdftopbm application.
+Added pdfimages application.
+Added -papercolor option and .paperColor resource.
+Fixed divide-by-zero problem in XOutputDev Type 3 font matrix kludge.
+Font subset char names can be 'Bxx' as well as 'Cxx' and 'Gxx'.
+Fixed bug in color space conversion in DCTStream filter (YCC->RGB was
+ correct, YCCK->CMYK was broken).
+Added XRef::getDocInfo() and PDFDoc::getDocInfo() to support pdfinfo.
+Optimized GfxImageColorMap.
+Lexer::getStream(), getPos(), and setPos() check for null stream.
+Decryption code now does strings as well as streams.
+ASCII85 decoder rounds short tuples up instead of down.
+CropBox and MediaBox can be non-integers.
+PostScript output:
+ - Use a rectangle operator.
+ - Call setpagedevice with page size.
+ - Insert %%PageOrientation comments.
+ - Add paper size flags (-paperw and -paperh) to xpdf and pdftops.
+ - If HAVE_POPEN is not defined, and user tries to print to '|...',
+ the PSOutputDev destructor tried to write to the PS file.
+ - Added support for forms (pdftops -form).
+Removed error messages for empty paths in stroke, fill, etc. operators.
+Don't allow flatnesses less than 1 in XOutputDev (this speeds up
+ rendering a little bit when there are lots of tiny curves).
+Moved the font subset character name guessing from GfxFont to
+ XOutputDev and TextOutputDev - now these files print correctly.
+Cast argument to XFree() to XPointer; add XPointer definition where
+ necessary (portability fixes).
+Various minor VMS fixes.
+Changes to configure script and Makefiles:
+ - Print a warning if X is missing.
+ - Use C++ when checking select() argument type (HP-UX).
+ - Use 0 instead of NULL when checking select().
+ - Default to gcc instead of c++.
+ - Get rid of AC_C_INLINE -- this is meant for C, not C++.
+ - Changed -USE_GZIP to -DUSE_GZIP.
+ - Added ability to compile ouside of the source tree.
+ - Added .cc.o rule to {goo,ltk,xpdf}/Makefile.in.
+ - Added @LIBS@ to XLIBS in xpdf/Makefile.in.
+ - In top-level Makefile.in: added '-' to clean commands; added
+ distclean rule.
+ - Create install directories.
+ - Use INSTALL_DATA (instead of INSTALL) for man pages.
+ - Changed xpdf-ltk.h rule to avoid leaving an empty file when
+ ltkbuild fails.
+ - Change things so that by default, ltkbuild is not built and
+ xpdf-ltk.h is not rebuilt.
+ - Use AM_PROG_CC_STDC to add compiler flags for ANSI C.
+ - Modify autoconf's builtin macros to check for xlC.
+ - Use Steve Robbins' smr_CHECK_LIB to test for pixmap library (Xpm)
+ -- this should fix the problems on systems that have the library
+ but not the include file.
+ - Added better test for sys/select.h, sys/bsdtypes.h, strings.h,
+ bstring.h.
+ - New VMS make scripts from Martin P.J. Zinser.
+ - Moved dependences into Makefile.in -- this gets rid of problems
+ with 'cc -MM' (which is gcc-specific) and 'include Makefile.dep'
+ (which isn't supported by all make implementations). Also changed
+ all non-system include files to '#include "..."' (from '<...>').
+Tweaked the TextOutputDev heuristics slightly.
+Modify Gfx to use a stack of resources -- this is necessary for Form
+ XObjects, which can define their own local resources; also modified
+ PSOutputDev to dump fonts used by forms.
+Look for excessively large MediaBox (compared to CropBox) and shrink
+ it to CropBox.
+Minor fix to scrolling when dragging a selection.
+Various patches for pdftex and Win32 support.
+Deal with Separation colorspaces by using their alternate colorspace
+ entry.
+Added PBMOutputDev for pdftopbm application.
+Added ImageOutputDev for pdfimages application.
+Separated XOutputDev into LTKOutputDev + XOutputDev.
+Added support for 1-D and mixed 1-D/2-D (Group 3) decoding to
+ CCITTDecode filter.
+Added resetImage(), getImagePixel(), and skipImageLine() to Stream
+ class; used these in XOutputDev, PSOutputDev, and ImageOutputDev.
+Implemented predictor for LZW and Flate filters.
+In pdfImM1 in PSOutputDev prolog: div should be idiv.
+Changed output from printUsage() function in parseargs to look nicer.
+
+0.90 (99-aug-02)
+----------------
+Added Type 1/1C font rendering, using t1lib.
+Added "backward" and "forward" buttons.
+Added fit-page and fit-page-width zoom factors; replaced zoom-in and
+ zoom-out buttons with a zoom popup menu.
+Type 1C fonts are converted to Type 1 and embedded in PostScript.
+Support vertical Japanese text.
+Added Japanese text support (EUC-JP) to pdftotext.
+Bumped PDF version to 1.3. Added stub functions for ri and sh
+ operators. (But there are still some missing 1.3 features.)
+Added -raw option to pdftotext.
+Minor changes to allow compiling under MS Visual C++ 5.0.
+Top-level makefile: changed 'mkdir -p' to '-mkdir -p'.
+Configure script: added X_CFLAGS to smr_CHECK_LIB(Xpm).
+Added Xpm_CFLAGS to xpdf/Makefile.in (this is needed to get the -I for
+ the xpm includes).
+Rewrote code that handles font encodings; added support for Type 1C
+ fonts.
+In the setpagedevice dictionary in PostScript output - added a
+ /Policies entry which tells the PS interpreter to scale the page to
+ fit the available paper.
+Changed PageUp behavior slightly: move to bottom (instead of top) of
+ previous page.
+TextPage used character's dx (width + char space) instead of just its
+ width.
+Read base URI from document Catalog (for URI-type links).
+Minor change to configure script to avoid using 'unset'.
+Fixed bugs in CropBox inheritance.
+Fixed a bug in resource stack handling for form objects.
+Display forms even if they have a missing/incorrect FormType.
+Fixed a bug in stream predictors -- the predictor parameters (width,
+ comps, bits) don't need to match the actual image parameters.
+ Completely rearranged the predictor code.
+Fixed PostScript output to correctly handle stream predictors.
+Don't segfault on empty (zero-page) documents.
+Added the xpdf.viKeys feature.
+Added the ffi and ffl ligatures to XOutputDev and TextOutputDev.
+Pdftotext and pdfimages now check okToCopy().
+Added a '-q' flag to all programs (except pdfinfo) to suppress
+ messages and errors.
+Deal with DeviceN colorspaces by using their alternate colorspace
+ entry.
+Change PostScript output so setpagedevice is only called once, at the
+ very beginning of the document (to avoid problems on duplex
+ printers).
+Changes to configure script and makefiles for DOS/DJGPP.
+FontEncoding::getCharCode() looked for (code>0) instead of (code>=0).
+Added keypad arrow keys, etc. to xpdf.
+Minor changes to gfile.{h,cpp} (<windows.h>) to compile under VC++.
+Fixed CCITTFaxStream to correctly handle all parameters.
+Modifications to gfile.{h,cc} for Acorn.
+Some minor changes for OS/2.
+Added 'SHELL = /bin/sh' to Makefiles.
+Compare file version to pdfVersionNum+0.0001 to avoid floating point
+ precision problems.
+Added LDFLAGS to Makefiles.
+Removed strip entirely from configure and Makefiles.
+Fixed a bug in choosing the correct DCTStream color transform.
+
+0.91 (2000-aug-14)
+------------------
+Added TrueType font rendering, using FreeType.
+Support for Chinese fonts (Type 0 fonts using the Adobe-GB1-2
+ character collection).
+Decryption code is included with the main distribution (now that the
+ US export regulations are a little bit less irrational).
+Added (very basic) support for generating PostScript with Japanese
+ fonts -- only tested with ghostscript so far.
+Added support for generating EPS files (pdftops -eps).
+Much-improved image filtering in xpdf (for downsampling and for
+ transforms other than 0/90/180/270-degree rotations).
+Implemented a basic full-screen (presentation) mode (xpdf
+ -fullscreen). (There is currently no way to switch between window
+ and full-screen modes on the fly -- this will be fixed in a later
+ release.)
+Added "reload" menu item.
+Do a better job with anti-aliased Type 1 fonts on non-white
+ backgrounds.
+Handle Lab color spaces.
+Handle non-null user passwords.
+Avoid security hole with tmpnam()/fopen() -- added openTempFile() in
+ goo/gfile.cc. [Thanks to Joseph S. Myers for pointing this out.]
+Filter out quote marks (' and ") in URLs before running urlCommand to
+ avoid a potential security hole. [Thanks to Frank Doepper for
+ pointing this out.]
+Fixed TrueColor detection to look at the complete list of available
+ visuals, not just the default visual.
+In gfile.h, changed NAMLEN(dirent) macro to NAMLEN(d).
+Removed copyright character from start-up banners.
+In the open and save dialogs, if the open/save button is pressed with
+ no file name, the dialog is not canceled.
+Added Xpm_CFLAGS to ltk/Makefile.
+XOutputDev::updateLineAttrs was using dashLength before it was
+ defined.
+In top-level Makefile.in, use INSTALL_PROGRAM instead of INSTALL.
+In man page, recommend -q instead of -err in .mailcap.
+Changes for GNOME / Bonobo support:
+ - Separated Stream classes into BaseStream and FilterStream trees.
+ - Got rid of all FileStream-specific stuff.
+ - Added a PDFDoc constructor that takes a BaseStream* instead of a
+ file name.
+Allow newlines inside strings (Photoshop does this).
+Don't require whitespace between tokens in consecutive content
+ streams (for pages that specify an array of streams).
+Look at MissingWidth when constructing font character widths array.
+Fixed a bug that caused incorrect PostScript output for images that
+ use 8-bit indexed color spaces with < 256 colors in the palette.
+Handle case where embedded font file is bad (this was seg faulting).
+Minor changes for Windows/pdftex.
+Work around a bug in PDF files from the IBM patent server.
+Fixed bugs in PostScript form generation: use pdfStartPage instead of
+ pdfSetup; problem with inline images.
+Minor bug fix in FlateStream::loadFixedCodes().
+Added %%DocumentMedia and %%PageMedia comments to the PostScript so
+ that gsview (a Windows frontend for ghostscript) gets the right
+ paper size.
+Draw AcroForm fields that have appearance annotations.
+Bounds check gray, CMYK, and RGB values (in GfxColor).
+Moved the link border drawing code into Page (from PDFDoc).
+Minor modifications for pdftohtml.
+PSOutputDev: use the Type 3 font scaling kludge from XOutputDev.
+Separation color spaces were handled incorrectly in images.
+Fixed a bug with form bounding boxes.
+Modified the t1lib support -- replace libt1x code with my own code.
+ Type 1 and TrueType fonts are now handled similarly, and clipping
+ works on Type 1 fonts.
+Don't print copyright banner (xpdf); add -v switch to get copyright
+ and version info (all apps); get rid of -err switch (xpdf).
+Automatically reload the PDF file if it has been changed, i.e., if the
+ modification time is different.
+Fixed a memory (malloc size) bug in CCITTFaxStream.
+Fixed two bugs in FontEncoding::hash() -- handle zero-length character
+ names (which were found in a (buggy?) PDF file), and handle
+ character names with high-bit-set characters (use unsigned ints).
+Added PDFDoc::isLinearized() and corresponding code in pdfinfo.cc.
+Handle files with an incorrect page count in the Pages dictionary
+ (FOP, from the Apache project produces a page count of 0).
+Handle TrueType equivalents to the Base14 fonts (Arial, TimesNewRoman,
+ CourierNew) -- Adobe's tools use these names without embedding the
+ fonts.
+Tweaked the Type 3 font sizing kludge.
+Changed pdfimages (ImageOutputDev) so it doesn't output JPEG files for
+ 4-component color spaces, since these seem to confuse most image
+ viewers.
+Added support for generating OPI comments (pdftops -opi).
+In XOutputDev::drawImage() and drawImageMask(), check for images that
+ are completely off-page.
+Use the provided alternate or a default (DeviceGray/RGB/CMYK) color
+ space for ICCBased color spaces.
+Incorporated MacOS-specific code from Leonard Rosenthol.
+Configure script switches to C++ for the strings.h/bstring.h test.
+Gfx::opRestore() calls clearPath() to handle (apparently) buggy PDF
+ files produced by FreeHand.
+The /Type field in most dictionaries is optional (PDF 1.3 change).
+Move printCommands variable definition into Gfx.cc.
+If page is smaller than paper, center the PostScript output.
+Fix a minor bug in the SELECT_TAKES_INT detection in the configure
+ script.
+TextOutputDev filters out control characters.
+Changed enough occurrences of 'char *' to 'const char *' to keep gcc
+ 2.95 from barfing.
+Support for Latin-2 and Latin-5 in pdftotext (however, this will only
+ work if the PDF file contains correct font encodings, which seems to
+ be rare).
+TextOutputDev converts "eightoldstyle" to "eight", etc.
+Don't use the return value from sprintf() -- most systems return the
+ length, but some return the string.
+Minor fixes for SunOS 4.
+Configure script looks for both select() and fd_set in sys/select.h.
+Configure script checks for gethostbyname() in -lbsd (for LynxOS).
+Fix missing closepath bug in PostScript output.
+Change PostScript portrait/landscape mode selection so it only uses
+ landscape if the page width is greater than the paper width.
+Tweaked the VMS code in makePathAbsolute().
+
+0.91a (2000-oct-11)
+-------------------
+Implemented separable CMYK PostScript output (the -level1sep switch to
+ pdftops).
+Implemented Pattern color spaces with tiling patterns (polygon fills
+ only).
+Implemented Stamp annotations.
+Implemented Named link actions.
+Fixed a really dumb bug in the TrueColor code in SFont (which affects
+ both Type 1 and TrueType font rendering on 16-bit displays).
+Rewrote the GfxColorSpace / GfxColor code.
+Switched from djgppcfg to dj_make.bat (from Michael Richmond).
+Bug in the Type 1 encoding parser -- couldn't handle lines of the form
+ 'dup NNN/name put' (with no space between the code and the name).
+Fixed the mkstemp() test in configure.in -- switched from
+ AC_TRY_COMPILE to AC_TRY_LINK and added <unistd.h>.
+Added DESTDIR to top-level Makefile.in.
+Fixed an incorrect OPI comment in PSOutputDev.
+Minor tweak to the CCITTFax code to avoid writing past the end of an
+ array on an invalid data stream.
+Xpdf crashed if the user selected 'reload' when no document was
+ loaded.
+Look for character names of the form "xx" (two hex digits with no
+ leading alphabetic char) and 'cNNN' (decimal digits with a leading
+ alphabetic char that happens to be a hex digit).
+FlateStream didn't correctly handle zero-length streams.
+Xref reconstruction didn't handle the case where the opening "<<"
+ immediately followed "trailer" with no intervening whitespace.
+Fix the %%DocumentSuppliedResources comment in EPS output.
+Scale annotations to fit their rectangles.
+Added Stream::close() to handle cases (e.g., patterns) where a Stream
+ object is used multiple times before it is deleted.
+Added the topLevel arg to Gfx::go() so it doesn't call out->dump() for
+ every pattern element (and form).
+Rearranged the GfxResources class.
+Clean up white space handling in Lexer.
+Make the dpi parameter to PDFDoc::displayPage etc. a double - this
+ avoids margin gaps with fit-page and fit-width.
+Fix a rounding problem in xpdf.cc that was causing the window to
+ sometimes be one pixel too small.
+Fixed a minor bug in dealing with Base-14 TrueType font names.
+Fixed Lab -> RGB color space conversion.
+Added support for opacity values (from PDF 1.4) to GfxState and
+ OutputDev. [Thanks to Leonard Rosenthol.]
+Implemented type 2 functions; rearranged the Function class
+ hierarchy.
+
+0.91b (2000-oct-29)
+-------------------
+Print a warning about Type 3 fonts (XOutputDev, PSOutputDev).
+Added the scroll lock behavior to 'n' and 'p' keys in xpdf.
+Change FileStream buffer size to a #define'd constant.
+Renamed Pattern to GfxPattern to avoid clashes with Windows and MacOS
+ types.
+Added CNS (Big5) Chinese font support (CHINESE_CNS_SUPPORT); renamed
+ CHINESE_SUPPORT to CHINESE_GB_SUPPORT.
+
+0.91c (2000-nov-19)
+-------------------
+Fix an endianness problem in the Type 1 font code which resulted in an
+ incorrect display with "-t1lib plain" on big-endian systems.
+CCITTFax stream decoder will skip over extra zero bits at end of line,
+ even if EncodedByteAlign flag wasn't set.
+Added Big5 support to pdftotext (with CHINESE_CNS_SUPPORT enabled).
+Fixed a typo in the CNS/Big5 encoding translation table.
+Change the form code in PSOutputDev to store images in arrays of
+ strings.
+The xref reconstruction (for damaged files) now also looks for
+ 'endstream' tags, and the parser uses this information when setting
+ up stream objects.
+In pdfinfo, convert Unicode chars in the 00xx range into 8-bit chars;
+ print a warning if there are any other Unicode chars.
+
+0.92 (2000-dec-03)
+------------------
+Fixed %%BeginResource comment (for xpdf procset) in PostScript
+ output.
+Added "-title" switch and "xpdf.title" resource to set the window
+ title.
+Check for <freetype.h> in addition to <freetype/freetype.h>.
+Upgraded the configure script to smr_macros 0.2.4 - this should fix a
+ bug where configure wasn't correctly finding t1lib.
+
+0.92a (2000-dec-17)
+-------------------
+Added 'extern "C" { ... }' in various places for ANSI C++ compliance.
+Tweaked the code that figures out DPI for fit-to-page and fit-to-width
+ modes.
+Fixed the image transformation code in XOutputDev -- no more missing
+ lines.
+Implemented color key image masking in XOutputDev.
+
+0.92b (2001-jan-07)
+-------------------
+Fixed a bug in the error-checking code in the Separation/DeviceN color
+ space parsing functions. [Thanks to Lidia Mirkin.]
+Added wheel mouse support (mouse buttons 4 and 5). [Thanks to
+ Thorsten Schreiner.]
+Added preliminary support for FreeType 2 (disabled by default).
+
+0.92c (2001-jun-04)
+-------------------
+Fixed a bug in the new image transformation code.
+Look for character names of the form "<letter><digit><digit>", instead
+ of looking for names beginning with a few specific letters.
+T1FontFile::T1FontFile wasn't initializing vars, and ~T1FontFile
+ wasn't checking before calling T1_DeleteFont -- this caused crashes
+ if it tried to open a nonexistent font file.
+Catalog::Catalog didn't set baseURI to NULL early enough.
+Tweak the check for strings.h in the configure script.
+Yet another fix for the image rotation code in XOutputDev --
+ off-by-one problem when upsampling.
+Handle Type 1/1C encodings when using FreeType 2.
+Allow FreeType2 to render user-supplied Type 1 base fonts.
+Opening a new file from full-screen mode tried to scroll.
+Fixed a bug in GfxFont constructor (missing check for NULL base font
+ name).
+Don't crash if a Type 1 font's FontBBox is non-integer.
+Pdfinfo prints page size.
+Tweak for the alpha hack in T1Font/TTFont: sample the middle pixel
+ instead of the top-left pixel.
+Automatically activate the text input widget in the find window.
+Changed a Japanese char code mapping in XOutputDev and TextOutputDev:
+ period was being incorrectly mapped to small circle (end-of-sentence
+ character).
+Add the 0/+/-/z/w key bindings to control the zoom setting.
+Fixed ImageOutputDev (pdfimages) to correctly handle inline image
+ masks.
+Extract ascent/descent info from font descriptor.
+
+0.92d (2001-jun-26)
+-------------------
+Embed TrueType fonts in PostScript output. (Added a "-noembtt" flag
+ to pdftops.)
+Extract encoding from TrueType fonts.
+Moved Function classes to a separate file (Function.h/cc).
+Implemented multi-dimensional sampled Functions.
+Implemented Type 4 (PostScript calculator) Functions.
+For Type 0 fonts, FontDescriptor is in descendant font, not parent.
+ [Thanks to Lidia Mirkin.]
+Added the "-htmlmeta" option to pdftotext.
+In TextOutputDev, when computing the number of blank lines to insert,
+ do a sanity check on the result.
+If both FlateDecode and some other filter (e.g., DCTDecode) were
+ applied to an image stream, getPSFilter() crashed instead of just
+ returning NULL.
+Handle the /Identity function.
+
+0.92e (2001-aug-23)
+-------------------
+Widths in font dict should override built-in font widths.
+Changed "rotate left/right" menu items to "rotate
+ clockwise/counterclockwise".
+The link parsing code choked if the Border array was incorrect (too
+ short).
+Modified PSOutputDev to output CMYK for fill/stroke colors.
+
+0.93 (2001-oct-25)
+------------------
+Implement PDF 1.4 (128-bit) decryption.
+Bump supported PDF version number to 1.4.
+Text output for Simplified Chinese. [Thanks to Cheung Siu Fai.]
+Read an app-defaults file for Xpdf.
+Read a system-wide config file (<prefix>/etc/xpdfrc) if ~/.xpdfrc
+ doesn't exist.
+Accept and verify owner password; if correct, allow all actions.
+Added a "-level2sep" option to pdftops to generate Level 2 separable
+ PostScript. The PostScript separation convention operators are used
+ to handle custom (spot) colors. [Thanks to Thomas Freitag for help
+ on this.]
+Add support for FreeType 2 to the configure script. Warning: this
+ requires FT 2.0.5 or newer.
+Fixed the bounding rectangle overlap test in the disconnected subpath
+ fill hack in XOutputDev.
+Stupid typo in font name table in PSOutputDev.
+Changing the zoom setting with a keyboard shortcut didn't update the
+ displayed setting.
+Modified the mouse wheel support and added the second wheel (mouse
+ buttons 6 and 7). [Thanks to Michal Pasternak.]
+Character and word spacing is affected by horizontal scaling (display
+ and PS output). [Thanks to Eddy Ng.]
+Rotation specified by the text matrix, character spacing, and
+ horizontal scaling interacted incorrectly (display and PS output).
+Some broken Type 1/1C fonts have a zero BBox -- kludge around this by
+ assuming a largeish BBox.
+Handle PDF files with an incorrect (too small) xref table size.
+Allow "-?" and "--help" as aliases for "-h" (all apps).
+Correctly handle unescaped parens in strings in Lexer.
+Fixed a bug in LTK where a menu got posted multiple times if you right
+ clicked while a page was being rendered.
+Removed a comma inside a string in configure.in.
+Kludge around broken PDF files that use char 32 but encode it as
+ .notdef instead of space.
+Clean up various compiler warnings: use constructor args like "fooA"
+ if there is a field named "foo". Everything now compiles cleanly
+ under gcc 2.91.66, 2.95.2, and 3.0.1.
+Page objects now read all of the page rectangles (MediaBox, CropBox,
+ BleedBox, TrimBox, ArtBox), as requested by the pdfTeX folks.
+ Added a new PDFRectangle struct to hold these.
+Use XOutputDev's Type 3 font size hack in TextOutputDev too, so it
+ does a little better job of extracting text in Type 3 fonts.
+Modify pdfimages to write one-bit images as PBM files.
+Work around a bug in cygwin's implementation of fseek.
+
+0.93a (2001-nov-21)
+-------------------
+Implemented the sh (shaded fill) operator for the axial shading type.
+Minor fixes to avoid compiler warnings.
+Cleaned up global variables -- moved many into instance vars and
+ function args.
+Minor fixes for OS/2.
+Fix the system config file path for VMS.
+Fix an uninitialized var in XOutputDev that caused crashes on Alphas.
+Don't incrementally update the display in full-screen mode.
+For Type 1/1C fonts, use the FontBBox from the PDF FontDescriptor
+ (instead of the one in the font file) if present -- this avoids
+ problems with fonts that have non-standard FontMatrixes.
+Add the Euro character to WinAnsiEncoding.
+Track the bounding box of the clip region to make rendering patterns
+ more efficient.
+Fix openTempFile() for Win32.
+
+0.93b (2001-dec-11)
+-------------------
+Added a duplex option to PSOutputDev and a -duplex switch to pdftops.
+Added XRef::PDFgetDocInfoNF() for pdftex project.
+Updated the VMS build script.
+
+0.93c (2001-dec-12)
+-------------------
+Completely rewrote the code that handles font encodings:
+ - everything is Unicode-based
+ - 16-bit fonts are handled much more cleanly
+ - text output encoding can be set more flexibly
+New .xpdfrc config files.
+
+1.00 (2002-feb-01)
+------------------
+More work on the font encoding rewrite:
+ - use the ToUnicode font dict entry
+ - pdfinfo and pdftotext (with '-htmlmeta') convert info strings to
+ the selected text encoding
+Added key bindings for forward ('v') and backward ('b').
+Added the pdffonts program which lists the fonts used in a PDF file.
+Fixed several problems in the TrueType font embedding code (for
+ PostScript output).
+Accept named destination on command line.
+Added several new items to pdfinfo: file size, PDF version, tagged
+ (yes or no), XML metadata (with the -meta option).
+Pdftops didn't get the portrait/landscape setting correct for PDF
+ files with rotated pages.
+The TrueTypeFontFile class (including the Type 42 converter) now
+ understands cmap format 6.
+Improved the "about" window -- mention the GPL, add a list of key
+ bindings.
+Added Zcaron and zcaron characters to WinAnsiEncoding.
+The '0' keyboard shortcut didn't update the zoom popup menu.
+Handle the complete list of alternate names for the Base14 fonts.
+Fixed substitute font scaling in XOutputDev - scale only the width,
+ not the height.
+Implemented stitching (type 3) functions.
+Handle the case of moveto/closepath/clip, which defines an empty
+ clipping region.
+Move dependences into separate Makefile.dep files; get rid of the
+ distdepend target.
+Move all of the configure-script-generated -D options out of the
+ Makefiles and into a top-level .h file (aconf.h).
+Cleaned up the FreeType 1/2 detection code in the configure script.
+Pdfinfo prints dates in a more readable format.
+Fixed a bug in the Paeth image predictor.
+Handle annotations with multiple states.
+Another workaround for buggy X servers: clip points that are way out
+ of bounds.
+Added libpaper support (for Debian).
+Generate PostScript DSC resource comments for PS (not just EPS)
+ files.
+The save and restore (q/Q) operators shouldn't save/restore the path.
+Performance optimization: disable pattern drawing in TextOutputDev.
+
+1.00a (2002-feb-25)
+-------------------
+Added an optimized special case for one-bit images in XOutputDev.
+Implemented CID TrueType font embedding; added a psEmbedCIDTrueType
+ option.
+The initialZoom X resource was broken.
+The reverse MacRoman encoding should return 32 for "space" (not 202,
+ which is an alternate encoding).
+Tweaks to the FreeType 2 support: only disable hinting if the bytecode
+ interpreter is disabled (i.e., disable autohinting but not bytecode
+ hinting); add some padding to the glyph cache for CJK fonts.
+Added level3 and level3Sep options for the psLevel setting and
+ corresponding -level3 and -level3Sep options to pdftops.
+Added a -level2 option to pdftops for consistency.
+Avoid a divide by zero in pdftotext. [Thanks to William Bader.]
+Added a Greek language support package. [Thanks to Alexandros
+ Diamantidis and Maria Adaloglou.]
+Don't bother trying to extract a "builtin" encoding from a TrueType
+ font.
+Accept either a page number or a page reference in a link
+ destination.
+Update the fontFixedWidth flag in GfxFont after reading the char
+ widths (used by the Acorn RiscOS port).
+Removed yet another (illegal but not caught by gcc) class specified
+ from a .h file.
+Avoid using snprintf - it's not available everywhere.
+Improved the CMYK->RGB transform.
+Use mkstemps where available.
+
+1.01 (2002-may-20)
+------------------
+Implemented Type 3 fonts.
+Implemented PostScript CID font embedding; added a
+ psEmbedCIDPostScriptFonts option.
+Implemented PostScript 16-bit font substitution; added psNamedFont16
+ and psFont16 options.
+Moved the initialZoom setting from X resources to the xpdfrc file.
+Implemented the radial shading type in the sh (shaded fill) operator.
+ [Thanks to Mike Sweet.]
+Added an 'include' command to the xpdfrc format.
+Added the displayNamedCIDFontX option so different fonts can be used
+ within one character collection.
+Added a simple reverse video mode (-rv switch, xpdf.reverseVideo
+ resource).
+Implemented stroked text in XOutputDev (with t1lib and FreeType2).
+ [Thanks to Leonard Rosenthol.]
+Implemented stroked text in PSOutputDev.
+Added a built-in Unicode map for UCS-2.
+New key binding in xpdf: 'g' activates the page number text field.
+PSOutputDev will now embed external TrueType fonts in addition to
+ external Type 1 fonts.
+The psEmbedType1Fonts and psEmbedTrueTypeFonts options were missing
+ the "Fonts" suffix.
+Documentation in xpdf.1 for -freetype option was wrong.
+Added the Big5ascii Unicode map to the Chinese-traditional support
+ package (maps 7-bit ASCII straight through). [Thanks to Lawrence
+ Lai.]
+Modified the EUC-CN and EUC-JP encodings to pass 7-bit ASCII straight
+ through. [Thanks to Lawrence Lai.]
+Avoid a divide by zero in XOutputDev. [Thanks to Simon Burge.]
+Remove old code in openTempFile that removed an extension from the
+ name returned by tmpnam.
+Tweak the scrolling behavior when switching pages. [Thanks to Case
+ Jones.]
+In the code that guesses character names (for font subsets), also
+ handle names of the form 'ABnnn'. [Thanks to Colin Granville.]
+Fix the transform code for annotations.
+Improved the CMap file parser to handle more general PostScript
+ lexical conventions.
+Added '-enc' option to pdfinfo.
+Added the small caps and oldstyle numbers from Adobe's Unicode
+ corporate use area to the Latin1 and ASCII7 Unicode maps.
+The code in TextOutputDev that guesses Type 3 font size could generate
+ a zero size, which resulted in div-by-zero errors.
+Various tools (including Adobe's) occasionally embed Type 1 fonts but
+ label them Type 1C - so check for a '%!' at the start.
+Some tools embed Type 1C fonts with an extra whitespace char at the
+ beginning - just skip over it.
+Fixed a typo in the Simplified Chinese add-to-xpdfrc file.
+Updates to dj_make.bat and the djgpp build instructions.
+Added a Turkish language support package.
+Updated VMS build scripts. [Thanks to Martin Zinser.]
+Modify the incremental display update code to redraw less often if
+ most of the commands are vector graphics, as opposed to text and
+ images.
+Tweak the Type 1 font bbox code to look at the bboxes in both the PDF
+ font object and the embedded font file.
+Fixed the ETenms-B5-H CMap file (for traditional Chinese) to map the
+ Latin characters to their proportional versions.
+Added an optional displayCIDFontX entry for one of the Arphic TrueType
+ fonts in the traditional Chinese 'add-to-xpdfrc' file.
+Remove leading '-' on include statements in Makefiles.
+Added psASCIIHex parameter.
+Added the GBK Unicode map to the simplified Chinese language pack.
+Pdftotext now opens the text file in binary mode to avoid Microsoft's
+ annoying automatic end-of-line translation stuff.
+Added an executeCommand function in goo/gfile.cc. [Thanks to Mikhail
+ Kruk.]
+The %ALDImagePosition OPI comment was wrong if the page was scaled to
+ a different paper size.
+The OPI code was saving the default transform matrix before calling
+ setpagedevice, which can change the matrix.
+Fixed a crash when an inline image dictionary contains garbage.
+Upgraded to autoconf 2.53.
+Use unsigned int file offsets, to allow access to PDF files in the 2-4
+ GB size range; use fseek64/ftell64 if available.
+Fixed two floating point exception cases that came up with broken PDF
+ files.
+Avoid a crash when printing an error message regarding an unnamed
+ font.
+Default link border width should be 1. [Thanks to Michael Pfeiffer.]
+Minor tweak to build with FreeType 2.1.0.
+Handle "weird" characters in PostScript font names.
+PSOutputDev now handles PostScript XObjects.
+Added several more page attributes for the pdftex project.
+Transferred the copyright to Glyph & Cog, LLC.
+
+2.00 (2002-nov-04)
+------------------
+Switched to the Motif toolkit.
+Support multiple open documents (in separate windows).
+Added document outlines to the viewer.
+Modified the text extraction (placement) algorithm.
+Implemented the JBIG2 decoder.
+Added a Latin2 language support package.
+Added support for movie annotations.
+Switched back to native LZW decompression code.
+Text extraction from Type 3 fonts was (partly) broken.
+The owner password checking code was missing a step in the case of
+ 128-bit encryption.
+Added the 'printCommands' option to the xpdfrc file.
+Added key binding for '?' to bring up the about/help dialog.
+In TextOutputDev, ignore any text that's outside the page bounding
+ box.
+Text extraction throws away "tiny" characters after the first 20000
+ per page, to avoid really slow runtimes with PDF files that use
+ special fonts to do shading or cross-hatching; added the
+ 'textKeepTinyChars' option to disable this behavior.
+Text extraction discards duplicated text (fake boldface, shadow
+ effects).
+Added ctrl-F as a key binding for find.
+Added a "find next" function, bound to ctrl-G.
+Added ctrl-P as a key binding for print.
+Modified the DCT decoder to handle progressive and non-interleaved
+ JPEG streams.
+Added key bindings for ctrl-Home and ctrl-End.
+Allow the initialZoom setting to be made in either the xpdfrc file or
+ as an X resource.
+Added a Hebrew language support package. [Thanks to Roy Arav.]
+The "make distclean" target now creates (empty) Makefile.dep files in
+ the three subdirectories.
+Initialize XRef::ownerPasswordOk.
+Correctly handle stroking of Type 3 fonts in PSOutputDev.
+Generate correct PostScript for fonts with "weird" character names
+ (e.g., "(").
+Generate correct PostScript for images using Indexed color spaces with
+ DeviceN base color spaces.
+Added lowercase Roman numerals to ISO-2022-CN.unicodeMap (simplified
+ Chinese support package).
+Tweak the image scaling code to better handle flipped (top-bottom
+ and/or left-right) images.
+Generate correct PostScript code for inline images and images in Type
+ 3 fonts which are too large for a single PS string.
+Correctly handle indexed color spaces whose base color spaces have
+ component ranges other than [0,1].
+Optimized the DCT decoder.
+Fixed mistakes in the list of key bindings in the about/help dialog.
+Optimized the Flate decoder.
+Add literal names for punctuation and digits to the Unicode name
+ table.
+Cygwin's popen wants mode "r", not "rb".
+Fixed a bug in the Type 4 function parser (the "if" operator wasn't
+ parsed correctly).
+Fix a bug in PS output for TrueType fonts with no PDF encoding.
+Make the bbox size in FTFont more liberal (to avoid problems with
+ fonts that have incorrect bboxes).
+Reverse the colors in PBM files generated by pdfimages, so the common
+ case (an image mask filled with black) comes out correct.
+Add fseeko/ftello support which is basically identical to
+ fseek64/ftell64. [Thanks to Nassib Nassar.]
+Modified column assignment in text extractor to account for characters
+ that convert to multiple characters in the output encoding.
+Fix TrueType fonts which have an incorrect cmap table length.
+Work around a pragma bug in the version of gcc that ships with MacOS X
+ 10.2. [Thanks to Frank Siegert and Andrew Stone.]
+Fix a problem that was causing an infinite loop when a damaged content
+ stream contains an 'ID' command inside a dictionary.
+Handle the case where systempapername() returns NULL (libpaper
+ support).
+Handle fonts which are defined directly in the font resource
+ dictionary rather than as separate objects.
+Track process colors in Level 1 separable PostScript.
+Pdfinfo now checks the return value from mktime to avoid seg faults in
+ flakey strftime implementations.
+If duplex is not enabled in PostScript output, leave the duplex
+ setting alone, allowing the spooler to insert its own setting.
+Added three missing fclose calls.
+Change the default encoding for TrueType fonts (used when the PDF file
+ doesn't specify an encoding) from MacRomanEncoding to
+ WinAnsiEncoding.
+Move X_CFLAGS to the end of the list in CXXFLAGS (in Makefile.in) to
+ avoid some of the FreeType2 include path problems.
+Fixed an obscure bug in the LZW decoder. [Thanks to Martin
+ Schroeder.]
+Fixed a bug in decryption when using the newer (PDF 1.4) algorithm
+ with shorter-than-128-bit keys.
+Minor optimization for image data streams: the ImageStream class can
+ return an entire buffered line.
+
+2.01 (2002-dec-05)
+------------------
+Redesigned the text extraction process:
+ - process the text into "reading order"
+ - added a "-layout" flag to pdftotext to switch back to the old
+ style, where physical layout is maintained
+ - use of the "-raw" flag is no longer recommended
+Added the -reload option for xpdf (in remote mode).
+Added support for external CID fonts; added the displayCIDFontT1 and
+ displayNamedCIDFontT1 commands to the xpdfrc file.
+Handle the case of moveto/newpath/clip, which defines an empty
+ clipping region (just like moveto/closepath/clip).
+Accept XYZ link destinations with missing array elements.
+Fix some problems with state save/restore triggered by Type 3 fonts
+ that reference other fonts.
+Accept bogus font names based on "Symbol": Symbol,{Bold,Italic,
+ BoldItalic}.
+Fixed color and font resource names in the xpdf man page.
+Was using delete instead of gfree in OutlineItem::~OutlineItem.
+Set the busy cursor in the find dialog while searching.
+Map variants of the copyright, trademark, and registered trademark
+ symbols to the proper Unicode codes, not to Adobe's corporate use
+ area codes.
+Fixed a floating point exception bug in TextOutputDev (check for a
+ too-small denominator).
+Fixed a typo in TextOutputDev, in the code that generating blank lines
+ to add vertical whitespace.
+Config files whose last line didn't end with a LF (or CR+LF) weren't
+ being handled correctly.
+The code that handled CIDToGIDMaps in Type 2 CIDFonts was broken.
+Check the per-glyph bounding box in Type 3 fonts, and don't try to
+ cache glyphs with bogus bboxes.
+Allow ToUnicode CMaps to use fewer than four hex digits in the Unicode
+ char indexes.
+Added multithreading protection to the GlobalParams class.
+Fixed a bug in end-of-stream detection with the TIFF predictor.
+Added some characters to MacRomanEncoding to match up with Apple's
+ definition.
+
+2.02 (2003-mar-24)
+------------------
+Rewrote the text extractor code that assembles words into lines to
+ better handle vertically overlapping lines.
+Add the "match" option for paper size (in PostScript output).
+Added support for external 16-bit TrueType fonts; added the
+ displayCIDFontTT and displayNamedCIDFontTT commands to the xpdfrc
+ file.
+Added an Arabic language support package.
+Added the Windows-1255 encoding to the Hebrew language package.
+A missing NULL check was causing a crash when closing the file in a
+ single window (which clears out the window, but leaves it open).
+Deal with TrueType fonts whose glyph data is out of order - this
+ affected both FreeType rasterization and PostScript generation.
+Munge font names in PSOutputDev to avoid names that are problematic
+ for ghostscript because they start with an out-of-limits number
+ (e.g., 1e999foo).
+Modify the TrueType font encoding deciphering algorithm in yet another
+ attempt to match up with Acrobat's behavior.
+Bounds check the indexHigh value in indexed color spaces.
+The text extractor no longer bothers trying to get an average
+ character width for Type 3 fonts, since it generally doesn't work
+ very well (because Type 3 metrics are unreliable).
+Don't crash if the user hits ctrl-G ("find again") before doing a
+ find.
+Set the button pixmap foreground color correctly.
+Handle text drawn backward on 180 degree rotated pages.
+Added a magic call to XtUngrabButton after calling XmCreatePopupMenu
+ which appears to prevent some very odd problems (idea taken from the
+ DDD source code).
+Fix the MacOS X fix (needed to include <AvailabilityMacros.h>).
+Fixed a bunch of Motif 1.x / X11R5 incompatibilities. [Thanks to
+ William Bader and Albert Chin-A-Young.]
+Fixed various bugs in previously untested code in the JBIG2 decoder.
+Modify the XPDFCore destructor to avoid a bogus warning message from
+ OpenMotif 2.2.
+Modified the Type 1C font parser to do proper bounds checking.
+Fixed the bounds checking in the TrueType font parser.
+Text extractor shouldn't do block merging in physical layout mode.
+Fixed a problem in PSOutputDev in level2sep mode with images in a
+ Separation color space and with a non-default Decode array.
+Text extraction with "-raw" was concatenating lines from the bottom of
+ one column and the top of the next.
+Handle Type 1C subroutines in the font converters.
+Correctly handle progressive JPEG images whose scans are slightly
+ different sizes (e.g., the Y scan rounds up to a multiple of 8
+ pixels and the Cb/Cr scans round up to 16 pixels).
+Avoid a potential divide-by-zero problem in TextOutputDev.
+Modified the T1Font and FTFont modules to correctly handle glyphs that
+ are larger than the font's claimed bounding box.
+Tweak dupMaxDeltaX parameter in TextOutputDev to avoid triggering on
+ double characters.
+Improved detection in pdfinfo for ISO paper sizes. [Thanks to Hartmut
+ Henkel.]
+Xpdf wasn't responding to the TARGETS atom, which prevented pasting
+ the selection into various applications. [Thanks to Phillip Ezolt.]
+Handle XObjects with recursive references in their Resources
+ dictionaries (in PSOutputDev).
+Change PSOutputDev to deal with invalid PDF files that use
+ non-embedded TrueType fonts with no encoding.
+Check for undersized Widths arrays in fonts.
+Add bounds checking code to Array class.
+Updated VMS build scripts. [Thanks to Martin Zinser.]
+Tweak the TrueType font handling code (again):
+ - char codes in symbolic fonts may or may not be offset by 0xf000
+ - discard empty tables because they sometimes confuse FreeType
+Fixed bounds checking in the Flate decoder.
+Removed a bogus error message for exponential functions without
+ explicit C0/C1 values. [Thanks to Hartmut Henkel.]
+Handle the other Unicode cmap type (platform=0) in TrueType fonts.
+Added support for the SGI Motif horizontal paned window widget.
+ [Thanks to Felix Ritter.]
+Ignore extra elements in link destination arrays.
+Accept external Type 1 font files with a suffix of ".ps" or no suffix
+ at all.
+Add a bounds check in the DCT decoder.
+Added instructions for building xpdf.exe under cygwin/XFree86.
+Tweaked the word separation parameter for raw-mode text extraction.
+
+2.03 (2003-oct-10)
+------------------
+Rewrote the text extractor to:
+ - do a better job with rotated text;
+ - handle right-to-left scripts;
+ - be faster.
+Changed the zoom setting to use a percentage (relative to 72 dpi)
+ instead of a zoom "factor".
+If the PDF file has an outline, open the outline pane initially.
+Added -f and -l options to pdfinfo; print multiple page sizes.
+The HAVE_XTAPPSETEXITFLAG test in XPDFApp.cc was backwards.
+The BitsPerComponent entry is optional in image mask objects.
+Render any annotation with an appearance stream, instead of just
+ Widget and Stamp annotations.
+Fix a bug in the TrueType font checker: the test for an unsorted
+ 'loca' table was wrong.
+Modify the TrueType cmap selection algorithm yet again to try to match
+ Adobe's behavior.
+Changed sqrt(2) to sqrt(2.0) in pdfinfo.cc to make various compilers
+ happy.
+Fixed a deadlock problem (when MULTITHREADING is set); cleaned up some
+ other problems with the locking code.
+Fixed a bug in the interpolation code for type 0 (sampled) functions.
+Implemented type 1 (function-based) shaded fills.
+Fixed some stupid bugs in the JBIG2 decoder (introduced with the
+ previous optimization work).
+Fixed a typo in the code that parses vertical font metrics for CID
+ fonts that was causing a seg fault.
+Fixed a couple of bugs that were causing seg faults with badly damaged
+ PDF files.
+Limit the number of nested Forms to avoid infinite recursion (in buggy
+ PDF files).
+Add a special case for rectangular clip regions - make sure these
+ don't drop pixels on the right and bottom edges.
+Tell FreeType not to use glyph bitmaps when in anti-aliased mode.
+Read all of the border style info for links.
+All of the shaded fill types now do at least one bisection to avoid
+ problems when the colors at the endpoints of the domain are the
+ same.
+If the Length2 parameter for an embedded Type 1 font was incorrect
+ (too small), pdftops was losing font data.
+Deal with (broken) DCT streams that use the same component ID number
+ for different components.
+The MediaBox page attribute was not being inherited correctly.
+Fixed a bug in the Type 1C font converter related to local
+ subroutines.
+The Type 1C -> Type 1 font converter was allocating the font dictionary
+ one slot too small.
+Added a missing private dictionary entry to Type 1 fonts generated by
+ the Type 1C converter. [Thanks to Michael Shell.]
+Fixed bugs in the tiling pattern fill code.
+Try the TrueType 0xf000 char code offset hack for the MacRoman
+ encoding too (in addition to MS Symbol).
+Update the font metrics info for the Base 14 fonts to include the Euro
+ character.
+SECURITY HOLE: Escape various characters in URLs before running a web
+ browser (or movie viewer). [Fixed in 2.02p11]
+SECURITY HOLE: In the dialog used to verify "launch" links, provide a
+ scrolling view if the command to be run is excessively long. [Fixed
+ in 2.02p11]
+Added an option to disable insertion of page breaks (form feed
+ characters) in extracted text (pdftotext -nopgbrk; xpdfrc
+ "textPageBreaks" option).
+Check for 8-bit fonts that specify an out-of-range FirstChar or
+ LastChar.
+Correctly handle an obsolete Type 2 charstring op (in the Type
+ 1C-to-Type 1 font converter). [Thanks to Helge Blischke.]
+Use the font encoding info to fill in holes in the ToUnicode map.
+Added character names for Bulgarian (in the Cyrillic support pacakage)
+ and Greek.
+Handle clipping to text in xpdf and pdftops.
+Fix color space detection in DCT decoder. [Thanks to Dwight Kelly.]
+Added the "unicodeToUnicode" xpdfrc option, intended (initially) for
+ Arabic support.
+Handle the case in PSOutputDev where two font objects refer to the
+ same embedded TrueType font, but with different encodings. [Thanks
+ to Frank Siegert.]
+Kill any pre-existing path before drawing a form (or annotation).
+Save state before rendering page content; restore state afterward.
+Fix Stream::reset/close to work correctly with encoder streams; fix
+ PSOutputDev to use Stream::close consistently.
+Fix a seg fault when hitting the 'back' button after closing a file.
+GfxState::getStrokeGray was returning the fill gray value (this only
+ affected Level 1 PS output).
+Change PSOutputDev to reuse dictionaries in Level 1 mode (since Level
+ 1 PS interpreters don't do garbage collection). [Thanks to Frank
+ Siegert.]
+PSOutputDev was generating incorrect translations for landscape-mode
+ pages.
+Implemented shading pattern color spaces.
+PSOutputDev wasn't correctly handling Type 3 fonts which used image
+ resources (as opposed to inline images). [Thanks to Frank Siegert.]
+The fix from 1.00 which clipped out-of-bounds points was a bit too
+ aggressive.
+Do proper Floyd-Steinberg dithering in XOutputDev.
+Don't automatically check for a null owner password (to match Adobe's
+ behavior).
+Allow the FlateDecode filter in Level 3 PostScript output.
+Fixed small bugs in the Type 1C -> Type 1 converter and Type 1C ->
+ Type 0 converter. [Thanks to Tom Kacvinsky.]
+Work around another weird Motif problem with the right button menu
+ (which was sometimes causing the menu to not be displayed).
+Make the code that handles fonts defined directly in the resource dict
+ more robust.
+Add a brief description of the outline pane to the xpdf man page.
+Ignore extra operands to content stream operators.
+Fixed a bug in the CCITTFax decoder.
+Allow the Count entry in a Pages dictionary to be a real number
+ (because some PDF generators actually do this).
+Shading pattern fills weren't being clipped correctly.
+Incorrect shallow copies in GfxRadialShading and StitchingFunction.
+The StitchingFunction destructor wasn't checking for funcs being
+ NULL.
+Change the TrueType code-to-GID mapping code so it looks at the
+ TrueType 'post' table.
+Set the print command in the print dialog once at startup, don't
+ change it each time a file is (re)loaded.
+Generate the %%BoundingBox comment in regular PostScript files (not
+ just EPS files).
+Fixed a bug in the Unicode CMap parser.
+
+3.00 (2004-jan-22)
+------------------
+New PDF rasterizer ("Splash").
+Added support for PDF 1.5:
+ - JPX (JPEG 2000) decoder
+ - XRef streams
+ - object streams
+ - DeviceN color spaces with up to 32 components
+ - Added new CMaps to the CJK language support packages
+Replaced pdftopbm with pdftoppm (which can generate PBM, PGM, and PPM
+ files).
+Reorganized the font file parser code into a new library ("Fofi").
+Removed support for FreeType 1.x.
+Removed support for X server fonts - Xpdf (and pdftoppm) will now
+ search for the URW fonts (from ghostscript).
+Changed the "-t1lib" and "-freetype" switches; replaced the
+ "t1libControl" and "freetypeControl" config file options with
+ "enableT1lib", "enableFreeType", and "antialias".
+Added the "-box" option to pdfinfo.
+Added imageable area support to PSOutputDev (for CUPS); added the
+ "psImageableArea" config file option.
+Added the "-nocrop", "-expand", "-noshrink", and "-nocenter" switches
+ to pdftops; added the "psCrop", "psExpandSmaller", "psShrinkLarger",
+ and "psCenter" config file options.
+Dictionary size was in PostScript code generated for Type 3 fonts.
+The PS code generated for images in Type 3 characters was broken.
+Tweaked the text extractor.
+Accept xref entries that are one byte too short (matching Adobe's
+ behavior).
+Change things so "xpdf -h" and "xpdf -v" work if DISPLAY isn't set.
+Fix a problem in the damaged file repair code that handles the trailer
+ dictionary.
+Use the "Last" entries in "Outlines" objects - this avoids a problem
+ with PDF files generated by buggy software that, e.g., sets the last
+ item's Next pointer to point to itself.
+PSOutputDev was not handling DeviceN color spaces correctly in Level 2
+ images.
+Fixed a stupid little bug that broke PS output for JBIG2 images.
+Work around a Lesstif bug: set up an extra callback so hitting <Enter>
+ in the find dialog performs a search. [Thanks to Elliott Hughes.]
+Pdftops was crashing on zero page PDF files.
+Add an AC_PREREQ call to configure.in.
+Change the 'find' dialog so the text entry box resizes with the
+ dialog.
+Skip extraneous zero bits at the start of a CCITTFax stream.
+The PostScript text clipping operator was missing a 'newpath'.
+ [Thanks to Frank Siegert.]
+Fix a bug in tiling patterns with bboxes that don't start at (0,0).
+Fix a bug in Type 3 font handling with rotated text.
+The tiled pattern fill code was destroying the current path, which
+ broke the fill+stroke operators when the fill color space was a
+ tiled pattern.
+ICCBased color spaces don't always set their Ranges values correctly,
+ so just use the values from the alternate color space.
+Modified GHash to accept int or void* - this avoids some conversion
+ warnings.
+Check for missing Type 3 CharProcs - avoid a segfault.
+Pdffonts now marks all Type 3 fonts as embedded.
+Outline entries with no Title string weren't being handled correctly,
+ resulting in segfaults.
+PSOutputDev now forces the text horizontal scale factor to be non-zero
+ to avoid singular font matrices in the PS code.
+Tweaked the error recovery in the CCITTFax decoder.
+The LZW/Flate predictor should treat any Predictor value (in the
+ stream dictionary) >= 10 identically.
+PSOutputDev and pdffonts check for NULL font objects (which can
+ happen, e.g., because of missing CMap files).
+Swap the left and right mouse wheel button numbers.
+EPS output ("pdftops -eps") now uses the CropBox instead of the
+ MediaBox as the EPS bounding box.
+
+3.01 (2005-aug-17)
+------------------
+Added the continuous view mode, including the '-cont' switch and the
+ 'continuousView' config file option.
+At high zoom levels, don't rasterize the entire page - this avoids
+ problems running out of memory.
+Added "search backward" and "match case" options to the find dialog.
+Support explicitly masked images and soft masked images.
+Add support to DCTStream for 16-bit quant tables.
+Don't segfault if the user clicks on an outline entry with a broken
+ destination.
+Changed the makefiles and configure script to skip building pdftoppm
+ (in addition to xpdf) if X, Motif, or FreeType is not found; changed
+ the error message in the configure script to match.
+Move an inline function in JArithmeticDecoder.cc to avoid compiler
+ errors.
+Fixed a bug in the rasterizer that was sometimes causing infinite
+ loops with round line caps on vertical lines.
+Various rasterizer optimizations.
+Look for intermediate resize events - try to avoid lagging when the
+ user is doing an opaque resize.
+The FormType key in Form XObjects is optional.
+Handle external 16-bit TrueType fonts correctly, using the Unicode
+ cmap.
+Add class declarations to TextOutputDev.h to work with stricter C++
+ compilers.
+Support FreeType's weird include file stuff (ft2build.h, etc.).
+Fixed a bug handling empty paths.
+Fixed a text positioning problem in PostScript output.
+Handle TrueType collections in FoFiTrueType.cc.
+FoFiTrueType constructor was reporting a failure if the post table was
+ bad - this should be non-fatal.
+Type 1 font parser was missing a NULL test.
+Mask chars passed to isdigit in goo/parseargs.c to avoid problems with
+ signed chars.
+Added more error checking to the CCITTFax decoder.
+Fixed a bug (computing the MCU size) in the DCT decoder.
+Change a test in the Splash stroke code to avoid x86 floating point
+ weirdness.
+Reorganized the decryption code to allow security handler plugins;
+ removed the NO_DECRYPTION #ifdefs.
+Added a plugin interface, initially just for security handlers.
+Support color key masked images and explicitly masked images in PS
+ output (Level 2 only).
+When checking for aliases of the Base 14 fonts, ignore spaces in the
+ specified font name.
+Handle encrypted PDF files that are missing the file ID string.
+Handle tiling patterns more efficiently in the PostScript output.
+Rewrote the code that handles color spaces in PostScript output.
+Fixed a bug in the Type 1C font parser - zero-length indexes (and
+ zero-length names) weren't handled correctly.
+Handle shaded fills more efficiently in the PostScript output.
+Implement the remaining shading types (4-7).
+Rearranged the Splash color modes.
+Add the EarlyChange parameter to LZWStream when generating PostScript.
+Check for zero values in line dash arrays in PSOutputDev.
+Fixed an uninitialized variable in JArithmeticDecoder which was
+ causing crashes.
+Treat unknown CMap names as identity mappings (to match Adobe's
+ behavior).
+Fixed bugs in the XRef parser related to XRef streams in updated
+ files.
+Added a missing call to FT_Done_Glyph which was causing a memory leak.
+ [Thanks to Dave Formanek.]
+Fixed a bug in text copying that was causing the last word to be
+ dropped on some pages.
+Tweaked the image width/height computation in Splash::drawImage and
+ Splash::fillImageMask to make striped images work better.
+Ignore minus signs in the middle of numbers (to match Adobe's
+ behavior).
+Missing '%s' in format strings for dates in pdftotext '-htmlmeta'
+ mode.
+Change the TrueType code-to-GID mapping code so it looks at the
+ standard name-to-Unicode mapping before the ToUnicode mapping
+ defined in the font object.
+Added a matteColor setting (command line option and X resource).
+Tweaked the CMYK->RGB transform.
+Fix some problems in tracking the character position (to match up with
+ Adobe's highlight file format).
+Handle moveto/closepath/stroke correctly.
+Check for singular text matrices and font size of zero in PSOutputDev.
+Clip PS output to the size of the page (avoiding any gibberish that
+ lies outside the MediaBox, in the case where the MediaBox is smaller
+ than the paper).
+If the line dash element in an annotation's Border array is of an
+ invalid type (i.e., not an array), don't draw the link at all (this
+ matches Adobe's behavior).
+Don't remap small caps and oldstyle glyphs in the name-to-Unicode
+ table - it messes up TrueType font encodings.
+Pdftoppm wasn't setting the paper color correctly in mono and gray
+ modes (this only showed up on big-endian machines).
+Missing NULL check was causing crashes when attempting to read non-PDF
+ files that happened to contain the string '%PDF'.
+Fixed a problem in the text extractor that was breaking up words.
+Handle vertical text (CJK fonts) in PS output with TrueType fonts that
+ are missing the vertical metrics tables.
+Handle the case where a font object and the corresponding embedded
+ font are different types.
+Handle basic crypt filter functionality.
+Added more value checking in the XRef parser, to avoid potential
+ security problems.
+Updated the CJK language support packages: replaced the
+ displayCIDFontX references with displayCIDFontTT; added pointers to
+ free TrueType fonts.
+Added a missing error message when SplashOutputDev can't parse an
+ embedded TrueType font file.
+PDFCore and TextOutputDev now correctly handle searching for Unicode
+ strings, including real Unicode case-folding.
+Throw away tiling pattern fills that are completely outside the clip
+ region.
+The JPEG 2000 inverse reversible multiple component transform code was
+ wrong.
+Fixed some bugs in shading pattern fills: clipping was wrong, and
+ background color was not implemented.
+Added tool tips for the toolbar buttons.
+Decrease the max depth of recursive patch mesh filling if the pattern
+ has a large number of patches.
+Highlight the find text whenever the find dialog is mapped.
+Handle page boundary boxes with reversed coordinates.
+Fixed a bug in the text extractor code that handles duplicated text.
+Optimization work on SampledFunction::transform().
+Use the CropBox instead of the MediaBox as the display region.
+Dither for PseudoColor (8-bit) displays.
+Fix a bug in DCTStream that was causing an infinite loop with
+ corrupted DCT image data.
+Fix a bug in the ToUnicode CMap parser.
+Fix a bug in the text extractor - negative font sizes weren't being
+ handled correctly.
+Fix a bug in the text extractor - in certain cases, out-of-bounds text
+ could cause crashes (generally only in damaged PDF files).
+Fix a read-past-end-of-array bug in the JBIG2 decoder.
+Fix a case where pdftops was generating lines longer than 255 chars.
+Optimize redraws - don't regenerate the XImage every time redrawRect
+ is called.
+The ASCII85 decoder wasn't skipping whitespace properly.
+Optimize text extraction: skip (non-inline) image setup entirely.
+Added initial transparency support (stroke/fill alpha and blend mode).
+Added support for the overprint setting in PostScript output.
+Fixed various buffer overflow bugs.
+Handle negative font sizes and horizontal scaling correctly - this
+ affected PSOutputDev for all text operators, as well as the TJ
+ operator for all OutputDevs.
+Fixed a buffer overflow in the CCITTFax decoder.
+Fixed an out-of-order entry in the list of font name aliases.
+Fixed a backward loop in the PostScriptFunction code.
+Treat a zero-length base URI the same way as a nonexistent base URI.
+Add a divide-by-zero check in TextOutputDev (the problem was happening
+ in cases of mixed horizontal and vertical text).
+PSOutputDev wasn't rounding the page bounding box coordinates
+ correctly.
+Support the SOF1 marker in DCT (JPEG) image streams.
+Minor changes to GlobalParams.h and JPXStream.h because some compilers
+ don't like anonymous structs inside anonymous unions.
+Xpdf now complains about a negative page number.
+Changed GString::cmp and GString::cmpN to correctly handle '\0' chars
+ in the middle of strings.
+Fixed the radial shading code; corrected the handling of the 'extend'
+ parameters.
+Added the gmallocn and greallocn functions.
+Fixed a bug in the TIFF image component predictor which shows up with
+ components that are not 1 or 8 bits wide.
+Optimized FlateStream::loadFixedCodes().
+For non-embedded Base-14 fonts, don't use the ascent/descent/bbox
+ values from the FontDescriptor - various PDF generators get them
+ wrong.
+Fixed a bug in the text extractor - words on the same line (especially
+ in tables) were being split vertically onto multiple lines.
+Automatically select the correct radio button ("print with command"
+ vs. "print to file") in the print dialog.
+Don't create the "open" and "save as" dialogs until needed - this
+ avoids stat-ing every file in the directory at startup.
+Changed the Big5 and Big5ascii encodings (in the traditional Chinese
+ language support package) to include characters from the Unicode
+ database (which aren't mentioned in the Adobe character collection
+ documentation).
+Added the '-pagecrop' switch to pdftops.
+Tweaked the RGB->gray and CMYK->gray conversion functions to match the
+ PDF spec.
+The JPEG 2000 decoder wasn't correctly handling codeblocks split
+ across multiple packets/layers.
+Fixed a typecast that caused compile errors on 64-bit systems.
+The CMap parser wasn't handling the 'cidchar' construct.
+Handle the case in PSOutputDev where two font objects refer to the
+ same embedded 16-bit TrueType font, but with different CIDToGIDMaps.
+Changed the configure script to report more accurate warnings when
+ it can't find X / Motif / FreeType.
+Encryption with revision=2 always uses a 40-bit key, regardless of the
+ specified Length value.
+Yet another minor change to the TrueType font encoding deciphering
+ algorithm.
+Don't completely invalidate the Catalog if one (or more) of the page
+ objects are bogus -- just skip over those pages.
+Removed the workaround in pdftops for too-small Length2 values in Type
+ 1 fonts -- it was causing problems on various PostScript printers.
+Started adding error checking to the JBIG2 decoder (this is nowhere
+ near complete yet).
+Extended the "unicodeToUnicode" config option to also apply to CID
+ fonts.
+Added the narrow Latin characters to the Adobe-Korea1.cidToUnicode
+ file in the Korean language support package.
+Fixed the code that handles page rotation in PSOutputDev.
+When converting a Type 1C glyph to a Type 1 glyph, insert closepath
+ operators as appropriate.
+Check for a sane 'loca' table in TrueType fonts (FoFiTrueType::parse).
+Fix PSOutputDev to correctly handle the case of an empty name in a
+ font encoding.
+
+3.02 (2007-feb-27)
+------------------
+Added anti-aliasing for vector graphics; added the vectorAntialias
+ xpdfrc option; added the "-aaVector" switch to xpdf and pdftoppm.
+Implemented stroke adjustment (always enabled by default, ignoring the
+ SA parameter, to match Adobe's behavior), and added the strokeAdjust
+ xpdfrc command.
+Support PDF 1.6 and PDF 1.7.
+Added support for AES decryption.
+Added support for OpenType fonts (only tested with 8-bit CFF data so
+ far).
+Added user-configurable key/mouse bindings - the bind/unbind xpdfrc
+ commands.
+Cleaned up the full-screen mode code and added the ability to toggle
+ it on the fly (the default key binding is alt-f).
+Pdfimages with the -j option now writes JPEG files for 1-component
+ (grayscale) DCT images, in addition to 3-component (RGB) images.
+Fixed bugs in handling sampled (type 0) functions with 32-bit
+ samples.
+Fixed some things to support DeviceN color spaces with up to 32
+ colorants.
+Pdftops now constructs the %%Creator and %%Title DSC comments from the
+ relevant information in the PDF Info dictionary.
+Tweak the TrueType font encoding deciphering algorithm.
+Added the "mapUnkownCharNames" xpdfrc option.
+Fix a bug (that only showed up with certain window managers) in the
+ intermediate resize event optimization. [Thanks to Michael Rogers.]
+Check for a broken/missing embedded font (this was causing xpdf to
+ crash).
+Added support for transfer functions in PostScript output.
+Be a bit more tolerant of Link destinations that contain null values
+ for positioning parameters.
+Use ordered dot dithering instead of clustered dot dithering at
+ resolutions below 300 dpi (for monochrome output).
+Fixed security holes (bounds checking issues) in several places.
+Don't bother creating a SplashFont (allocating memory) for fonts that
+ are only used for hidden text - this avoids problems with fonts of
+ unreasonably large sizes.
+Clipping in TextOutputDev was off for characters on the left edge of
+ the page.
+The scn and SCN operators weren't correctly handling colors with more
+ than four components.
+FoFiType1::writeEncoded wasn't always correctly finding the end of the
+ encoding.
+Use the ColorTransform parameter in the DCTDecode stream dictionary.
+Type 3 fonts are allowed to have a bbox of [0 0 0 0], which means
+ "unspecified" -- don't issue error messages in that case.
+Perform the transform (to device space) in Splash instead of in
+ SplashOutputDev -- this is needed to correctly handle round joins
+ and caps on stroked paths.
+PSOutputDev now rasterizes any pages that use transparency.
+Limit the crop, bleed, trim, and art boxes to the edges of the media
+ box (per the PDF spec).
+Change GString to increase the allocation increment by powers of two.
+Handle whitespace in hex strings in CMap files/streams.
+Use strings instead of names for separation colorant names in
+ PSOutputDev.
+For explicitly masked images where the mask is higher resolution than
+ the image, use the soft mask code.
+Avoid problems with very large x-steps in the PostScript output for
+ tiling pattern fills.
+Avoid a divide-by-zero in stitching functions which have a subfunction
+ with empty bounds.
+Honor the "Hidden", "NoView", and "Print" flags on annotations.
+Rewrote the pixel rendering code in Splash to use a single set of
+ pixel pipeline functions.
+Added support for transparency groups and soft masks.
+Fixed the transparency blend functions to match the addendum published
+ by Adobe.
+Changed Splash/SplashBitmap to store alpha in a separate plane.
+Setting the color space now selects the correct default color for that
+ color space.
+Remove the mutex lock from GlobalParams::getErrQuiet() to avoid a
+ deadlock when parseCIDToUnicode() or parseUnicodeToUnicode() calls
+ it from inside a locked section.
+Added error checking (on the argument count) in the sc/SC/scn/SCN
+ operators.
+Skip over notdef glyphs in TrueType fonts (which sometimes get drawn
+ as little boxes), to match Adobe's behavior.
+Painting operations in a Separation color space with the "None"
+ colorant or a DeviceN color space with all colorants set to "None"
+ never mark the page.
+Fixed an obscure bug in the JPX decoder - it wasn't reading the extra
+ stuffing byte in the case where the last byte of a packet header was
+ 0xff.
+Change the TrueType font parser (FoFiTrueType) to change the glyph
+ count rather than report an error if the 'loca' table is too small.
+Fixed a couple of bugs in the JBIG2 decoder.
+Added stochastic clustered dot dithering.
+Added the screenType, screenSize, screenDotRadius, screenGamma,
+ screenBlackThreshold, and screenWhiteThreshold xpdfrc settings.
+PSOutputDev now correctly handles invalid Type 3 charprocs which don't
+ start with a d0 or d1 operator
+FreeType 2.2.x support - get rid of the FT_INTERNAL_OBJECTS_H include,
+ and add some 'const' declarations.
+Handle PDFDocEncoding in Info dictionary strings.
+Tweak the xref repair code - ignore whitespace at the start of lines
+ when looking for objects.
+Added the "-exec" switch to xpdf.
+Removed the xpdf.viKeys X resource.
+Changed the color key / explicit masked image code in PSOutputDev to
+ generate better PS code, including a Level 3 option.
+Tweaked the DEBUG_MEM code for performance.
+Move the JBIG2 global stream reading code into reset() instead of the
+ constructor - this way, pdftotext doesn't end up reading the global
+ stream.
+Added the "-preload" option to pdftops and the psPreload xpdfrc
+ command.
+Added the "zoom to selection" command (on the popup menu).
+Fix a bug (in xpdf/pdftoppm/pdftops) with tiling patterns whose bbox
+ size is different from their xStep/yStep.
+Implemented stroke with pattern color spaces.
+Following a link to a page whose CropBox was different from the
+ MediaBox was resulting in an incorrect scroll position.
+Parse truncated date strings from the Info dictionary correctly.
+Change FoFiType1 to handle Type 1 fonts with two /Encoding keys.
+Extend the PSOutputDev shaded fill code to handle DeviceCMYK shaded
+ fills in level2sep and level3sep modes.
+Detect infinite loops in the Page tree.
+Optimized the ASCII85Encoder code.
+Tweaked the text extractor to do a better job of lining up rows of
+ text.
+Leave images compressed (or re-compress them with RLE) in PostScript
+ output when setting up images for forms and Type 3 fonts (or with
+ -preload).
+Extend FoFiType1 to handle Type 1 fonts with octal character codes in
+ their encodings.
+Use a custom string formatter to avoid problems with locale-based decimal
+ formatting (commas instead of periods) in PS output.
+Allow comments in PostScript-type functions.
+Change the TrueType font parser (FoFiTrueType) to delete glyf table
+ entries that are too short.
+
+3.03 (2011-aug-15)
+------------------
+Added the "fixed pitch" text extraction mode.
+Modified "pdftops -paper match" to handle PDF files with
+ different-sized pages, i.e., it will now select the matching paper
+ size on a page-by-page basis.
+Add ability for pdftoppm to write to stdout.
+Added the pdfdetach tool.
+Implemented 256-bit AES decryption.
+Commented out the t1lib section in the configure script -- t1lib has
+ some potential security holes, and hasn't been updated in years.
+Redesigned the font configuration xpdfrc commands: removed the
+ displayFontT1, displayFontTT, displayNamedCIDFontT1,
+ displayCIDFontT1, displayNamedCIDFontTT, displayCIDFontTT, psFont,
+ psNamedFont16, and psFont16 commands; added the fontFile,
+ fontFileCC, psResidentFont, psResidentFont16, and psResidentFontCC
+ commands.
+Switched from GPLv2 to dual v2/v3 licensing.
+Performance: cache tiling patterns.
+Implemented text fills with pattern color spaces.
+Rewrote the image and image mask rendering code to be more accurate
+ and faster.
+Fixed a bug in PDFCore that could sometimes cause crashes at high zoom
+ levels.
+Implemented embedded CMap streams.
+Added the 'setSelection' command.
+Added the 'rotateCCW' and 'rotateCW' commands.
+Added the 'psFontPassthrough' xpdfrc command.
+Added the 'launchCommand' xpdfrc command.
+Implemented alpha-type soft masks.
+Added "Form: AcroForm|XFA|none" to pdfinfo output.
+Added support for image masks filled with pattern color spaces.
+Text search wasn't finding all occurrences of a string on rotated pages
+ (i.e., pages where the primary rotation, as displayed, was not
+ horizontal).
+The text extractor now uses "ActualText" spans if they are present.
+Modified PSOutputDev so it always check for transparency; if Splash is
+ not available, it now prints a warning.
+Handle the blending color space for soft masks.
+Added the disableFreeTypeHinting xpdfrc option.
+Added the psAlwaysRasterize xpdfrc option.
+Added support for transfer functions in the rasterizer.
+Optimized the JPEG 2000 decoder to use less memory.
+Do fill adjustment (similar to stroke adjustment) on simple
+ rectangular fills.
+Added the antialiasPrinting xpdfrc setting.
+Added '%i', '%j', and '%k' (mouse pointer page and position) to the
+ available options for the 'run' command.
+Links with the underlined border style were being drawn with the lines
+ over, instead of under, the text.
+Add #include <aconf.h> to XPDFTree.cc (to avoid problems with certain
+ compilers).
+Change XRef::fetch() to avoid infinite loops caused by odd damage to
+ the xref table (e.g., where a stream object's "Length" value is an
+ indirect reference that points to another stream object).
+Minor fix in GString.cc to deal with an error in newer C++ compilers
+ (pow() can take int or double args).
+Handle embedded fonts which are declared with the wrong font type,
+ including 8-bit fonts declared as CID fonts and vice versa; this
+ was causing various problems, including crashes and invalid
+ PostScript output.
+In text extractor, don't drop horizontally overlapping words onto a
+ separate line.
+The numbers in the operand to the TJ operator should be multiplied by
+ the current horizontal scaling parameter.
+Fixed a bug in the Type 1C-to-Type 1 font converter -- need to escape
+ strings in the font dictionary.
+The zero-font-size check in PSOutputDev.cc was broken.
+Fixes for the form field appearance regeneration code: handle Unicode
+ strings (by downconverting to Latin1); check for "True" in addition
+ to "Yes" as a button value.
+Modify XPDFTree to limit the widget height to 32767 pixels -- this
+ avoids crashes with very large outlines.
+Modify FoFiType1 to handle PFB headers in Type 1 font files.
+Allow image mask decode arrays to be [1.0 0.0] in addition to [1 0].
+Tweak the form field appearance regeneration code.
+PSOutputDev now sets up resources for DR dictionaries in forms (in
+ case the form field appearances are regenerated).
+For TrueType fonts which are marked symbolic, the cmaps should be
+ ignored.
+Change the handling of numeric characters in Unicode text output --
+ they are now treated as left-to-right, which isn't strictly correct,
+ but does result in correct visual formatting.
+Modify FoFiTrueType to handle bogus loca table entries where the
+ offset is past the end of the glyf table.
+Fixed shading pattern fills to do clipping and background fills
+ correctly.
+Change the code that reads the page tree to be more flexible with
+ regard to improperly constructed trees.
+Changed the PostScript header comment from "Produced by xpdf/pdftops
+ x.yy" to "XpdfVersion: x.yy" to make it (mostly) DSC-compliant.
+Fixed PSOutputDev to handle page rotation correctly where the PDF page
+ is rotated 90 or 270 degrees and the page width (before rotation) is
+ greater than its height (and vice versa for 0 or 180 degrees).
+Unbalanced save/restores inside form XObjects (which can be happen in
+ damaged or incorrectly constructed PDF files) could cause crashes.
+The CCITTFax decoder could go into an infinite loop on certain types
+ of corrupt input.
+Added the "drawAnnotations" xpdfrc command.
+Added the "psUncompressPreloadedImages" xpdfrc command.
+Escape newlines and other non-printable characters in the custom color
+ DSC comments in PostScript output.
+Added the tilingPatternFill and *ShadedFill functions to
+ PreScanOutputDev to speed it up.
+Too many elements in an image's Decode array should not be a fatal
+ error.
+Fixed a buffer overflow security hole in StreamPredictor.
+Empty pages (zero-length content streams and null contents) were
+ causing crashes in continuous view mode.
+Handle line dash arrays that start with a zero element correctly.
+PreScanOutputDev was not correctly detecting all transparency - in
+ some places, it was looking only at the blending mode, and not at
+ the opacity setting.
+Force halftone screen size to be a power of 2. This allows optimizing
+ the halftoning code.
+Fixed a bug in the JBIG2 MMR decoder (and also in the CCITTFax
+ decoder) that was causing array references with negative indexes.
+Fixed a bug in the transparency code that was causing memory overruns.
+Fixed a 64-bit bug in the ASCII85 encoder.
+The focusToPageNum was crashing in full-screen mode - it should simply
+ do nothing.
+Added '%p' (current page number) to the available options for the 'run'
+ command.
+Tweak the behavior with PDF files that have pages of different widths
+ in continuous mode: scroll horizontally to avoid blank space on the
+ left side (when changing pages via entering a page number or
+ clicking on a link).
+A closepath followed by a lineto should create a new subpath for the
+ lineto.
+Fixed a buffer overflow in the CCITTFax decoder.
+Adobe Acrobat appears to ignore the flatness setting when rasterizing
+ curves, so Xpdf now does the same. (Oddly, Acrobat passes the
+ flatness setting through to PostScript output, which ends up making
+ the PS file look different from the PDF file - so Xpdf continues to
+ pass flatness through to PS files, too.)
+Pdfimages now ignores tiling pattern fills (for performance reasons).
+Fixed a bug in PDFCore that could sometimes cause crashes at high zoom
+ levels.
+Use std::sort (with functors) in place of qsort (if available) - this
+ can be significantly faster.
+Hitting "close" while Xpdf is in full-screen mode (with only one file
+ open) was crashing.
+Tweak the TrueType font encoding deciphering algorithm.
+Rewrote the CCITTFax decoder inner loop - this fixes a security hole.
+Fixed two security holes (missing bounds checks) in the DCT decoder.
+Do the correct zooming for "Fit" and "FitR" destinations.
+Implement the rotation value in the form field appearance regeneration
+ code.
+When PSOutputDev rasterizes a page (because it contains transparency),
+ the image is broken into stripes if it is above a size threshold.
+Don't clip the other page boxes to the MediaBox at the intermediate
+ (Pages) nodes; only do it at the leaf (Page) nodes - the other boxes
+ can be specified before the MediaBox is specified.
+Split several special cases off from Splash::pipeRun, for performance.
+Add a sanity check for excessively large font sizes (which caused
+ problems because Xpdf tried to allocate memory for a font cache).
+Fixed a bug in the GfxCIDFont constructor involving reading the
+ vertical metrics.
+Rewrote the code that handles annotation transforms - it was not
+ handling non-rectangular transforms correctly.
+Tweak the Type 3 bbox code to allow some slack on the left/bottom
+ edges, as well as the top/right edges.
+Fixed a bug that was causing problems rendering Type 3 fonts to 1-bit
+ monochrome output.
+Handle the case where AES padding is invalid.
+Changed XRef::getNumObjects to return the number of used entries,
+ instead of the same value as returned by XRef::getSize().
+Ignore bogus entries in the TrueType table directory instead of
+ immediately giving up on the font.
+Fixed a bug in the radial shading code that could cause divide-by-zero
+ errors.
+Tweaked the TrueType font fixup code to deal with an extra zero entry
+ at the end of the loca table.
+Increased font cache sizes to improve performance.
+Tweaked the TrueType notdef kludge to skip the notdef glyph only if it
+ was caused by a character for which a Unicode/MacRoman mapping could
+ not be found.
+Added another font size sanity check, this time for Type 3 glyphs.
+Added initial support for optional content (layers) - no GUI yet.
+For CID fonts that specify the 'Adobe-Identity' or 'Adobe-UCS'
+ collection, use an identity mapping for char code-to-Unicode
+ conversion.
+Updated the error function to take a category argument, and to use
+ GString::format instead of printf; added an error callback.
+The PDF spec claims that names are limited to 127 chars, but Distiller
+ 8 will produce longer names, and Acrobat 8 will accept longer names
+ -- Xpdf will now handle them, too.
+Change the Catalog code so it doesn't load the entire page tree at
+ startup (this only helps the command line tools - the viewer scans
+ all of the pages at startup).
+Clip opacity values to the range [0,1].
+Handle glyph names of the form 'unixxxx' (similar to Ann, Axx, etc.).
+Resolution of rasterized pages in PostScript output was not being
+ computed correctly (resulting in overly large images).
+Extend the mapUnknownCharNames config command to cover CID fonts.
+Zero-length segments in the middle of stroked paths were not being
+ handled correctly -- they should be completely ignored, except for
+ the special case of a zero-length path with round line caps.
+Various optimizations to the Splash rasterizer.
+Allow "Identity" and "Default" as the transfer function in soft masks.
+Tweaked the ToUnicode CMap parser to allow <00xx> char codes for 8-bit
+ fonts.
+TextPage::clear() was not clearing the lists of underlines and links.
+Changed the CCITTFax decoder to correctly handle the interaction
+ between the EndOfLine and EncodedByteAlign parameters.
+Fixed a bug where xpdf wouldn't go to a destination specified on the
+ command line, if continuous mode was enabled
+ (xpdf -cont file.pdf +foo).
+Fixed a bug in the FreeType interface code which was causing incorrect
+ positioning/sizing of characters.
+Tweaked the FreeType interface code - use 'light' hinting with Type 1
+ fonts (because it generally looks better).
+Tweak the Windows font searching code to handle "Black" fonts.
+Fixed a bug in the PostScript-type function parser -- real numbers
+ that start with a decimal point weren't being handled correctly.
+Changed the way filled-and-stroked text is handled -- use Splash to do
+ both the fill and the stroke (rather than using the font ending to
+ do the fill and Splash to do the stroke); also turn off stroke
+ adjustment when drawing stroked text.
+Ignore generation numbers on compressed objects (to match Adobe's
+ behavior).
+Changed the PostScript PageSize policy from 3 to 6 (choose next
+ largest paper size, don't rescale).
+Check that the mask values for color key masked images are in range --
+ both Ghostscript and Distiller choke on the PostScript if invalid
+ mask colors are specified.
+Fixed a bug in generic region decoding in the JBIG2 decoder.
+Fixed the lexer to handle large real numbers correctly.
+Pdftops wasn't correctly handling tiling patterns that use both fill
+ and stroke operators.
+Report an error if the Size array in a sampled function includes any
+ zeros.
+The PostScriptFunction.codeString field wasn't being initialized
+ correctly.
+Invalid object streams were not being handled correctly.
+Check for loops in xref tables.
+Handle the case where a content stream ends after the 'ID' operator
+ which starts inline image data.
+Check for invalid object streams (i.e., an object stream can't be
+ inside another object stream.
+Add a recursion limit to the object parser - this avoids stack
+ overflows with various sorts of damaged PDF files.
+Handle various parameter settings in the extended graphics state
+ dictionary.
+An invalid document outline (missing fields) could cause a crash.
+Added an overprint preview mode (for CMYK output only).
+Correctly handle FitH/BH/V/BV link destinations that contain null
+ values for positioning parameters.
+If the PDF file doesn't define a BaseURI, set one based on the
+ location of the PDF file -- this allows relative links to be handled
+ correctly.
+Use ResusableStreamDecode when generating Level 3 PostScript for an
+ explicitly masked image.
+Tweak the Type 1 font parser to handle encodings with multiple
+ characters on one line.
+Invert subtractive color components before passing them to the
+ blending function.
+Fix an invalid array access in SplashOutputDev::setSoftMask() in CMYK
+ mode.
+A PS interpreter may attempt to read past the end of a preloaded
+ image, so we need to check for that.
+Fixed several overflow/uninit bugs in JBIG2Stream.
+Fix the CCITTFax decoder to correctly find end-of-file (RTC/EOFB)
+ markers when the EndOfLine parameter is false.
+Don't limit the startxref offset to 10 digits - some PDF generators
+ use extra leading zeros.
+Use the "DV" (default value) field in text annotations if the "V"
+ (value) field is missing.
+Increase the number of digits printed for floating point numbers in
+ PostScript output -- it was running into numerical accuracy problems
+ on large pages.
+Fixed integer overflow bugs in Catalog.cc and GfxFont.cc.
+Zero-length tables in TrueType fonts should be treated as missing.
+ToUnicode CMaps map char codes to Unicode; .cidToUnicode files map
+ CIDs to Unicode -- ToUnicodeCMaps were being handled incorrectly.
+Added the "psRasterResolution" and "psRasterMono" xpdfrc commands.
+Added code to FoFiTrueType to check for entries in the table directory
+ with bogus tags -- this handles the case where the number of tables
+ given in the header is too high.
+Negative shift values in the PostScript bitshift operator were being
+ handled incorrectly.
+GfxICCBasedColorSpace was not correctly bounds-checking the number of
+ components.
+Check SampledFunction input values for NaNs.
+Fix a divide-by-zero when the page width or height is zero.
+Fix a bug positioning text in PostScript output - if the last char in
+ a string has an incorrect width in the PDF font object, that messes
+ up the total string width, so we have to position individual chars.
+In PostScript output, if CID font substitution fails, drop all text in
+ that font.
+Handle PDF files that set the stream/string decryption filters to
+ Identity (i.e., no encryption).
+Avoid passing a zero font size to FreeType.
+Tweak raw mode in the text extractor to handle words on the same line
+ drawn in the wrong order.
+Pdftops was generating a singular transform matrix for annotations
+ whose bounding boxes had zero width or height.
+Handle embedded OpenType CFF fonts with CIDToGIDMaps.
+Remove the old kludge from PSOutputDev that was converting char 32
+ from ".notdef" to "space".
+Allow CCITTFax images to be more than 32k pixels wide.
+Modified the CMap parser to handle usecmap with Identity-H/V.
+Added some parameter checking in the JPX decoder.
+Added checks for infinite loops in PDF objects - for color spaces,
+ functions, optional content, and outline items.
+Add support for mouse button bindings up to button 32 (old limit was
+ 7).
+Fixed a bug in the decryption code for revision 3 with keyLength < 16
+ -- the owner password was not being handled correctly. [Thanks to
+ Matthias Franz.]
+Optimize SampledFunction: pull index computation code out of the
+ transform function; cache the last transform.
+Tweaked the font naming algorithm in PSOutputDev.
+Treat mirrored (as opposed to rotated) text the same as upright text
+ in pdftotext.
+Fixed buffer overflows in Splash and SplashBitmap.
+Check for bogus character codes (e.g., <ffffffff>) in ToUnicode CMaps.
+The radial shading code (in both Gfx.cc and PSOutputDev.cc) was not
+ computing the s bounds properly.
+Drop empty subpaths in clip and fill (but not stroke) operations -
+ this can significantly speed up clip performance in the weird case
+ where a PDF file does "<x> <y> <w> <h> re <x> <y> m h W n".
+Added code to FoFiTrueType to check for an invalid loca format field
+ in the head table.
+The axial shading code (in Gfx.cc, but not PSOutputDev.cc) was not
+ computing the incremental polygon vertices correctly.
+Set the character width in TextOutputDev to something sensible for
+ vertical fonts.
+Added basic support to the text extractor for vertical writing mode.
+The non-interactive tools (pdftotext, pdftops) now free Page objects
+ after using them, avoiding performance problems with pages that have
+ huge resource dictionaries.
+Check for line dash arrays like [0], and draw nothing at all (to match
+ Acrobat's behavior).
+Add a sanity check for the ascent/descent values in FontDescriptors.
+Single-point paths with a line dash were causing a crash.
+Correctly handle Level 3 PostScript output with masked images inside
+ patterns.
+Tweaked the xref repair code so that it runs if the catalog is messed
+ up (in addition to running if the xref table is damaged).
+If Indexed color space tables (streams or strings) are too small,
+ reduce the max index instead of throwing away the color space.
+Change the CMap parser to allocate memory only when it sees a mapping,
+ not when it sees a 'codespacerange' declaration -- this avoids
+ allocating huge amounts of memory for CMaps with large, unused
+ codespaceranges.
+In monochrome mode, treat lines with width <= 1 as hairlines (to match
+ Acrobat's behavior).
+Cache the last transform for PostScript-type functions.
+Added the "-rawdates" option to pdfinfo.
+Optimized ImageStream::getLine().
+Fixed the Hue, Saturation, Color, and Luminosity blend functions to
+ match Adobe's spec.
+Fixed the non-isolated group compositing computation.
+Skip extraneous unused data at the end of JBIG2 segments.
+Change the algorithm that stroke/fill adjustment uses so that the
+ edges of adjacent strokes/fills line up.
+Do stroke adjustment on end caps when cap style is butt or projecting.
+Fixed a security hole: Gfx.parser was not being initialized to NULL.
+Fixed a security hole: integer bounds check in the Type 1 encoding
+ parser in FoFiType1.cc.
+If an embedded font object is invalid or non-existent, do font
+ substitution (same as if there were no embedded font).
+TextOutputDev was reusing an old font in the case where the font
+ changed but the font size and character positioning stayed the same.
+When starting a transparency group, copy the fill/stroke colors from
+ the graphics state.
+Tweaked the fixed-point code.
+When a TrueType font is declared resident (with a psFont command),
+ don't munge the encoding.
+Look for URIs starting with "www." and treat them as absolute "http:"
+ URIs, not as relative URIs (to match Adobe's behavior).
+Added code to FoFiTrueType to check for a zero-entry cmap table.
+Tweaked the font substitution code to do a better job of scaling the
+ substituted font.
+Require at least two splits in the axial shading color bisection.
+Optimized JBIG2Stream::readGenericBitmap().
+JPXStream wasn't correctly handling row padding for images with fewer
+ than 8 bits per component.
+Optimized the ToUnicode CMap parser.
+Added a "whole words only" option to text searches.
+Check for valid component parameters in the DCT decoder.
+Implement embedding of external 16-bit fonts (without subsetting) in
+ PostScript output.
+Added the minLineWidth xpdfrc command.
+Added warning messages for font substitutions.
diff --git a/obsolete/support/xpdf/README b/obsolete/support/xpdf/README
new file mode 100644
index 0000000000..ce45af5f8a
--- /dev/null
+++ b/obsolete/support/xpdf/README
@@ -0,0 +1,2 @@
+Xpdf downloads have moved to:
+http://www.xpdfreader.com/download.html