[bknr-cvs] r2045 - in trunk: bknr bknr/src bknr/src/data bknr/src/images bknr/src/indices bknr/src/rss bknr/src/skip-list bknr/src/sysclasses bknr/src/utils bknr/src/web bknr/src/xhtmlgen bknr/src/xml-impex modules modules/class-browser modules/mail modules/text modules/track modules/url projects projects/bknr-website/templates projects/bos projects/bos/m2 projects/bos/payment-website/images projects/bos/payment-website/images/statistics projects/bos/payment-website/infosystem projects/bos/payment-website/infosystem/bilder projects/bos/payment-website/infosystem/de projects/bos/payment-website/infosystem/en projects/bos/payment-website/static projects/bos/payment-website/templates projects/bos/payment-website/templates/de projects/bos/statistics projects/bos/web projects/bos/worldpay-test projects/eboy/eboy-static projects/eboy/eboy-templates projects/eboy/src projects/hello-web projects/hello-web/src projects/hello-web/website/templates projects/lisp-ecoop/src projects/lisp-ecoop/website/static projects/mah-jongg projects/mah-jongg/website projects/quickhoney projects/quickhoney/src projects/quickhoney/website/static projects/quickhoney/website/templates projects/raw-data/btscanner projects/raw-data/mcp projects/raw-data/playwnd projects/raw-data/streamcapture thirdparty thirdparty/cffi thirdparty/cffi/doc thirdparty/cffi/scripts thirdparty/cffi/tests thirdparty/cl-gd thirdparty/cl-mime thirdparty/cxml/xml thirdparty/net.post-office thirdparty/portableaserve/aserve thirdparty/uffi thirdparty/uffi/benchmarks thirdparty/uffi/doc thirdparty/uffi/examples thirdparty/uffi/src thirdparty/uffi/tests

bknr at bknr.net bknr at bknr.net
Tue Oct 24 21:07:52 UTC 2006


Author: hhubner
Date: 2006-10-24 17:07:42 -0400 (Tue, 24 Oct 2006)
New Revision: 2045

Added:
   trunk/bknr/src/rss/test.lisp
   trunk/bknr/src/utils/date-calc.lisp
   trunk/bknr/src/xml-impex/xml-update.lisp
   trunk/projects/bos/Back Office Interface.doc
   trunk/projects/bos/payment-website/images/certificate_en.jpg
   trunk/projects/bos/payment-website/images/projekt_pic_en.jpg
   trunk/projects/bos/payment-website/images/ring_detail_en.jpg
   trunk/projects/bos/payment-website/images/ring_en.jpg
   trunk/projects/bos/payment-website/images/statistics/
   trunk/projects/bos/payment-website/infosystem/dk/
   trunk/projects/bos/payment-website/static/bos_en.js
   trunk/projects/bos/payment-website/static/profil_en.js
   trunk/projects/bos/payment-website/templates/baustelle.xml
   trunk/projects/bos/payment-website/templates/de/archive.xml
   trunk/projects/bos/payment-website/templates/de/bestellung.xml
   trunk/projects/bos/payment-website/templates/de/bos.xml
   trunk/projects/bos/payment-website/templates/de/buy-sqm.xml
   trunk/projects/bos/payment-website/templates/de/certificat.xml
   trunk/projects/bos/payment-website/templates/de/contact.xml
   trunk/projects/bos/payment-website/templates/de/disclaimer.xml
   trunk/projects/bos/payment-website/templates/de/generate-cert.xml
   trunk/projects/bos/payment-website/templates/de/headline2.xml
   trunk/projects/bos/payment-website/templates/de/headline3.xml
   trunk/projects/bos/payment-website/templates/de/idea.xml
   trunk/projects/bos/payment-website/templates/de/idea_subtitle1.xml
   trunk/projects/bos/payment-website/templates/de/idea_subtitle2.xml
   trunk/projects/bos/payment-website/templates/de/impressum.xml
   trunk/projects/bos/payment-website/templates/de/index.xml
   trunk/projects/bos/payment-website/templates/de/info-request.xml
   trunk/projects/bos/payment-website/templates/de/infosys-help-poidetail.xml
   trunk/projects/bos/payment-website/templates/de/infosys-help-poifoto.xml
   trunk/projects/bos/payment-website/templates/de/infosys-help-qmdetail.xml
   trunk/projects/bos/payment-website/templates/de/infosys-help-uebersicht.xml
   trunk/projects/bos/payment-website/templates/de/infosystem.xml
   trunk/projects/bos/payment-website/templates/de/mail-transfer.xml
   trunk/projects/bos/payment-website/templates/de/news-extern.xml
   trunk/projects/bos/payment-website/templates/de/news.xml
   trunk/projects/bos/payment-website/templates/de/print_profil_setup.xml
   trunk/projects/bos/payment-website/templates/de/print_ueberweisung.xml
   trunk/projects/bos/payment-website/templates/de/print_versand_quittung.xml
   trunk/projects/bos/payment-website/templates/de/privacy.xml
   trunk/projects/bos/payment-website/templates/de/profil.xml
   trunk/projects/bos/payment-website/templates/de/profil_setup.xml
   trunk/projects/bos/payment-website/templates/de/quittung.xml
   trunk/projects/bos/payment-website/templates/de/ring-detail.xml
   trunk/projects/bos/payment-website/templates/de/save-initial-profile.xml
   trunk/projects/bos/payment-website/templates/de/sponsor_canceled.xml
   trunk/projects/bos/payment-website/templates/de/toplevel.xml
   trunk/projects/bos/payment-website/templates/de/toplevel_extra.xml
   trunk/projects/bos/payment-website/templates/de/toplevel_main.xml
   trunk/projects/bos/payment-website/templates/de/toplevel_news.xml
   trunk/projects/bos/payment-website/templates/de/ueberweisung.xml
   trunk/projects/bos/payment-website/templates/de/versand_geschenk.xml
   trunk/projects/bos/payment-website/templates/de/versand_info.xml
   trunk/projects/bos/payment-website/templates/de/versand_quittung.xml
   trunk/projects/bos/payment-website/templates/de/verschenken.xml
   trunk/projects/bos/payment-website/templates/dk/
   trunk/projects/bos/payment-website/templates/en/
   trunk/projects/bos/payment-website/templates/login.xml
   trunk/projects/bos/payment-website/templates/user-error.xml
   trunk/projects/bos/statistics/
   trunk/projects/bos/tools/
   trunk/projects/bos/worldpay-test/contract-image-handler.lisp
   trunk/projects/bos/worldpay-test/contract-rss.lisp
   trunk/projects/bos/worldpay-test/news-rss.lisp
   trunk/projects/bos/worldpay-test/reports-xml-handler.lisp
   trunk/projects/bos/worldpay-test/rss.lisp
   trunk/projects/hello-web/src/news.lisp
   trunk/projects/hello-web/website/templates/index.xml
   trunk/projects/hello-web/website/templates/user-error.xml
   trunk/projects/lisp-ecoop/
   trunk/projects/mah-jongg/
   trunk/projects/quickhoney/website/templates/frontpage.xml
   trunk/projects/quickhoney/website/templates/image-detail.xml
   trunk/projects/quickhoney/website/templates/index.xml
   trunk/projects/quickhoney/website/templates/user-error.xml
   trunk/thirdparty/cffi/
   trunk/thirdparty/cl-base64/
   trunk/thirdparty/cl-mime/README
   trunk/thirdparty/cl-mime/cl-mime.asd
   trunk/thirdparty/cl-mime/encoding.lisp
   trunk/thirdparty/cl-mime/package.lisp
   trunk/thirdparty/cl-qprint/
   trunk/thirdparty/iconv/
   trunk/thirdparty/uffi/doc/catalog-darwin.xml
   trunk/thirdparty/uffi/doc/catalog-mandrake.xml
   trunk/thirdparty/uffi/doc/catalog-suse90.xml
   trunk/thirdparty/uffi/doc/catalog-suse91.xml
   trunk/thirdparty/uffi/doc/catalog-ubuntu.xml
   trunk/thirdparty/uffi/tests/objects.lisp
Removed:
   trunk/bknr/src/bknr-id3.asd
   trunk/bknr/src/id3/
   trunk/projects/bos/payment-website/templates/baustelle.bknr
   trunk/projects/bos/payment-website/templates/de/archive.bknr
   trunk/projects/bos/payment-website/templates/de/bestellung.bknr
   trunk/projects/bos/payment-website/templates/de/bos.bknr
   trunk/projects/bos/payment-website/templates/de/buy-sqm.bknr
   trunk/projects/bos/payment-website/templates/de/certificat.bknr
   trunk/projects/bos/payment-website/templates/de/contact.bknr
   trunk/projects/bos/payment-website/templates/de/disclaimer.bknr
   trunk/projects/bos/payment-website/templates/de/generate-cert.bknr
   trunk/projects/bos/payment-website/templates/de/headline2.bknr
   trunk/projects/bos/payment-website/templates/de/headline3.bknr
   trunk/projects/bos/payment-website/templates/de/idea.bknr
   trunk/projects/bos/payment-website/templates/de/idea_subtitle1.bknr
   trunk/projects/bos/payment-website/templates/de/idea_subtitle2.bknr
   trunk/projects/bos/payment-website/templates/de/impressum.bknr
   trunk/projects/bos/payment-website/templates/de/index.bknr
   trunk/projects/bos/payment-website/templates/de/info-request.bknr
   trunk/projects/bos/payment-website/templates/de/infosys-help-poidetail.bknr
   trunk/projects/bos/payment-website/templates/de/infosys-help-poifoto.bknr
   trunk/projects/bos/payment-website/templates/de/infosys-help-qmdetail.bknr
   trunk/projects/bos/payment-website/templates/de/infosys-help-uebersicht.bknr
   trunk/projects/bos/payment-website/templates/de/infosystem.bknr
   trunk/projects/bos/payment-website/templates/de/mail-transfer.bknr
   trunk/projects/bos/payment-website/templates/de/news.bknr
   trunk/projects/bos/payment-website/templates/de/print_profil_setup.bknr
   trunk/projects/bos/payment-website/templates/de/print_ueberweisung.bknr
   trunk/projects/bos/payment-website/templates/de/print_versand_quittung.bknr
   trunk/projects/bos/payment-website/templates/de/privacy.bknr
   trunk/projects/bos/payment-website/templates/de/profil.bknr
   trunk/projects/bos/payment-website/templates/de/profil_setup.bknr
   trunk/projects/bos/payment-website/templates/de/quittung.bknr
   trunk/projects/bos/payment-website/templates/de/ring-detail.bknr
   trunk/projects/bos/payment-website/templates/de/save-initial-profile.bknr
   trunk/projects/bos/payment-website/templates/de/sponsor_canceled.bknr
   trunk/projects/bos/payment-website/templates/de/toplevel.bknr
   trunk/projects/bos/payment-website/templates/de/toplevel_extra.bknr
   trunk/projects/bos/payment-website/templates/de/toplevel_main.bknr
   trunk/projects/bos/payment-website/templates/de/ueberweisung.bknr
   trunk/projects/bos/payment-website/templates/de/versand_geschenk.bknr
   trunk/projects/bos/payment-website/templates/de/versand_info.bknr
   trunk/projects/bos/payment-website/templates/de/versand_quittung.bknr
   trunk/projects/bos/payment-website/templates/de/verschenken.bknr
   trunk/projects/bos/payment-website/templates/user-error.bknr
   trunk/projects/hello-web/website/templates/index.bknr
   trunk/projects/hello-web/website/templates/user-error.bknr
   trunk/projects/lisp-ecoop05/
   trunk/projects/quickhoney/src/mods.lisp
   trunk/projects/quickhoney/src/screenrc
   trunk/projects/quickhoney/src/start-quickhoney-screen.sh
   trunk/projects/quickhoney/website/templates/frontpage.bknr
   trunk/projects/quickhoney/website/templates/image-detail.bknr
   trunk/projects/quickhoney/website/templates/index.bknr
   trunk/projects/quickhoney/website/templates/user-error.bknr
   trunk/projects/raw-data/btscanner/btscanner.ncb
   trunk/projects/raw-data/playwnd/playwnd.ncb
   trunk/projects/raw-data/streamcapture/streamcapture.ncb
   trunk/thirdparty/cl-mime/fundamentals.lisp
   trunk/thirdparty/cl-mime/mime.asd
   trunk/thirdparty/cl-typesetting/
   trunk/thirdparty/clim-examples-moeller/
   trunk/thirdparty/mcclim/
   trunk/thirdparty/uffi/doc/html.tar.gz
   trunk/thirdparty/weird-irc/
Modified:
   trunk/bknr/init.lisp
   trunk/bknr/src/bknr-data-impex.asd
   trunk/bknr/src/bknr-utils.asd
   trunk/bknr/src/bknr.asd
   trunk/bknr/src/data/blob.lisp
   trunk/bknr/src/data/object.lisp
   trunk/bknr/src/data/package.lisp
   trunk/bknr/src/data/txn.lisp
   trunk/bknr/src/data/xml-object.lisp
   trunk/bknr/src/images/image-handlers.lisp
   trunk/bknr/src/images/image-tags.lisp
   trunk/bknr/src/images/imageproc-handler.lisp
   trunk/bknr/src/indices/indexed-class.lisp
   trunk/bknr/src/packages.lisp
   trunk/bknr/src/rss/rss.lisp
   trunk/bknr/src/skip-list/skip-list-tests.lisp
   trunk/bknr/src/skip-list/skip-list.lisp
   trunk/bknr/src/sysclasses/cron.lisp
   trunk/bknr/src/sysclasses/user.lisp
   trunk/bknr/src/utils/package.lisp
   trunk/bknr/src/utils/utils.lisp
   trunk/bknr/src/web/authorizer.lisp
   trunk/bknr/src/web/event-log.lisp
   trunk/bknr/src/web/handlers.lisp
   trunk/bknr/src/web/menu.lisp
   trunk/bknr/src/web/rss-handlers.lisp
   trunk/bknr/src/web/site.lisp
   trunk/bknr/src/web/tags.lisp
   trunk/bknr/src/web/templates.lisp
   trunk/bknr/src/web/user-handlers.lisp
   trunk/bknr/src/web/web-macros.lisp
   trunk/bknr/src/web/web-utils.lisp
   trunk/bknr/src/web/web-visitor.lisp
   trunk/bknr/src/xhtmlgen/xhtmlgen.lisp
   trunk/bknr/src/xml-impex/package.lisp
   trunk/bknr/src/xml-impex/tutorial.lisp
   trunk/bknr/src/xml-impex/xml-class.lisp
   trunk/bknr/src/xml-impex/xml-export.lisp
   trunk/bknr/src/xml-impex/xml-import.lisp
   trunk/modules/bknr-modules.asd
   trunk/modules/class-browser/class-browser.lisp
   trunk/modules/mail/mail.lisp
   trunk/modules/mail/package.lisp
   trunk/modules/packages.lisp
   trunk/modules/text/blog-handlers.lisp
   trunk/modules/track/media.lisp
   trunk/modules/track/track.lisp
   trunk/modules/url/url-handlers.lisp
   trunk/projects/bknr-website/templates/generate-html.xsl
   trunk/projects/bos/
   trunk/projects/bos/build.lisp
   trunk/projects/bos/build.sh
   trunk/projects/bos/m2/bos.m2.asd
   trunk/projects/bos/m2/cert-daemon.lisp
   trunk/projects/bos/m2/config.lisp
   trunk/projects/bos/m2/m2.lisp
   trunk/projects/bos/m2/mail-generator.lisp
   trunk/projects/bos/m2/make-certificate.lisp
   trunk/projects/bos/m2/news.lisp
   trunk/projects/bos/m2/packages.lisp
   trunk/projects/bos/make-base-lisp.lisp
   trunk/projects/bos/payment-website/infosystem/bilder/uebersichtskarte_klein.gif
   trunk/projects/bos/payment-website/infosystem/de/satellitenkarte.htm
   trunk/projects/bos/payment-website/infosystem/en/satellitenkarte.htm
   trunk/projects/bos/payment-website/infosystem/javascript.js
   trunk/projects/bos/payment-website/static/bos.js
   trunk/projects/bos/payment-website/static/cms.js
   trunk/projects/bos/payment-website/static/content_style.css
   trunk/projects/bos/payment-website/static/toplevel_style.css
   trunk/projects/bos/screenrc-sample
   trunk/projects/bos/statistics/Makefile
   trunk/projects/bos/statistics/mail-stats.sh
   trunk/projects/bos/web/web.lisp
   trunk/projects/bos/worldpay-test/allocation-area-handlers.lisp
   trunk/projects/bos/worldpay-test/boi-handlers.lisp
   trunk/projects/bos/worldpay-test/cms-links.lisp
   trunk/projects/bos/worldpay-test/config.lisp
   trunk/projects/bos/worldpay-test/news-handlers.lisp
   trunk/projects/bos/worldpay-test/packages.lisp
   trunk/projects/bos/worldpay-test/poi-handlers.lisp
   trunk/projects/bos/worldpay-test/sponsor-handlers.lisp
   trunk/projects/bos/worldpay-test/tags.lisp
   trunk/projects/bos/worldpay-test/web-utils.lisp
   trunk/projects/bos/worldpay-test/worldpay-test.asd
   trunk/projects/bos/worldpay-test/worldpay-test.lisp
   trunk/projects/eboy/eboy-static/catalog.css
   trunk/projects/eboy/eboy-static/catalog.html
   trunk/projects/eboy/eboy-static/catalog.js
   trunk/projects/eboy/eboy-templates/toplevel.bknr
   trunk/projects/eboy/src/breadcrumb.lisp
   trunk/projects/eboy/src/dynasite-tags.lisp
   trunk/projects/eboy/src/eboy-web.lisp
   trunk/projects/eboy/src/item-handlers.lisp
   trunk/projects/eboy/src/item.lisp
   trunk/projects/eboy/src/jerks.lisp
   trunk/projects/eboy/src/layout.lisp
   trunk/projects/eboy/src/load.lisp
   trunk/projects/eboy/src/navi.lisp
   trunk/projects/eboy/src/packages.lisp
   trunk/projects/hello-web/
   trunk/projects/hello-web/src/config.lisp
   trunk/projects/hello-web/src/handlers.lisp
   trunk/projects/hello-web/src/hello-web.asd
   trunk/projects/hello-web/src/init.lisp
   trunk/projects/hello-web/src/load.lisp
   trunk/projects/hello-web/src/packages.lisp
   trunk/projects/hello-web/src/webserver.lisp
   trunk/projects/lisp-ecoop/src/
   trunk/projects/lisp-ecoop/src/alu-logo.jpg
   trunk/projects/lisp-ecoop/src/bknr-logo.png
   trunk/projects/lisp-ecoop/website/static/alu-logo.jpg
   trunk/projects/mah-jongg/website/bamboo.jpg
   trunk/projects/mah-jongg/website/east.jpg
   trunk/projects/mah-jongg/website/north.jpg
   trunk/projects/mah-jongg/website/south.jpg
   trunk/projects/mah-jongg/website/west.jpg
   trunk/projects/quickhoney/
   trunk/projects/quickhoney/src/handlers.lisp
   trunk/projects/quickhoney/src/image.lisp
   trunk/projects/quickhoney/src/load.lisp
   trunk/projects/quickhoney/src/packages.lisp
   trunk/projects/quickhoney/src/webserver.lisp
   trunk/projects/quickhoney/website/static/javascript.js
   trunk/projects/raw-data/mcp/hameg-server.pl
   trunk/thirdparty/cffi/Makefile
   trunk/thirdparty/cffi/doc/Makefile
   trunk/thirdparty/cffi/doc/allegro-internals.txt
   trunk/thirdparty/cffi/doc/gendocs.sh
   trunk/thirdparty/cffi/doc/mem-vector.txt
   trunk/thirdparty/cffi/doc/shareable-vectors.txt
   trunk/thirdparty/cffi/scripts/release.sh
   trunk/thirdparty/cffi/tests/Makefile
   trunk/thirdparty/cffi/tests/libtest.c
   trunk/thirdparty/cl-gd/Makefile
   trunk/thirdparty/cl-mime/classes.lisp
   trunk/thirdparty/cl-mime/headers.lisp
   trunk/thirdparty/cl-mime/parse-mime.lisp
   trunk/thirdparty/cl-mime/print-mime.lisp
   trunk/thirdparty/cl-mime/utilities.lisp
   trunk/thirdparty/cxml/xml/unparse.lisp
   trunk/thirdparty/net.post-office/packages.lisp
   trunk/thirdparty/portableaserve/aserve/main.cl
   trunk/thirdparty/portableaserve/aserve/publish.cl
   trunk/thirdparty/uffi/ChangeLog
   trunk/thirdparty/uffi/Makefile
   trunk/thirdparty/uffi/NEWS
   trunk/thirdparty/uffi/README
   trunk/thirdparty/uffi/TODO
   trunk/thirdparty/uffi/benchmarks/allocation.lisp
   trunk/thirdparty/uffi/doc/Makefile
   trunk/thirdparty/uffi/doc/bookinfo.xml
   trunk/thirdparty/uffi/doc/catalog-suse.xml
   trunk/thirdparty/uffi/doc/ref_aggregate.xml
   trunk/thirdparty/uffi/doc/ref_declare.xml
   trunk/thirdparty/uffi/doc/ref_func_libr.xml
   trunk/thirdparty/uffi/doc/ref_object.xml
   trunk/thirdparty/uffi/doc/ref_string.xml
   trunk/thirdparty/uffi/doc/uffi.pdf
   trunk/thirdparty/uffi/examples/Makefile
   trunk/thirdparty/uffi/examples/Makefile.msvc
   trunk/thirdparty/uffi/examples/acl-compat-tester.lisp
   trunk/thirdparty/uffi/examples/arrays.lisp
   trunk/thirdparty/uffi/examples/atoifl.lisp
   trunk/thirdparty/uffi/examples/c-test-fns.c
   trunk/thirdparty/uffi/examples/c-test-fns.lisp
   trunk/thirdparty/uffi/examples/compress.lisp
   trunk/thirdparty/uffi/examples/file-socket.lisp
   trunk/thirdparty/uffi/examples/getenv.lisp
   trunk/thirdparty/uffi/examples/gethostname.lisp
   trunk/thirdparty/uffi/examples/getshells.lisp
   trunk/thirdparty/uffi/examples/gettime.lisp
   trunk/thirdparty/uffi/examples/run-examples.lisp
   trunk/thirdparty/uffi/examples/strtol.lisp
   trunk/thirdparty/uffi/examples/test-examples.lisp
   trunk/thirdparty/uffi/examples/union.lisp
   trunk/thirdparty/uffi/src/aggregates.lisp
   trunk/thirdparty/uffi/src/functions.lisp
   trunk/thirdparty/uffi/src/libraries.lisp
   trunk/thirdparty/uffi/src/objects.lisp
   trunk/thirdparty/uffi/src/os.lisp
   trunk/thirdparty/uffi/src/package.lisp
   trunk/thirdparty/uffi/src/primitives.lisp
   trunk/thirdparty/uffi/src/readmacros-mcl.lisp
   trunk/thirdparty/uffi/src/strings.lisp
   trunk/thirdparty/uffi/tests/Makefile
   trunk/thirdparty/uffi/tests/Makefile.msvc
   trunk/thirdparty/uffi/tests/arrays.lisp
   trunk/thirdparty/uffi/tests/atoifl.lisp
   trunk/thirdparty/uffi/tests/casts.lisp
   trunk/thirdparty/uffi/tests/compress.lisp
   trunk/thirdparty/uffi/tests/foreign-loader.lisp
   trunk/thirdparty/uffi/tests/foreign-var.lisp
   trunk/thirdparty/uffi/tests/getenv.lisp
   trunk/thirdparty/uffi/tests/gethostname.lisp
   trunk/thirdparty/uffi/tests/make.sh
   trunk/thirdparty/uffi/tests/strtol.lisp
   trunk/thirdparty/uffi/tests/structs.lisp
   trunk/thirdparty/uffi/tests/time.lisp
   trunk/thirdparty/uffi/tests/uffi-c-test-lib.lisp
   trunk/thirdparty/uffi/tests/uffi-c-test.c
   trunk/thirdparty/uffi/tests/union.lisp
   trunk/thirdparty/uffi/uffi-tests.asd
   trunk/thirdparty/uffi/uffi.asd
Log:
merge back from branches/xml-class-rework to trunk


Modified: trunk/bknr/init.lisp
===================================================================
--- trunk/bknr/init.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/init.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -36,14 +36,6 @@
                           :type    :wild
                           :version :wild)
            (user-homedir-pathname))))
-       (logical-pathname-translations "modules")
-      `(("**;*.*.*"
-         ,(merge-pathnames
-           (make-pathname :directory '(:relative "bknr-svn" "modules" :wild-inferiors)
-                          :name    :wild
-                          :type    :wild
-                          :version :wild)
-           (user-homedir-pathname))))
        (logical-pathname-translations "eboy")
       `(("**;*.*.*"
          ,(merge-pathnames
@@ -91,8 +83,7 @@
 		     asdf:*central-registry*
 		     :test #'equal))
 	(append (directory #p"bknr-thirdparty:**;*.asd")
-		(directory #p"bknr:**;*.asd")
-		(directory #p"modules:**;*.asd"))))
+		(directory #p"bknr:**;*.asd"))))
 
 (defun clean-registry (&optional (dirs asdf:*central-registry*))
   (let ((files (mapcan #'directory

Modified: trunk/bknr/src/bknr-data-impex.asd
===================================================================
--- trunk/bknr/src/bknr-data-impex.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/bknr-data-impex.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,3 +1,4 @@
+
 (in-package :cl-user)
 
 (defpackage :bknr-data-impex.system

Deleted: trunk/bknr/src/bknr-id3.asd
===================================================================
--- trunk/bknr/src/bknr-id3.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/bknr-id3.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,22 +0,0 @@
-(in-package :cl-user)
-
-(defpackage :bknr-id3.system
-  (:use :cl :asdf)
-  (:export :*bknr-id3-directory*))
-
-(in-package :bknr-id3.system)
-
-(defvar *bknr-id3-directory*
-  (make-pathname :name nil :type nil :version nil
-		 :defaults (parse-namestring *load-truename*)))
-
-(defsystem :bknr-id3
-    :name "bknr-id3 - lisp bindings for libid3tag"
-    :author "Manuel Odendahl <manuel at bl0rg.net>"
-    :version "0"
-    :licence "BSD"
-    :description "LISP UFFI bindings for libid3tag"
-    :depends-on (:bknr-utils :uffi)
-
-    :components ((:module "id3" :components ((:file "package")
-					     (:file "id3" :depends-on ("package"))))))

Modified: trunk/bknr/src/bknr-utils.asd
===================================================================
--- trunk/bknr/src/bknr-utils.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/bknr-utils.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -18,10 +18,7 @@
 
     :depends-on (:cl-interpol :cl-ppcre
 			      :cxml
-			      #-sbcl
 			      :md5
-			      #+sbcl
-			      :sb-md5
 			      #+(not allegro)
 			      :acl-compat)
 
@@ -40,5 +37,6 @@
 					       (:file "capability" :depends-on ("utils"))
 					       (:file "make-fdf-file" :depends-on ("utils"))
 					       (:file "xml" :depends-on ("utils"))
+					       (:file "date-calc")
 					       (:file "acl-mp-compat" :depends-on ("package"))))))
 

Modified: trunk/bknr/src/bknr.asd
===================================================================
--- trunk/bknr/src/bknr.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/bknr.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,4 +1,3 @@
-;;; -*- MODE: LISP -*-
 (in-package :cl-user)
 
 (defpackage :bknr.system
@@ -25,10 +24,7 @@
 		 :cl-gd
 		 :aserve
 		 ;:net.post-office
-		 #-sbcl
 		 :md5
-		 #+sbcl
-		 :sb-md5
 		 :cxml
 		 :unit-test
 		 :bknr-utils
@@ -38,9 +34,10 @@
 		 :klammerscript
 		 :bknr-datastore
 		 :bknr-data-impex
+		 :kmrcl
+		 :iconv
 		 #+(not allegro)
 		 :acl-compat)
-		 ;:bknr-id3)
 
     :components ((:file "packages")
 		 
@@ -118,7 +115,7 @@
 								 "templates"
 								 "site"
 								 "web-utils")))
-			  :depends-on ("sysclasses" "packages" "xhtmlgen"))
+			  :depends-on ("sysclasses" "packages" "xhtmlgen" "rss"))
 
 		 (:module "images" :components ((:file "image")
 						

Modified: trunk/bknr/src/data/blob.lisp
===================================================================
--- trunk/bknr/src/data/blob.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/data/blob.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -146,7 +146,7 @@
     (blob-from-stream blob in)))
 
 (defun make-blob-from-file (pathname &optional (class 'blob) &rest initargs)
-  (when (getf initargs :type)
+  (unless (getf initargs :type)
     (setf (getf initargs :type)
 	  (pathname-type pathname)))
   (let ((blob (apply #'make-object class initargs)))

Modified: trunk/bknr/src/data/object.lisp
===================================================================
--- trunk/bknr/src/data/object.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/data/object.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -204,20 +204,26 @@
       (relaxed-object-reference-slot-p slot))))
 
 (defmacro define-persistent-class (class (&rest superclasses) slots &rest class-options)
-  (let ((superclasses (or superclasses '(store-object))))
-    (when (member :metaclass class-options :key #'car)
-      (error "Can not define a persistent class with a metaclass."))
+  (let ((superclasses (or superclasses '(store-object)))
+	(metaclass (cadr (assoc :metaclass class-options))))
+    (when (and metaclass
+	       (not (validate-superclass (find-class metaclass)
+					 (find-class 'persistent-class))))
+      (error "Can not define a persistent class with metaclass ~A." metaclass))
     `(define-bknr-class ,class ,superclasses ,slots
-      (:metaclass persistent-class)
+      ,@(unless metaclass '((:metaclass persistent-class)))
       , at class-options)))
 
 (defmacro defpersistent-class (class (&rest superclasses) slots &rest class-options)
-  (let ((superclasses (or superclasses '(store-object))))
-    (when (member :metaclass class-options :key #'car)
-      (error "Can not define a persistent class with a metaclass."))
+  (let ((superclasses (or superclasses '(store-object)))
+	(metaclass (cadr (assoc :metaclass class-options))))
+    (when (and metaclass
+	       (not (validate-superclass (find-class metaclass)
+					 (find-class 'persistent-class))))
+      (error "Can not define a persistent class with metaclass ~A." metaclass))
     `(eval-when (:compile-toplevel :load-toplevel :execute)
        (defclass ,class ,superclasses ,slots
-	 (:metaclass persistent-class)
+	 ,@(unless metaclass '(:metaclass persistent-class))
 	 , at class-options))))
 
 #+nil
@@ -467,6 +473,8 @@
 		       :if-does-not-exist :create
 		       :if-exists :supersede)
       (let ((class-layouts (make-hash-table)))
+        (with-transaction (:prepare-for-snapshot) 
+          (map-store-objects #'prepare-for-snapshot))
 	(map-store-objects (lambda (object) (when (subtypep (type-of object) 'store-object)
 					      (encode-create-object class-layouts object s))))
 	(map-store-objects (lambda (object) (when (subtypep (type-of object) 'store-object)
@@ -554,23 +562,31 @@
   (destroy-object (store-object-with-id id)))
 
 (defun delete-object (object)
-  (execute (make-instance 'transaction :function-symbol 'tx-delete-object
-			  :timestamp (get-universal-time)
-			  :args (list (store-object-id object)))))
+  (if (in-transaction-p)
+      (destroy-object object)
+      (execute (make-instance 'transaction :function-symbol 'tx-delete-object
+                              :timestamp (get-universal-time)
+                              :args (list (store-object-id object))))))
 
 (defun tx-delete-objects (&rest object-ids)
   (mapc #'(lambda (id) (destroy-object (store-object-with-id id))) object-ids))
 
 (defun delete-objects (&rest objects)
-  (execute (make-instance 'transaction :function-symbol 'tx-delete-objects
-			  :timestamp (get-universal-time)
-			  :args (mapcar #'store-object-id objects))))
+  (if (in-transaction-p)
+      (mapc #'destroy-object objects)
+      (execute (make-instance 'transaction :function-symbol 'tx-delete-objects
+                              :timestamp (get-universal-time)
+                              :args (mapcar #'store-object-id objects)))))
 
 (deftransaction change-slot-values (object &rest slots-and-values)
   (when object
     (loop for (slot value) on slots-and-values by #'cddr
           do (setf (slot-value object slot) value))))
 
+(defmethod prepare-for-snapshot (object)
+  nil)
+  
+
 (defun find-store-object (id-or-name &key (class 'store-object) query-function key-slot-name)
   "mock up implementation of find-store-object api as in the old datastore"
   (unless id-or-name

Modified: trunk/bknr/src/data/package.lisp
===================================================================
--- trunk/bknr/src/data/package.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/data/package.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -42,6 +42,7 @@
 	   #:persistent-xml-class
 	   #:persistent-xml-class-importer
 	   #:define-persistent-class
+	   #:define-persistent-xml-class
 	   #:defpersistent-class
    
 	   #:store-object
@@ -61,6 +62,7 @@
 	   #:store-objects-of-class
 	   #:all-store-objects
 	   #:map-store-objects
+           #:prepare-for-snapshot
 	   #:find-store-object
 	   #:create-object-transaction
 	   #:tx-make-object

Modified: trunk/bknr/src/data/txn.lisp
===================================================================
--- trunk/bknr/src/data/txn.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/data/txn.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -462,39 +462,46 @@
 
 (defvar *show-transactions* nil)
 
+(defun truncate-log (pathname position)
+  (let ((backup (make-pathname :type "backup" :defaults pathname)))
+    (format t "~&; creating log file backup: ~A~%" backup)
+    (with-open-file (s pathname
+                     :element-type '(unsigned-byte 8)
+                     :direction :input)
+      (with-open-file (r backup
+                       :element-type '(unsigned-byte 8)
+                       :direction :output)
+        (copy-stream s r))))
+  (format t "~&; truncating transaction log at position ~D.~%" position)
+  #+cmu
+  (unix:unix-truncate (ext:unix-namestring pathname) position)
+  #+sbcl
+  (sb-posix:truncate (namestring pathname) position))
+
 (defun load-transaction-log (pathname &key until)
-  (let (length p)
+  (let (length position)
     (restart-case
         (with-open-file (s pathname
                            :element-type '(unsigned-byte 8)
                            :direction :input)
           (setf length (file-length s))
           (loop
-           (setf p (file-position s))
-           (unless (< p length)
+           (setf position (file-position s))
+           (unless (< position length)
              (return))
 	   (let ((txn (decode s)))
-	     (when (or (not until)
-		       (<= (transaction-timestamp txn) until))
-	       (when *show-transactions*
-		 (format t "~&;;; txn @~D: ~A~%" p txn))
-	       (execute-unlogged txn)))))
+	     (cond
+               ((and until
+                     (> (transaction-timestamp txn) until))
+                (truncate-log pathname position)
+                (return-from load-transaction-log))
+               (t
+                (when *show-transactions*
+                  (format t "~&;;; ~A txn @~D: ~A~%" (transaction-timestamp txn) position txn))
+                (execute-unlogged txn))))))
       (discard ()
         :report "Discard rest of transaction log."
-        (let ((backup (make-pathname :type "backup" :defaults pathname)))
-          (format t "~&; creating log file backup: ~A~%" backup)
-          (with-open-file (s pathname
-                             :element-type '(unsigned-byte 8)
-                             :direction :input)
-            (with-open-file (r backup
-                               :element-type '(unsigned-byte 8)
-                               :direction :output)
-              (copy-stream s r))))
-        (format t "~&; truncating transaction log at position ~D.~%" p)
-	#+cmu
-        (unix:unix-truncate (ext:unix-namestring pathname) p)
-	#+sbcl
-	(sb-posix:truncate (namestring pathname) p)))))
+        (truncate-log pathname position)))))
 
 (defgeneric restore-subsystem (store subsystem &key until))
 

Modified: trunk/bknr/src/data/xml-object.lisp
===================================================================
--- trunk/bknr/src/data/xml-object.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/data/xml-object.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -39,4 +39,3 @@
 
 (export '(persistent-xml-class))
 
-

Modified: trunk/bknr/src/images/image-handlers.lisp
===================================================================
--- trunk/bknr/src/images/image-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/images/image-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -152,6 +152,7 @@
   (format nil "/intersection-rss/~A" (parse-url req)))
 
 ;;; rss image feeds
+#|
 (defclass rss-image-handler (object-rss-handler image-page-handler)
   ())
 
@@ -183,6 +184,7 @@
 
 (defclass rss-image-intersection-handler (rss-image-handler image-intersection-handler)
   ())
+|#
 
 (defclass xml-image-browser-handler (image-handler xml-object-handler)
   ())
@@ -210,10 +212,12 @@
   ("/image-keyword" image-keyword-handler)
   ("/image-union" image-union-handler)
   ("/image-intersection" image-intersection-handler)
+  #|
   ("/rss-image" rss-image-handler)
   ("/rss-image-keyword" rss-image-keyword-handler)
   ("/rss-image-union" rss-image-union-handler)
   ("/rss-image-intersection" rss-image-intersection-handler)
+  |#
   ("/image" imageproc-handler)
   ("/image-import" image-import-handler)
   ("/session-image" session-image-handler)

Modified: trunk/bknr/src/images/image-tags.lisp
===================================================================
--- trunk/bknr/src/images/image-tags.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/images/image-tags.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -129,13 +129,8 @@
 		    :value "Unselect all images"
 		    :onClick "check(this,'image-id',false);"))
 	   ((:table :class "images")
-	    (loop for image-row on images by #'(lambda (seq)
-						 (if (> (length seq) 5)
-						     (subseq seq 5)
-						     nil))
-		  do (html (:tr (loop for image in (if (> (length image-row) 5)
-						       (subseq image-row 0 5)
-						       image-row)
+	    (loop for image-row on images by #'(lambda (seq) (subseq seq 5))
+		  do (html (:tr (loop for image in (subseq image-row 0 5)
 				      for image-id = (store-object-id image)
 				      for image-name = (store-image-name image)
 				      do (html ((:td)

Modified: trunk/bknr/src/images/imageproc-handler.lisp
===================================================================
--- trunk/bknr/src/images/imageproc-handler.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/images/imageproc-handler.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -170,10 +170,16 @@
     (let ((ims (header-slot-value req :if-modified-since))
 	  (changed-time (blob-timestamp image)))
       (setf (net.aserve::last-modified *ent*) changed-time)
-      (setf (reply-header-slot-value req :last-modified) 
-	    (net.aserve::universal-time-to-date changed-time))
+      (setf (reply-header-slot-value req :last-modified) (#-allegro
+							  universal-time-to-date
+							  #+allegro
+							  net.aserve::universal-time-to-date
+							  changed-time))
 	(if (and ims
-		 (<= changed-time (net.aserve::date-to-universal-time ims)))
+		 (<= changed-time (#-allegro
+				   date-to-universal-time
+				   #+allegro
+				   net.aserve::date-to-universal-time ims)))
 	    (progn
 	      (setf (request-reply-code req) *response-not-modified*)
 	      (format t "; image ~A not changed~%" image)

Modified: trunk/bknr/src/indices/indexed-class.lisp
===================================================================
--- trunk/bknr/src/indices/indexed-class.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/indices/indexed-class.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -451,3 +451,4 @@
       (slot-value object 'destroyed-p)
     (unbound-slot () nil)
     (simple-error () nil)))
+

Modified: trunk/bknr/src/packages.lisp
===================================================================
--- trunk/bknr/src/packages.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/packages.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -26,7 +26,7 @@
 	   #:start-cron))
 
 (defpackage :bknr.rss
-  (:use :cl :cl-user :cl-ppcre :bknr.utils :puri :cxml-xmls)
+  (:use :cl :cl-user :cl-ppcre :bknr.utils :puri :cxml-xmls :bknr.datastore :bknr.indices :cxml)
   (:export #:xml-escape
 	   #:*img-src-scanner*
 	   #:*a-href-scanner*
@@ -37,14 +37,11 @@
 	   #:rss-to-xml
 	   #:merge-feeds
 
-	   ;; feed
-	   #:rss-feed
-	   #:rss-feed-channel
-	   #:rss-feed-image
-	   #:rss-feed-items
-
 	   ;; channel
 	   #:rss-channel
+	   #:find-rss-channel
+	   #:make-rss-channel
+	   #:rss-channel-cleanup
 	   #:rss-channel-about
 	   #:rss-channel-title
 	   #:rss-channel-link
@@ -52,6 +49,7 @@
 	   #:rss-channel-image
 	   #:rss-channel-textinput
 	   #:rss-channel-items
+	   #:rss-channel-xml
 
 	   ;; image
 	   #:rss-image
@@ -62,13 +60,18 @@
 
 	   ;; item
 	   #:rss-item
-	   #:rss-item-about
+	   #:rss-item-channel
+	   #:rss-item-published
+	   #:rss-item-pub-date
 	   #:rss-item-title
 	   #:rss-item-link
-	   #:rss-item-desc
-	   #:rss-item-creator
-	   #:rss-item-date
-	   #:rss-item-orig-feed
+	   #:rss-item-description
+	   #:rss-item-author
+	   #:rss-item-category
+	   #:rss-item-comments
+	   #:rss-item-enclosure
+	   #:rss-item-guid
+	   #:rss-item-source
 
 	   ;; textinput
 	   #:rss-textinput
@@ -110,10 +113,7 @@
 	:cl-user
 	:cl-interpol
 	:cl-ppcre
-	#-sbcl
 	:md5
-	#+sbcl
-	:sb-md5
 	:bknr.datastore
 	:bknr.indices
 	:bknr.utils
@@ -131,9 +131,17 @@
 	   #:user-preferences
 	   #:user-subscriptions
 
+           ;; Export slot names so that derived classes can overload
+           ;; slots (e.g. to add XML impex attributes)
+           #:login
+           #:flags
+	   #:email
 	   #:full-name
-	   #:email
+           #:last-login
 	   #:password
+           #:preferences
+           #:subscriptions
+           #:mail-error
 
 	   #:find-user
 	   #:user-with-email
@@ -175,10 +183,7 @@
 	:cxml-xmls
 	:xhtml-generator
 	:puri
-	#-sbcl
 	:md5
-	#+sbcl
-	:sb-md5
 	:js
 	:bknr.datastore
 	:bknr.indices
@@ -249,6 +254,12 @@
 	   #:navi-button
 	   #:with-bknr-http-response
 
+	   #:upload
+	   #:upload-name
+	   #:upload-pathname
+	   #:upload-size
+	   #:upload-content-type
+
 	   #:bknr-url-path
 
 	   ;; templates
@@ -262,6 +273,7 @@
 	   #:with-tag-expanders
 
 	   #:*html-variables*
+           #:*template-dtd-catalog*
 
 	   ;; handlers
 	   #:parse-handler-url
@@ -276,6 +288,8 @@
 	   #:website-menu
 	   #:website-url
 	   #:website-session-info
+           #:website-base-href
+           #:website-make-path
 	   #:host
 	   #:publish-site
 	   #:publish-handler
@@ -311,7 +325,6 @@
 	   #:keywords-handler
 
 	   #:rss-handler
-	   #:object-rss-handler
 
 	   #:define-bknr-webserver-module
 

Modified: trunk/bknr/src/rss/rss.lisp
===================================================================
--- trunk/bknr/src/rss/rss.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/rss/rss.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,168 +1,172 @@
 (in-package :bknr.rss)
 
-(define-constant +rdf-ns+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#")
-(define-constant +rss-ns+ "http://purl.org/rss/1.0/")
-(define-constant +dc-ns+ "http://purl.org/dc/elements/1.1/")
-(define-constant +content-ns+ "http://purl.org/rss/1.0/modules/content/")
+;; RSS 2.0 Generation Package
 
-(defgeneric rss-to-xml (rss-element))
+;; This package aids in the automatic generation of RSS channels.
 
-(defun xml-escape (xml-string)
-  (apply #'concatenate 'string
-         (loop for c across xml-string
-	     collect (case c
-		       ((#\<) "<")
-		       ((#\>) ">")
-		       ((#\&) "&")
-		       ((#\') "'")
-		       ((#\") """)
-		       (t (string c))))))
+;; Class rss-channel models one rss channel.  Items are added to a
+;; channel by deriving other persistent classes from the (mixin) class
+;; rss-item.  When an object of such a derived class is created, it is
+;; automatically added to its RSS channel.  Likewise, it is
+;; automatically deleted from the channel when it is deleted.
 
+;; The channel that an item is put into is defined by the generic
+;; function rss-item-channel which needs to be specialized for each
+;; item class.  The default method of this generic function specifies
+;; nil as channel, which results in the creation of a warning message
+;; when an object of this class is created.
 
-(defun rss10-content (content)
-  `(("description") NIL ,content))
+;; The rss-item-channel method may return the channel either as a
+;; string or as a channel object.
 
-(defun rss10-tzd (zone)
-  (if (> zone 0)
-      (format nil "+~2,'0D" zone)
-      (format nil "-~2,'0D" (- zone))))
+;; Subclasses of rss-item should provide methods for some of the
+;; generic functions (rss-item-channel rss-item-title rss-item-link
+;; rss-item-description rss-item-author rss-item-category
+;; rss-item-comments rss-item-enclosure rss-item-guid
+;; rss-item-source).  These functions are called when the RSS file for
+;; the channel is generated and provide the
 
-(defun rss10-date (date)
-  (multiple-value-bind (second minute hour date month year day daylight zone)
-      (decode-universal-time date)
-    (declare (ignore day daylight))
-    (format nil "~4,'0D-~2,'0D-~2,'0DT~2,'0D:~2,'0D:~2,'0D~a:00"
-	    year month date hour minute second
-	    (rss10-tzd  zone))))
+;; One rss-item can only be in one channel.
 
-(defclass rss-feed ()
-  ((channel :initarg :channel :accessor rss-feed-channel :initform nil)
-   (image :initform nil :initarg :image :accessor rss-feed-image)
-   (items :initarg :items :accessor rss-feed-items :initform nil)))
+;; The channel object has more required elements than the standard
+;; specifies in order to make the generated feed documents more widely
+;; accepted.
 
-(defmethod rss-feed-items-with-title ((feed rss-feed))
-  (let ((feed-title (rss-channel-title (rss-feed-channel feed))))
-    (mapcar #'(lambda (item)
-		(with-slots (title about link desc creator date) item
-		  (make-instance 'rss-item
-				 :title (format nil "~a - ~a"
-						feed-title title)
-				 :about about
-				 :orig-feed feed
-				 :link link
-				 :desc desc
-				 :creator creator
-				 :date date)))
-	    (rss-feed-items feed))))
+;;; Paul Graham, On Lisp, p191
+(defmacro aif (test-form then-form &optional else-form)
+ `(let ((it ,test-form))
+   (if it ,then-form ,else-form)))
 
-(defun merge-feeds (title url desc feeds)
-  (let ((items (subseq (sort (apply #'append (mapcar #'rss-feed-items-with-title feeds))
-			     #'> :key #'rss-item-date)
-		       0 30)))
-    (make-instance 'rss-feed
-		   :channel (make-instance 'rss-channel :title title
-					   :link url
-					   :desc desc
-					   :items (mapcar #'rss-item-link items))
-		   :items items)))
+;; Class for channels
 
-(defmethod rss-to-xml ((feed rss-feed))
-  (make-node :name "rdf:RDF"
-	     :ns +rss-ns+
-	     :attrs `(("xmlns:rdf" ,+rdf-ns+)
-		      ("xmlns:dc" ,+dc-ns+))
-	     :children (append (list (rss-to-xml (rss-feed-channel feed)))
-			       (if (rss-feed-image feed)
-				   (list (rss-to-xml (rss-feed-image feed)))
-				   nil)
-			       (mapcar #'rss-to-xml (rss-feed-items feed)))))
+(define-persistent-class rss-channel ()
+  ((name :update
+	 :index-type string-unique-index
+	 :index-reader find-rss-channel)
+   (title :update)
+   (link :update)
+   (description :update)
+   (last-update :update :initform (get-universal-time))
+   (max-item-age :update :initform (* 4 7 3600))
+   (items :update :initform nil)))
 
-(defclass rss-channel ()
-  ((about :initarg :about :accessor rss-channel-about :initform nil)
-   (title :initarg :title :accessor rss-channel-title :initform nil)
-   (link :initarg :link :accessor rss-channel-link :initform nil)
-   (desc :initarg :desc :accessor rss-channel-desc :initform nil)
-   (image :initform nil :initarg :image :accessor rss-channel-image)
-   (textinput :initform nil :initarg :textinput :accessor rss-channel-textinput)
-   (items :initform nil :initarg :items :accessor rss-channel-items)))
+(defmethod prepare-for-snapshot ((channel rss-channel))
+  (setf (rss-channel-items channel) (remove-if #'object-destroyed-p (rss-channel-items channel))))
 
-(defmethod rss-to-xml ((chan rss-channel))
-  `(("channel")
-    (("rdf:about" ,(or (rss-channel-about chan) "nothing")))
-    ,@(remove nil
-	      `((("title") NIL ,(rss-channel-title chan))
-		(("link" ) NIL ,(rss-channel-link chan))
-		,(when (rss-channel-desc chan)
-		       `(("description") NIL ,(rss-channel-desc chan)))
-		,(when (rss-channel-image chan)
-		       `(("image")
-			 (("rdf:resource" ,(rss-image-url (rss-channel-image chan))))))
-		,(when (rss-channel-items chan)
-		       `(("items")
-			 NIL
-			 ("rdf:Seq" NIL
-			  ,@(mapcar #'(lambda (item)
-					`("rdf:li" (("rdf:resource" 
-						     ,(if (typep item 'rss-item)
-							  (rss-item-link item)
-							  item)))))
-				    (rss-channel-items chan)))))
-		,(when (rss-channel-textinput chan)
-		       `(("textinput")
-			 (("rdf:resource" . ,(rss-textinput-link
-					      (rss-channel-textinput chan))))))))))
+;; Mixin for items
 
-(defclass rss-image ()
-  ((about :initarg :about :accessor rss-image-about :initform nil)
-   (title :initarg :title :accessor rss-image-title :initform nil)
-   (url :initarg :url :accessor rss-image-url :initform nil)
-   (link :initarg :link :accessor rss-image-link :initform nil)))
+(define-persistent-class rss-item ()
+  ())
 
-(defmethod rss-to-xml ((image rss-image))
-  `(("image")
-    (("rdf:about" ,(or (rss-image-about image) "nothing")))    
-    (("title") NIL ,(rss-image-title image))
-    (("link" ) NIL ,(rss-image-link image))
-    (("url" ) NIL ,(rss-image-url image))))
+(defgeneric rss-item-pub-date (item))
 
-(defclass rss-item ()
-  ((about :initarg :about :accessor rss-item-about :initform nil)
-   (title :initarg :title :accessor rss-item-title)
-   (link :initarg :link :accessor rss-item-link)
-   (desc :initform nil :initarg :desc :accessor rss-item-desc)
-   (creator :initarg :creator :accessor rss-item-creator :initform nil)
-   (date :initarg :date :accessor rss-item-date :initform 0)
-   (orig-feed :initarg :orig-feed :accessor rss-item-orig-feed :initform nil)))
+(defun make-rss-channel (name title description link &rest args)
+  (apply #'make-object 'rss-channel :name name :title title :description description :link link args))
+  
+(defun render-mandatory-element (channel element)
+  (with-element (string-downcase (symbol-name element))
+    (text (aif (and (slot-boundp channel element)
+		    (slot-value channel element))
+	       it
+	       (format nil "(channel ~(~A~) not defined)" element)))))
 
-(defmethod rss-to-xml ((item rss-item))
-  `(("item")
-    (("rdf:about" ,(or (rss-item-about item) "nothing")))
-    ,@(remove
-      nil
-      `((("title") NIL ,(rss-item-title item))
-	(("link" ) NIL ,(rss-item-link item))
-	,(when (rss-item-desc item)
-	       (rss10-content (rss-item-desc item)))
-	,(when (rss-item-creator item)
-	       `("dc:creator"
-		 NIL
-		 ,(rss-item-creator item)))
-	,(when (rss-item-date item)
-	       `("dc:date"
-		 NIL
-		 ,(rss10-date (rss-item-date item))))))))
+(defmethod rss-channel-xml ((channel rss-channel) stream)
+  (with-xml-output (make-character-stream-sink stream)
+    (with-element "rss"
+      (attribute "version" "2.0")
+      (with-element "channel"
+	(dolist (slot '(title link description))
+	  (render-mandatory-element channel slot))
+	
+	(dolist (item (remove-if-not #'(lambda (item)
+                                         (and (not (object-destroyed-p item))
+                                              (rss-item-published item)))
+                                     (rss-channel-items channel)))
+	  (rss-item-xml item))))))
 
-(defclass rss-textinput ()
-  ((about :initarg :about :accessor rss-textinput-about :initform nil)
-   (title :initarg :title :accessor rss-textinput-title)
-   (desc :initarg :desc :accessor rss-textinput-desc)
-   (link :initarg :link :accessor rss-textinput-link)
-   (name :initarg :name :accessor rss-textinput-name)))
+(defmethod rss-channel-items ((channel rss-channel))
+  "Return all non-expired items in channel."
+  (let ((expiry-time (- (get-universal-time) (rss-channel-max-item-age channel))))
+    (remove-if (lambda (item) (or (object-destroyed-p item)
+                                  (< (rss-item-pub-date item) expiry-time)))
+               (slot-value channel 'items))))
 
-(defmethod rss-to-xml ((textinput rss-textinput))
-  `(("textinput")
-    (("rdf:about" ,(or (rss-textinput-about textinput) "nothing")))
-    (("title") NIL ,(rss-textinput-title textinput))
-    (("link" ) NIL ,(rss-textinput-link textinput))
-    (("name" ) NIL ,(rss-textinput-name textinput))
-    (("description") NIL ,(rss-textinput-desc textinput))))
+(deftransaction rss-channel-cleanup (channel)
+  "Remove expired items from the items list.  Can be used to reduce
+the memory footprint of very high volume channels."
+  (setf (slot-value channel 'items) (rss-channel-items channel)))
+
+;; Internal helper functions to find a channel
+
+(defmethod remove-item ((channel rss-channel) item)
+  "Remove item from channel.  May only be called within transaction context."
+  (setf (slot-value channel 'items) (remove item (rss-channel-items channel))))
+
+(defmethod remove-item ((channel string) item)
+  (aif (find-rss-channel channel)
+       (remove-item it item)))
+
+(defmethod remove-item ((channel (eql nil)) item)
+  (warn "no RSS channel defined for item ~A" item))
+
+(defmethod add-item ((channel rss-channel) item)
+  "Add item to channel.  May only be called within transaction context."
+  (setf (slot-value channel 'items) (cons item (rss-channel-items channel))))
+
+(defmethod add-item ((channel string) item)
+  (aif (find-rss-channel channel)
+       (add-item it item)
+       (warn "can't find RSS channel ~A to add newly created item ~A to" channel item)))
+
+(defmethod add-item ((channel (eql nil)) item)
+  (warn "no RSS channel defined for item ~A" item))
+
+(defmethod initialize-persistent-instance :after ((rss-item rss-item))
+  (add-item (rss-item-channel rss-item) rss-item))
+
+(defmethod destroy-object :before ((rss-item rss-item))
+  (remove-item (rss-item-channel rss-item) rss-item))
+
+(defun item-slot-element (item slot-name)
+  (let ((accessor (kmrcl:concat-symbol-pkg (find-package :bknr.rss) 'rss-item- slot-name)))
+    (aif (funcall accessor item)
+	 (with-element (string-downcase (symbol-name slot-name))
+	   (text it)))))
+
+(defun rss-item-xml (item)
+  (with-element "item"
+    (dolist (slot '(title link author category comments enclosure source))
+      (item-slot-element item slot))
+    (aif (rss-item-guid item)
+	 (with-element "guid"
+	   (attribute "isPermaLink" "true")
+	   (text it)))
+    (aif (rss-item-description item)
+	 (with-element "description"
+	   (cdata it)))
+    (with-element "pubDate"
+      (text (format-date-time (rss-item-pub-date item) :mail-style t)))))
+
+;; All items present on an RSS stream can implement the access
+;; methods below.
+
+(defmethod rss-item-published (item)
+  t)
+
+(defmethod rss-item-pub-date (item)
+  "The default implementation for the publication date delivers the
+current system date/time as publication date."
+  (warn "no rss-item-pub-date defined for class ~A, using current date/time" (class-of item))
+  (get-universal-time))
+
+(defmethod rss-item-channel (item))
+(defmethod rss-item-title (item))
+(defmethod rss-item-link (item))
+(defmethod rss-item-description (item))
+(defmethod rss-item-author (item))
+(defmethod rss-item-category (item))
+(defmethod rss-item-comments (item))
+(defmethod rss-item-enclosure (item))
+(defmethod rss-item-guid (item))
+(defmethod rss-item-source (item))
+

Copied: trunk/bknr/src/rss/test.lisp (from rev 2044, branches/xml-class-rework/bknr/src/rss/test.lisp)

Modified: trunk/bknr/src/skip-list/skip-list-tests.lisp
===================================================================
--- trunk/bknr/src/skip-list/skip-list-tests.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/skip-list/skip-list-tests.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,9 +1,6 @@
-(eval-when (:compile-toplevel :load-toplevel :execute)
-  (or (find-package :bknr.skip-list.tests)
-      (defpackage :bknr.skip-list.tests
-	(:use :cl :bknr.skip-list :unit-test))))
+(in-package :bknr.skip-list)
 
-(in-package :bknr.skip-list.tests)
+(use-package :unit-test)
 
 (define-test-class skip-list-test-class)
 
@@ -14,13 +11,13 @@
     :body #'(lambda () , at body)))
 
 (define-skip-list-test "Node test"
-    (let ((node (bknr.skip-list::make-node 0 0 23)))
-      (dotimes (i (bknr.skip-list::node-level node))
-	(test-equal (bknr.skip-list::node-forward node i) nil))
-      (dotimes (i (bknr.skip-list::node-level node))
-	(setf (bknr.skip-list::node-forward node i) i))
-      (dotimes (i (bknr.skip-list::node-level node))
-	(test-equal (bknr.skip-list::node-forward node i) i))))
+    (let ((node (make-node 0 0 23)))
+      (dotimes (i (node-level node))
+	(test-equal (node-forward node i) nil))
+      (dotimes (i (node-level node))
+	(setf (node-forward node i) i))
+      (dotimes (i (node-level node))
+	(test-equal (node-forward node i) i))))
 
 (define-skip-list-test "Skiplist test"
     (let ((sl (make-instance 'skip-list)))
@@ -59,9 +56,9 @@
 	(loop for j from (1+ i) to 99
 	      do (test-equal (skip-list-search sl j) j)))
       (test-equal (skip-list-length sl) 0)
-      (test-equal (bknr.skip-list::skip-list-to-list sl) nil)))
+      (test-equal (skip-list-to-list sl) nil)))
 
-#-sbcl
+
 (defun perf ()
   (let ((sl (make-instance 'skip-list)))
     (time (prof:with-profiling ()
@@ -72,4 +69,4 @@
     (time (prof:with-profiling ()
 	    (dotimes (i 100000)
 	      (skip-list-search sl i))))
-    (prof:show-flat-profile)))
+    (prof:show-flat-profile)))
\ No newline at end of file

Modified: trunk/bknr/src/skip-list/skip-list.lisp
===================================================================
--- trunk/bknr/src/skip-list/skip-list.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/skip-list/skip-list.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -159,7 +159,7 @@
   (multiple-value-bind (update node)
       (make-update sl key)
 
-    (when (= (node-key node) key)
+    (when (and node (= (node-key node) key))
       (do ((level 0 (1+ level)))
 	  ((= level (skip-list-level sl)))
 	(let ((next (node-forward update level)))

Modified: trunk/bknr/src/sysclasses/cron.lisp
===================================================================
--- trunk/bknr/src/sysclasses/cron.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/sysclasses/cron.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -10,7 +10,7 @@
        (>= hour 0)
        (< hour 24)))
 
-(define-constant +day-list+ '(:monday :tuesday :wednesday :thursday :friday :saturday :sunday))
+(defconstant +day-list+ '(:monday :tuesday :wednesday :thursday :friday :saturday :sunday))
 
 (defun day-p (day)
   (or (and (numberp day)
@@ -27,7 +27,7 @@
 	    (1+ num)
 	    (error "Could not find day in day-list")))))
 
-(define-constant +month-list+ '(:january :february :march :april :may :june :july
+(defconstant +month-list+ '(:january :february :march :april :may :june :july
 			    :august :september :october :november :december))
 
 (defun month-p (month)
@@ -161,4 +161,4 @@
     (setq *cron* (make-instance 'cron-actor)))
   (when (actor-running-p *cron*)
     (actor-stop *cron*))
-  (actor-start *cron*))
+  (actor-start *cron*))
\ No newline at end of file

Modified: trunk/bknr/src/sysclasses/user.lisp
===================================================================
--- trunk/bknr/src/sysclasses/user.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/sysclasses/user.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -155,9 +155,12 @@
 (deftransaction set-user-crypted-password (user crypted-password)
   (setf (user-password user) crypted-password))
 
-(defun set-user-password (user password)
+(defmethod set-user-password ((user user) password)
   (set-user-crypted-password user (crypt-md5 password (make-salt))))
 
+(defmethod set-user-password ((user string) password)
+  (set-user-crypted-password (find-user user) (crypt-md5 password (make-salt))))
+
 ;;; owned objects
 
 (define-persistent-class owned-object (store-object)

Copied: trunk/bknr/src/utils/date-calc.lisp (from rev 2044, branches/xml-class-rework/bknr/src/utils/date-calc.lisp)

Modified: trunk/bknr/src/utils/package.lisp
===================================================================
--- trunk/bknr/src/utils/package.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/utils/package.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,8 +5,7 @@
 	:cl-ppcre
 	:cl-interpol
 	:cxml-xmls
-	#-sbcl :md5
-	#+sbcl :sb-md5
+	:md5
         #+cmu :extensions
 ;	#+sbcl :sb-ext
         #+(not allegro) :acl-compat.mp
@@ -15,6 +14,9 @@
   #+(not allegro)
   (:shadowing-import-from :acl-compat.mp process-kill process-wait)
   (:export #:define-bknr-class
+
+           ;; byte size formatting
+           #:scale-bytes
    
 	   ;; date format
 	   #:format-date-time
@@ -142,7 +144,6 @@
 
 	   ;; Package cleaning for the build process
 	   #:within-temporary-package
-	   #:define-constant
 
 	   ;; mp compatibility
 	   #:mp-make-lock

Modified: trunk/bknr/src/utils/utils.lisp
===================================================================
--- trunk/bknr/src/utils/utils.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/utils/utils.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,7 +6,7 @@
                            ,@(when doc (list doc))))
 ;;; date format
 
-;; Zeitzone fur Mail-Zeitstempel
+;; Zeitzone für Mail-Zeitstempel
 (defparameter *mail-timezone* "+0100")
 
 (defun format-date-time (&optional universal-time &key stream
@@ -368,12 +368,7 @@
 (defun md5-string (input-string)
   (apply #'concatenate 'string (mapcar #'(lambda (c)
 					   (format nil "~2,'0X" c))
-				       (coerce 
-					#-sbcl
-					(md5sum-sequence input-string)
-					#+sbcl
-					(md5sum-sequence (sb-ext:string-to-octets input-string :null-terminate nil))
-					'list))))
+				       (coerce (md5sum-sequence input-string) 'list))))
 
 #+(or)
 (defun md5-string (string)
@@ -541,3 +536,17 @@
 	       (apply #'append subclasses
 		      (mapcar #'collect-subclasses subclasses)))))
     (mapcar #'class-name (remove-duplicates (collect-subclasses (if (symbolp class) (find-class class) class))))))
+
+(defun scale-bytes (byte-count)
+  (cond
+    ((> byte-count (* 1024 1024 1024 1024))
+     (format nil "~3,1F TB" (/ byte-count (* 1024 1024 1024 1024))))
+    ((> byte-count (* 1024 1024 1024))
+     (format nil "~3,1F GB" (/ byte-count (* 1024 1024 1024))))
+    ((> byte-count (* 1024 1024))
+     (format nil "~3,1F MB" (/ byte-count (* 1024 1024))))
+    ((> byte-count 1024)
+     (format nil "~3,1F KB" (/ byte-count 1024)))
+    (t
+     (format nil "~A" byte-count))))
+    
\ No newline at end of file

Modified: trunk/bknr/src/web/authorizer.lisp
===================================================================
--- trunk/bknr/src/web/authorizer.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/authorizer.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -71,17 +71,23 @@
 (defmethod authorize ((authorizer bknr-authorizer)
 		      (req http-request)
 		      ent)
-  ;; first check session cookie or bknr-sessionid parameter. the
-  ;; session cookie is set in the with-bknr-http-response macro to
-  ;; follow aserve's documented protocol for setting cookies
-  (let ((session (or (session-from-request-parameters authorizer req)
-		     (session-from-request req)
-		     (make-anonymous-session req))))
-    (when session
-      (bknr-session-touch session)
-      (change-class req 'bknr-request :session session)
-      (return-from authorize t)))
 
+  ;; Catch any errors that occur during request body processing
+  (handler-case
+      ;; first check session cookie or bknr-sessionid parameter. the
+      ;; session cookie is set in the with-bknr-http-response macro to
+      ;; follow aserve's documented protocol for setting cookies
+      (let ((session (or (session-from-request-parameters authorizer req)
+                         (session-from-request req)
+                         (make-anonymous-session req))))
+        (when session
+          (bknr-session-touch session)
+          (change-class req 'bknr-request :session session)
+          (return-from authorize t)))
+    (error (e)
+      (format t "; Caught error ~A during request processing~%" e)
+      (http-error req *response-bad-request* (princ-to-string e))))
+
   ;; unauthorized, come up with 401 response to the web browser
-  (redirect "/login" req)
+  (redirect (website-make-path *website* "login") req)
   :deny)

Modified: trunk/bknr/src/web/event-log.lisp
===================================================================
--- trunk/bknr/src/web/event-log.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/event-log.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -50,7 +50,7 @@
   `(html
     ((:td :class "lognavi")
      ((:input :type "checkbox" :name "show-class" :value ,class-name ,@(if checked '(:checked "checked"))))
-     (cmslink (format nil "/event-log?show-only-class=~a" ,class-name)
+     (cmslink (format nil "event-log?show-only-class=~a" ,class-name)
        (:princ-safe (regex-replace ,class-name "-event$" ""))))))
 
 (defun serve-event-log-request (req)
@@ -107,7 +107,7 @@
 		  "count: " (html-text-input print-count 3)
 		  " hours: " (html-text-input print-hours 3)
 		  " " ((:input :type "submit" :name "filter" :value "filter"))
-		  " " (cmslink ("/event-class-documentation" :target "documentation") " documentation ")))
+		  " " (cmslink ("event-class-documentation" :target "documentation") " documentation ")))
 	    #+(or)
 	    (:tr ((:td :class "lognavi") "message: " ((:input :type "text" :size "80" :name "message")))))
 	   ;; Query the database.

Modified: trunk/bknr/src/web/handlers.lisp
===================================================================
--- trunk/bknr/src/web/handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -34,6 +34,9 @@
 	       :accessor website-navigation)
    (admin-navigation :initarg :admin-navigation
 		     :accessor website-admin-navigation)
+   (base-href :initarg :base-href
+              :accessor website-base-href
+              :initform "/")
    (style-sheet-urls :initarg :style-sheet-urls
 		     :accessor website-style-sheet-urls)
    (javascript-urls :initarg :javascript-urls
@@ -44,6 +47,12 @@
 		   :accessor website-login-logo-url)
    (import-spool-directory :initarg :import-spool-directory
 			   :accessor website-import-spool-directory)
+   (template-base-directory :initarg :template-base-directory
+                            :reader website-template-base-directory)
+   (template-command-packages :initarg :template-command-packages
+                              :reader website-template-command-packages)
+   (template-handler :initform nil
+                     :reader website-template-handler)
    (show-page-function :initarg :show-page-function
 		       :accessor website-show-page-function)
    (show-error-page-function :initarg :show-error-page-function
@@ -60,6 +69,8 @@
     :login-logo-url "/image/bknr-logo"
     :site-logo-url "/image/bknr-logo"
     :import-spool-directory #p"/home/bknr/spool/"
+    :template-base-directory nil
+    :template-command-packages nil
     :show-page-function #'show-page
     :show-error-page-function #'show-error-page))
 
@@ -74,6 +85,14 @@
   (dolist (handler (website-handlers website))
     (format t "~A => ~A~%" (uri-path (page-handler-url handler)) handler)))
 
+(defun relative (path)
+  (if (eq #\/ (aref path 0))
+      (relative (subseq path 1))
+      path))
+
+(defmethod website-make-path ((website website) path)
+  (format nil "~A~A" (website-base-href website) (relative path)))
+
 (defgeneric publish-handler (website handler))
 (defgeneric publish-site (website))
 
@@ -121,7 +140,14 @@
 		       (mapcar #'(lambda (module-name) (or (gethash (symbol-name module-name) *website-modules*)
 							   (warn "bknr module ~A not known" module-name)))
 			       (website-modules website)))))
-  
+  (when (website-template-base-directory website)
+    (setf (slot-value website 'template-handler) (make-instance 'template-handler
+                                                                :name "/"
+                                                                :site website
+                                                                :destination (website-template-base-directory website)
+                                                                :command-packages (website-template-command-packages website)))
+    (push (website-template-handler website)
+          (website-handlers website)))
   (mapc #'(lambda (handler)
 	    (publish-handler website handler))
 	(website-handlers website)))
@@ -204,25 +230,16 @@
 	(progn
 	  (setf (session-variable :login-redirect-uri)
 		(redirect-uri (request-uri req)))
-	  (redirect "/login" req))
-	(handler-bind ((error #'(lambda (e)
-				  (with-bknr-page (req :title "error processing your request"
-						       :response *response-internal-server-error*)
-				    (if (or (admin-p *user*)
-					    *bknr-debug*)
-					(html (:pre (:princ-safe e)
-						    #+sbcl
-						    ((:font :size "-3")
-						     (sb-debug:backtrace 30 *html-stream*))
-						    #+cmu
-						    ((:font :size "-3")
-						     (debug:backtrace 30 *html-stream*))))
-					(html "error processing your request")))
-				  (do-error-log-request req e)
-				  (error e))))
-	  (handle handler req)))
+	  (redirect (website-make-path *website* "login") req))
+	(if (member :notrap net.aserve::*debug-current* :test #'eq)
+	    (handle handler req)
+	    (handler-bind ((error #'(lambda (e)
+				      (funcall (website-show-error-page-function *website*) e)
+				      (do-error-log-request req e)
+				      (error e))))
+	      (handle handler req))))
     (handler-case
-	(mapcar #'delete-file (mapcar #'cdr (getf (request-reply-plist req) 'uploaded-files)))
+	(mapcar #'delete-file (mapcar #'cdr (request-uploaded-files req)))
       (error (e)
 	(warn "error ~A ignored while deleting uploaded files" e)))))
 
@@ -449,9 +466,10 @@
 		:string-rod-fn #'cxml::utf8-string-to-rod))
 
 (defmethod handle-object ((handler xml-object-list-handler) object req)
-  (cxml:with-element (xml-object-list-handler-toplevel-element-name handler)
-    (dolist (object (object-list-handler-get-objects handler object req))
-      (object-list-handler-show-object-xml handler object req))))
+  (let ((element-name (xml-object-list-handler-toplevel-element-name handler)))
+    (cxml:with-element element-name
+      (dolist (object (object-list-handler-get-objects handler object req))
+	(object-list-handler-show-object-xml handler object req)))))
 
 (defclass blob-handler (object-handler)
   ())

Modified: trunk/bknr/src/web/menu.lisp
===================================================================
--- trunk/bknr/src/web/menu.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/menu.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,24 +1,14 @@
 (in-package :bknr.site-menu)
 
-(defparameter *menu-dtd* (cxml:parse-dtd-file (merge-pathnames #p"menu.dtd" *load-truename*)))
-
-(defclass menu-defs ()
-  ((menus :initarg :menus
-	  :element "menu"
-	  :reader menu-defs-menus))
-  (:metaclass xml-class)
-  (:dtd *menu-dtd*)
-  (:element "menus"))
-
 (defclass menu ()
   ((name :initarg :name
 	 :attribute "name"
 	 :reader menu-name)
    (items :initarg items
 	  :element "item"
+          :containment :+
 	  :reader menu-items))
   (:metaclass xml-class)
-  (:dtd *menu-dtd*)
   (:element "menu"))
 
 (defclass item ()
@@ -39,10 +29,9 @@
 		:reader item-hover-image))
   (:default-initargs :inactive-image nil :active-image nil :hover-image nil)
   (:metaclass xml-class)
-  (:dtd *menu-dtd*)
   (:element "item"))
 
-(defparameter *menu-def-classes* (mapcar #'find-class '(menu-defs menu item)))
+(defparameter *menu-def-classes* (mapcar #'find-class '(menu item)))
 
 (defun print-menu (menu)
   (format t "MENU: ~A ITEMS:~{ ~A~}~%" (menu-name menu) (mapcar #'item-url (menu-items menu))))
@@ -50,29 +39,32 @@
 (defun in-subtree (url subtree-url)
   (search subtree-url url))
 
-(define-bknr-tag site-menu (&key config menu-name container-class active-class inactive-class)
-  (let* ((menu-defs (bknr.impex:parse-xml-file
-		     #+cmu (ext:unix-namestring (merge-pathnames config *default-pathname-defaults*))
-		     #+sbcl (sb-int:unix-namestring (merge-pathnames config *default-pathname-defaults*))
-		     *menu-def-classes*))
-	 (menu (find menu-name (menu-defs-menus menu-defs) :key #'menu-name :test #'equal)))
+(define-bknr-tag site-menu (&key config menu-name title container-class active-class inactive-class)
+  (declare (ignore menu-name))
+  (let* ((menu (bknr.impex:parse-xml-file
+                #+cmu (ext:unix-namestring (merge-pathnames config *default-pathname-defaults*))
+                #+sbcl (sb-int:unix-namestring (merge-pathnames config *default-pathname-defaults*))
+                *menu-def-classes*)))
     (html
      ((:div :class container-class)
+      (when title
+        (html ((:div :class "title") (:princ-safe title))))
       (dolist (item (menu-items menu))
 	(let ((item-is-active (in-subtree (puri:uri-path (net.aserve:request-uri *req*)) (item-url item))))
 	  (with-slots (url title active-image inactive-image) item
-	    (cond
-	      ((and active-image inactive-image)
-	       (if item-is-active
-		   (html ((:div :class active-class)
-			  ((:img :src active-image :alt title))))
-		   (html ((:div :class inactive-class)
-			  ((:a :href url)
-			   ((:img :src inactive-image :alt title)))))))
-	      (t
-	       (if item-is-active
-		   (html ((:div :class active-class)
-			  (:princ-safe title)))
-		   (html ((:div :class inactive-class)
-			  ((:a :href url)
-			   (:princ-safe title))))))))))))))
+            (let ((link-url (format nil "~A~A" (website-base-href *website*) url)))
+              (cond
+                ((and active-image inactive-image)
+                 (if item-is-active
+                     (html ((:div :class active-class)
+                            ((:img :src active-image :alt title))))
+                     (html ((:div :class inactive-class)
+                            ((:a :href link-url)
+                             ((:img :src inactive-image :alt title)))))))
+                (t
+                 (if item-is-active
+                     (html ((:div :class active-class)
+                            (:princ-safe title)))
+                     (html ((:div :class inactive-class)
+                            ((:a :href link-url)
+                             (:princ-safe title)))))))))))))))

Modified: trunk/bknr/src/web/rss-handlers.lisp
===================================================================
--- trunk/bknr/src/web/rss-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/rss-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,28 +1,15 @@
 (in-package :bknr.web)
 
 ;;; rss handlers
-(defclass rss-handler (page-handler)
-  ())
+(defclass rss-handler (object-handler)
+  ()
+  (:default-initargs :query-function #'bknr.rss:find-rss-channel))
 
-(defgeneric create-rss-feed (handler req))
+(defmethod handle-object ((handler rss-handler) (channel (eql nil)) req)
+  (error "invalid channel name"))
 
-(defmethod handle ((handler rss-handler) req)
+(defmethod handle-object ((handler rss-handler) (channel bknr.rss:rss-channel) req)
   (with-bknr-http-response (req :content-type "text/xml")
     (with-http-body (req *ent*)
       (html (:princ "<?xml version=\"1.0\"?>")
-	    (write-xml
-	     (bknr.rss:rss-to-xml (create-rss-feed handler req))
-	     *html-stream* :indent t)))))
-
-(defclass object-rss-handler (object-handler rss-handler)
-  ())
-
-(defgeneric create-object-rss-feed (handler object req))
-
-(defmethod handle-object ((handler object-rss-handler) object req)
-  (with-bknr-http-response (req :content-type "text/xml")
-    (with-http-body (req *ent*)
-      (html (:princ "<?xml version=\"1.0\"?>")
-	    (write-xml
-	     (bknr.rss:rss-to-xml (create-object-rss-feed handler object req))
-	     *html-stream* :indent t)))))
+	    (bknr.rss:rss-channel-xml channel *html-stream*)))))

Modified: trunk/bknr/src/web/site.lisp
===================================================================
--- trunk/bknr/src/web/site.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/site.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,5 +6,5 @@
 (defparameter *thumbnail-max-height* 54)
 
 ;; default billboard to show on home page
-(define-constant *default-billboard* "main")
+(defconstant *default-billboard* "main")
 

Modified: trunk/bknr/src/web/tags.lisp
===================================================================
--- trunk/bknr/src/web/tags.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/tags.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -183,6 +183,7 @@
 <link rel=\"stylesheet\" href=\"/static/css/dynastyle_01.css\" ....
 "
   (html
+   #+(or) ((:base :href (website-base-href *website*)))
    (loop for stylesheet in (website-style-sheet-urls *website*)
 	 do (html ((:link :rel "stylesheet" :type "text/css" :href stylesheet))))
    (loop for javascript in (website-javascript-urls *website*)

Modified: trunk/bknr/src/web/templates.lisp
===================================================================
--- trunk/bknr/src/web/templates.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/templates.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,19 +6,16 @@
 
 (defvar *template-expander*)
 (defvar *template-env*)
-(defvar *template-dtd-catalog* 
-  `(;; libxml standard
-    "/etc/xml/catalog"
-    ;; FreeBSD
-    "/usr/local/share/xml/catalog.ports"))
+(defvar *template-dtd-catalog* `(;; libxml standard
+                                 "/etc/xml/catalog"
+                                 ;; FreeBSD
+                                 "/usr/local/share/xml/catalog.ports"))
 
 (eval-when (:load-toplevel :execute)
-  	  (let ((env-catalog 
-		 #-sbcl(cdr (assoc :xmlcatalog ext:*environment-list*))
-		 #+sbcl(sb-ext:posix-getenv (symbol-name :xmlcatalog))))
-  	    (when env-catalog
-  	      (pushnew env-catalog *template-dtd-catalog* :test #'equal))))
-  	 
+  (let ((env-catalog (assoc :xmlcatalog ext:*environment-list*)))
+    (when env-catalog
+      (pushnew (cdr env-catalog) *template-dtd-catalog* :test #'equal))))
+
 ;; user-error is supposed to be raised when an error is provoced by
 ;; the user (i.e. by supplying invalid form data).
 
@@ -108,7 +105,7 @@
   (let* ((*template-expander* expander)
          (*template-env* env)
          (sink (cxml:make-character-stream-sink stream :canonical nil))
-         (*html-sink* (cxml:make-recoder sink #-sbcl #'cxml::utf8-string-to-rod #+sbcl #'cxml::string-rod)))
+         (*html-sink* (cxml:make-recoder sink #'cxml::utf8-string-to-rod)))
     (if (node-attribute node "suppress-xml-headers")
 	(emit-template-node node)
 	(progn
@@ -228,7 +225,7 @@
 	  (let ((result (multiple-value-list (find-template next-dir (cdr components)))))
 	    (when (car result)
 	      (return-from find-template (values-list result)))))
-	(let ((file (merge-pathnames (make-pathname :type "bknr"
+	(let ((file (merge-pathnames (make-pathname :type "xml"
 						    :name (first components))
 				     dir)))
 	  (when (probe-file file)
@@ -260,14 +257,6 @@
       (setf (gethash namestring table) cache-entry))
     (cdr cache-entry)))
 
-#+nil
-(defmethod make-template-pathname ((page-handler template-handler) template-name)
-  (merge-pathnames
-   (make-pathname :type "bknr")
-   (pathname (concatenate 'string
-			  (namestring (template-handler-destination page-handler))
-			  template-name))))
-
 (defun send-error-response (handler req message &key (response-code *response-internal-server-error*))
   (let* ((pathname (find-template-pathname handler "user-error" :request req))
          (template (get-cached-template pathname handler)))
@@ -321,7 +310,7 @@
 				    (length (page-handler-prefix handler)))
                             :env (initial-template-environment handler req)
 			    :request req)))
-      ;; ... und wenn keine Fehler entdeckt wurden, rauschreiben
+      ;; ... und wenn keine Fehler entdeckt wurden, rausschreiben
       (if body
           (with-bknr-http-response (req
 				   :content-type "text/html; charset=UTF-8"

Modified: trunk/bknr/src/web/user-handlers.lisp
===================================================================
--- trunk/bknr/src/web/user-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/user-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -20,73 +20,20 @@
     (:princ (format nil "edit ~a" (user-login user))))))
 
 ;;; handlers
-(defparameter *login-default-url* "/")
-
-(defclass login-handler (page-handler)
-  ((name :initform :login)))
-
-(defclass logout-handler (login-handler)
-  ((name :initform :logout)))
-
-(defmethod handle ((page-handler login-handler) req)
-  (with-query-params (req __username)
-    (let (login-failed-message)
-      (when (and __username
-		 (equal __username (user-login (bknr-request-user req))))
-	;; request has successfully been authorized, redirect to asked uri
-	(let ((url (or (session-variable :login-redirect-uri)
-		       *login-default-url*)))
-	  (redirect url req)
-	  (return-from handle)))
-      (when __username
-	(setf login-failed-message "invalid username or invalid password"))
-      (with-bknr-http-response (req)
-	(with-http-body (req *ent*)
-	  (html
-	   (:html
-	    (:head
-	     (loop for stylesheet in (bknr.web::website-style-sheet-urls *website*)
-		   do (html ((:link :rel "stylesheet" :type "text/css" :href stylesheet))))
-	     ((:script :language "JavaScript") "function setFocus() { document.forms[0].elements[0].focus(); }")
-	     (:title "please login to " (:princ-safe (website-name *website*))))
-	    ((:body :class "cms" :onload "setFocus();")
-	     ((:div :align "center")
-	      (bknr.images:banner :keyword :bknr)
-	      ((:form :method "post")
-	       (let* ((user-images (loop for user in (all-users)
-					 for image = (random-elt (bknr.images:user-images user))
-					 when image
-					 collect (list user image)))
-		      (rows (group-by user-images 4)))
-		 (when user-images
-		   (html ((:table :class "login-images")
-			  (dolist (row rows)
-			    (html
-			     (:tr (loop for (user image) in row
-					do (html
-					    (:td
-					     ((:a :href "#"
-						  :onClick (format nil"javascript:document.forms[0].elements['__username'].value='~a'" (user-login user)))
-					      ((:img :src (format nil "/image/~a/thumbnail,,120,120"
-								  (store-object-id image)))))))))))))))
-	       (when login-failed-message
-		 (html (:p (:princ-safe login-failed-message))))
-	       (:table
-		(:tr ((:td :colspan "2") "please log in to " (:princ-safe (website-name *website*))))
-		(:tr (:td "username") (:td ((:input :type "text" :name "__username" :size "20"))))
-		(:tr (:td "password") (:td ((:input :type "password" :name "__password" :size "20")))))
-	       ((:input :type "submit" :name "login" :value " login "))
-	       ((:input :type "button" :name "info" :value " info " :onclick "self.location.href='/info'"))
-	       ((:input :type "button" :name "message" :value "message" :onclick "self.location.href='/message'"))))))))))))
   
-(defmethod handle ((page-handler logout-handler) req)
+(defclass logout-handler (page-handler)
+  ())
+
+(defmethod handle ((handler logout-handler) req)
   (bknr.web::drop-session (bknr-request-session req))
-  (with-query-params (req url)
+  (format t "url: ~A referer: ~A~%" (query-param req "url") (header-slot-value req :referer))
+  (let ((url (or (query-param req "url")
+                 (header-slot-value req :referer))))
     (if url
-	(redirect url req)
-	(progn (with-bknr-page (req :title "logged out")
-		 (html (:h2 "you are logged out")))
-	       (change-class req 'http-request)))))
+        (redirect url req)
+        (progn (with-bknr-page (req :title "logged out")
+                 (html (:h2 "you are logged out")))
+               (change-class req 'http-request)))))
 
 (defclass user-handler (edit-object-handler)
   ((require-user-flag :initform :admin)))
@@ -179,5 +126,4 @@
 
 (define-bknr-webserver-module user
     ("/user" user-handler)
-  ("/login" login-handler)
-  ("/logout" logout-handler))
+  ("/logout" logout-handler))
\ No newline at end of file

Modified: trunk/bknr/src/web/web-macros.lisp
===================================================================
--- trunk/bknr/src/web/web-macros.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/web-macros.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -94,16 +94,18 @@
      (session-info)))))
 
 (defun show-error-page (error)
-  (html
-   (princ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" *html-stream*)
-   (princ #\Newline *html-stream*)
-   (:html
-    (:head
-     (header :title "Error processing your request"))
-    ((:body :class "cms")
-     (:h1 "Error processing your request")
-     (:p "While processing your request, an error occured:")
-     (:pre (:princ-safe error))))))
+  (if (website-template-handler *website*)
+      (send-error-response (website-template-handler *website*) *req* (princ-to-string error))
+      (html
+       (princ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" *html-stream*)
+       (princ #\Newline *html-stream*)
+       (:html
+        (:head
+         (header :title "Error processing your request"))
+        ((:body :class "cms")
+         (:h1 "Error processing your request")
+         (:p "While processing your request, an error occured:")
+         (:pre (:princ-safe error)))))))
 
 (defun show-page-with-error-handlers (fn req &key response title
 				      (show-page (website-show-page-function *website*))
@@ -120,7 +122,7 @@
 	    (with-bknr-http-response (req :content-type "text/html; charset=UTF-8" :response response)
 	      (with-http-body (req *ent*)
 		(princ body *html-stream*))))
-	(serious-condition (c) 
+	(serious-condition (c)
 	  (with-bknr-http-response (req :content-type "text/html; charset=UTF-8" :response *response-internal-server-error*)
 	    (with-http-body (req *ent*)
 	      (funcall show-error-page c)))))))
@@ -150,5 +152,5 @@
     (warn , at warning)))
 
 (defmacro cmslink (url &body body)
-  `(html ((:a :class "cmslink" :href ,url)
+  `(html ((:a :class "cmslink" :href (website-make-path *website* ,url))
 	  , at body)))

Modified: trunk/bknr/src/web/web-utils.lisp
===================================================================
--- trunk/bknr/src/web/web-utils.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/web-utils.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -2,6 +2,8 @@
 
 (enable-interpol-syntax)
 
+(defstruct upload name pathname content-type)
+
 (defgeneric object-url (obj))
 (defgeneric edit-object-url (obj))
 (defgeneric html-link (obj))
@@ -31,7 +33,6 @@
       (loop
        (multiple-value-bind (kind part-name file-name content-type)
 	   (parse-multipart-header (get-multipart-header request))
-	 (declare (ignore content-type))
 	 (case kind
 	   (:eof (return))
 	   (:data (push (cons part-name (get-all-multipart-data request)) parameters))
@@ -53,35 +54,54 @@
 							 :if-exists :error
 							 :element-type '(unsigned-byte 8))
 			   (write-sequence contents temporary-file))
-			 (push (cons part-name uploaded-file-name) uploaded-files))))))
+			 (push (make-upload :name part-name :pathname uploaded-file-name
+					    :content-type content-type) uploaded-files))))))
 	   (t
 	    (get-all-multipart-data request :limit *upload-file-size-limit*)))))
       (when file-size-limit-reached
 	(error "upload file size limit exceeded"))
-      (setf (getf (request-reply-plist request) 'bknr-parsed-parameters) parameters)
+      (setf (getf (request-reply-plist request) 'bknr-parsed-body-parameters) parameters)
       (setf (getf (request-reply-plist request) 'uploaded-files) uploaded-files))))
 
 (defun get-urlencoded-form-data (request)
   (loop for name-value in (form-urlencoded-to-query (get-request-body request))
-	do (push name-value (getf (request-reply-plist request) 'bknr-parsed-parameters))))
+	do (push name-value (getf (request-reply-plist request) 'bknr-parsed-body-parameters))))
 
-(defun get-parameters-from-body (request)
+(defun parse-request-body (request &key uploads)
+  (let ((content-type (header-slot-value request :content-type)))
+    (cond
+      ((null content-type)
+       nil)
+      ((scan #?r"^(?i)application/x-www-form-urlencoded" content-type)
+       (get-urlencoded-form-data request))
+      ((and uploads (scan #?r"^(?i)multipart/form-data" content-type))
+       (get-multipart-form-data request)))))
+
+(defgeneric get-parameters-from-body (request)
+  (:documentation "Generic function to read in the parameters of a
+request.  This is a generic function because unauthorized request
+bodies must not be completely read as that is done in the request
+authorization phase.  In this phase, processing must be fast and may
+not return errors due to exceeded upload file size limits."))
+
+(defmethod get-parameters-from-body ((request http-request))
+  (parse-request-body request :uploads nil))
+
+(defmethod get-parameters-from-body ((request bknr-request))
   (unless (getf (request-reply-plist request) 'body-parsed)
-    (setf (getf (request-reply-plist request) 'bknr-parsed-parameters) nil)
-    (let ((content-type (header-slot-value request :content-type)))
-      (cond
-	((null content-type)
-	 nil)
-	((scan #?r"^(?i)application/x-www-form-urlencoded" content-type)
-	 (get-urlencoded-form-data request))
-	((scan #?r"^(?i)multipart/form-data" content-type)
-	 (get-multipart-form-data request))))
+    (setf (getf (request-reply-plist request) 'bknr-parsed-body-parameters) nil)
+    (parse-request-body request :uploads t)
     (setf (getf (request-reply-plist request) 'body-parsed) t)))
 
-(defun request-uploaded-files (request)
-  "Return a list of conses (NAME . PATHNAME) which contains files uploaded by the user"
+(defun request-uploaded-files (request &key all-info)
+  "Return a list of conses (NAME . PATHNAME) which contains files uploaded by the user.
+If :all-info is non-nil, the full upload file information is returned as a list"
   (get-parameters-from-body request)
-  (getf (request-reply-plist request) 'uploaded-files))
+  (if all-info
+      (getf (request-reply-plist request) 'uploaded-files)
+      (mapcar (lambda (upload) (cons (upload-name upload)
+				     (upload-pathname upload)))
+	      (getf (request-reply-plist request) 'uploaded-files))))
 
 (defun request-uploaded-file (request parameter-name)
   (cdr (find parameter-name (request-uploaded-files request) :test #'equal :key #'car)))
@@ -92,10 +112,17 @@
 body is present in the request, any uploaded files are saved in a temporary file and noted in the
 request's plist.  Uploaded files will be automatically deleted by the with-bknr-http-response
 macro after the request body has been executed."
-  (get-parameters-from-body request)
-  (remove "" (append (form-urlencoded-to-query (uri-query (request-uri request)))
-		     (getf (request-reply-plist request) 'bknr-parsed-parameters))
-	  :key #'cdr :test #'string-equal))
+  (unless (getf (request-reply-plist request) 'bknr-parsed-parameters)
+    (let ((request-charset (or (register-groups-bind (charset) (#?r".*charset=\"?([^\"; ]+).*" (header-slot-value request :content-type)) charset)
+			       "utf-8")))
+      (get-parameters-from-body request)
+      (setf (getf (request-reply-plist request) 'bknr-parsed-parameters)
+	    (mapcar (lambda (param) (cons (car param)
+					  (iconv:iconv request-charset "utf-8" (cdr param))))
+		    (remove "" (append (form-urlencoded-to-query (uri-query (request-uri request)))
+				       (getf (request-reply-plist request) 'bknr-parsed-body-parameters))
+			    :key #'cdr :test #'string-equal)))))
+  (getf (request-reply-plist request) 'bknr-parsed-parameters))
 
 (defun query-param (request param-name)
   (let ((value (cdr (assoc param-name (all-request-params request) :test #'string-equal))))
@@ -266,4 +293,4 @@
 	(princ " />"))))
 
 (defun encode-urlencoded (string)
-  (regex-replace-all #?r"\+" (net.aserve::encode-form-urlencoded string) "%20"))
+  (regex-replace-all #?r"\+" (net.aserve::encode-form-urlencoded string) "%20"))
\ No newline at end of file

Modified: trunk/bknr/src/web/web-visitor.lisp
===================================================================
--- trunk/bknr/src/web/web-visitor.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/web/web-visitor.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -35,7 +35,7 @@
 		 (html-link (web-visitor-event-user event)))
 	       " from "
 	       (when (web-visitor-event-host event)
-		 (cmslink (format nil "/host?host=~a" (host-ip-address (web-visitor-event-host event)))
+		 (cmslink (format nil "host?host=~a" (host-ip-address (web-visitor-event-host event)))
 		   (:princ-safe (host-name (web-visitor-event-host event)))))))
 
 (defmethod as-xml ((event web-visitor-event))

Modified: trunk/bknr/src/xhtmlgen/xhtmlgen.lisp
===================================================================
--- trunk/bknr/src/xhtmlgen/xhtmlgen.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/xhtmlgen/xhtmlgen.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -56,10 +56,6 @@
 (defun make-sink-for-latin1-strings (stream)
   (cxml:make-recoder (cxml:make-character-stream-sink stream :canonical nil :indentation 3)
 		     #'cxml::string-rod))
-#+rune-is-character
-(defun make-sink-for-character-strings (stream)
-  (cxml:make-recoder (cxml:make-character-stream-sink stream :canonical nil :indentation 3)
-		     #'cxml::string-rod))
 
 #-rune-is-character
 (defvar *make-sink-for-internal-strings-fn* #'make-sink-for-utf8-strings)
@@ -74,29 +70,23 @@
     (:latin-1 (setf *make-sink-for-internal-strings-fn* #'make-sink-for-latin1-strings))
     (:utf-8 (setf *make-sink-for-internal-strings-fn* #'make-sink-for-utf8-strings))))
 
-#+sbcl
-;temporary, until we fix sbcl flush problem
-(defun flush-sink (recoder)
-  (runes::flush-ystream (cxml::sink-ystream (cxml::chained-handler recoder))))
-
-
 (defmacro html (&rest forms &environment env)
   ;; just emit html to the current stream
   `(let ((*html-sink* (if (boundp '*html-sink*)
 			  *html-sink*
 			  #+rune-is-character
-			  (make-sink-for-character-strings net.html.generator:*html-stream*)
+			  (cxml:make-character-stream-sink net.html.generator:*html-stream* :canonical nil :indentation 3)
 			  #-rune-is-character
 			  (make-sink-for-internal-strings net.html.generator:*html-stream*))))
-    ,(process-html-forms forms env) #+sbcl (flush-sink *html-sink*)))
+    ,(process-html-forms forms env)))
 
 (defmacro html-stream (stream &rest forms &environment env)
   `(let ((*html-sink*
 	  #+rune-is-character
-	  (make-sink-for-character-strings ,stream)
+	  (cxml:make-character-stream-sink ,stream :canonical nil :indentation 3)
 	  #-rune-is-character
 	  (make-sink-for-internal-strings ,stream)))
-    ,(process-html-forms forms env) #+sbcl (flush-sink *html-sink*)))
+    ,(process-html-forms forms env)))
 
 (defun get-process (form)
   (let ((ent (gethash form *html-process-table*)))
@@ -169,13 +159,7 @@
   ;; das ist fuer WPDISPLAY
   (let ((s (cxml::chained-handler *html-sink*)))
     (cxml::maybe-close-tag s)
-    (map nil 
-	 (lambda (c) 
-	       #-sbcl
-	       (cxml::write-rune (char-code c) s)
-	       #+sbcl
-	       (cxml::write-rune c (cxml::sink-ystream s)))
-	 str)))
+    (map nil (lambda (c) (cxml::write-rune (char-code c) s)) str)))
 
 (defun princ-http (val)
   #+(or)

Modified: trunk/bknr/src/xml-impex/package.lisp
===================================================================
--- trunk/bknr/src/xml-impex/package.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/xml-impex/package.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -20,5 +20,9 @@
 	   #:write-to-xml
 	   #:xml-class-importer
 
+           #:with-xml-export
+           #:with-xml-export*
+           #:write-to-xml
+
 	   #:create-instance
 	   #:set-slot-value))

Modified: trunk/bknr/src/xml-impex/tutorial.lisp
===================================================================
--- trunk/bknr/src/xml-impex/tutorial.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/xml-impex/tutorial.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -31,9 +31,9 @@
 ;;;# Obtaining and loading BKNR XML import/export
 ;;;
 ;;; You can obtain the current CVS sources of BKNR by following the
-;;; instructions at `http://bknr.net/blog/bknr-devel'. Add the `src'
-;;; directory of BKNR to your `asdf:*central-registry*', and load the
-;;; indices module by evaluating the following form:
+;;; instructions at `http://bknr.net/'. Add the `src' directory of
+;;; BKNR to your `asdf:*central-registry*', and load the indices
+;;; module by evaluating the following form:
 
 (asdf:oos 'asdf:load-op :bknr-impex)
 
@@ -90,8 +90,7 @@
 ;;; class, and by specifying the XML element corresponding to the
 ;;; class. We also annotate the slot definitions.
 
-(defvar *tutorial-dtd*
-  (cxml:parse-dtd-file "xml-impex/tutorial.dtd"))
+(defvar *tutorial-dtd* "xml-impex/tutorial.dtd")
 
 (defclass book ()
   ((author :initarg :author :reader book-author
@@ -103,7 +102,7 @@
    (title :initarg :title :reader book-title
 	  :element "title"))
   (:metaclass xml-class)
-  (:dtd *tutorial-dtd*)
+  (:dtd-name *tutorial-dtd*)
   (:element "book"))
 
 ;;; We can now read the XML file containing the book definitions. As
@@ -161,7 +160,7 @@
    (title :initarg :title :reader book-title
 	  :element "title"))
   (:metaclass xml-class)
-  (:dtd *tutorial-dtd*)
+  (:dtd-name *tutorial-dtd*)
   (:element "book"))
 
 ;;; We can now import our XML file and the indices will automatically
@@ -243,8 +242,7 @@
 
 ;;; We can then write the following class definitions:
 
-(defvar *test-dtd*
-  (cxml:parse-dtd-file #p"xml-impex/tutorial2.dtd"))
+(defvar *test-dtd* "xml-impex/tutorial2.dtd")
 
 (defclass test-object ()
   ((id :initarg :id :attribute "id"
@@ -252,7 +250,7 @@
        :index-type unique-index :index-reader object-with-id
        :index-values all-objects))
   (:metaclass xml-class)
-  (:dtd *test-dtd*)
+  (:dtd-name *test-dtd*)
   (:element nil))
 
 (defmethod print-object ((object test-object) stream)
@@ -264,7 +262,7 @@
        :index-reader test-with-id
        :index-values all-tests))
   (:metaclass xml-class)
-  (:dtd *test-dtd*)
+  (:dtd-name *test-dtd*)
   (:element "test"))
 
 (defclass test2 (test-object)
@@ -272,7 +270,7 @@
        :index-reader test2-with-id
        :index-values all-test2s))
   (:metaclass xml-class)
-  (:dtd *test-dtd*)
+  (:dtd-name *test-dtd*)
   (:element "test2"))
 
 (defclass test3 (test-object)
@@ -280,7 +278,7 @@
        :index-reader test3-with-id
        :index-values all-test3s))
   (:metaclass xml-class)
-  (:dtd *test-dtd*)
+  (:dtd-name *test-dtd*)
   (:element "test3"))
 
 ;;; When we parse a sample file, we get the following results:
@@ -331,8 +329,7 @@
 
 ;;; we can write the following class definition:
 
-(defvar *adult-dtd*
-  (cxml:parse-dtd-file "xml-impex/tutorial3.dtd"))
+(defvar *adult-dtd* "xml-impex/tutorial3.dtd")
 
 (defclass adult ()
   ((name :initarg :name :attribute "name"
@@ -340,7 +337,7 @@
    (children :initarg :children :element "child"
 	     :reader adult-children))
   (:metaclass xml-class)
-  (:dtd *adult-dtd*)
+  (:dtd-name *adult-dtd*)
   (:element "adult"))
 
 (defmethod print-object ((adult adult) stream)
@@ -351,7 +348,7 @@
   ((name :initarg :name :attribute "name"
 	 :reader child-name))
   (:metaclass xml-class)
-  (:dtd *adult-dtd*)
+  (:dtd-name *adult-dtd*)
   (:element "child"))
 
 (defmethod print-object ((child child) stream)
@@ -403,7 +400,7 @@
    (parent :initarg :parent :parent t
 	   :reader child-parent))
   (:metaclass xml-class)
-  (:dtd *adult-dtd*)
+  (:dtd-name *adult-dtd*)
   (:element "child"))
 
 (setf *adults* 
@@ -429,8 +426,7 @@
                       book-id CDATA #REQUIRED
                       reviewer CDATA #REQUIRED>
 
-(defvar *resume-dtd*
-  (cxml:parse-dtd-file "xml-impex/tutorial4.dtd"))
+(defvar *resume-dtd* "xml-impex/tutorial4.dtd")
 
 (defclass book-resume ()
   ((id :initarg :id :attribute "id"
@@ -444,7 +440,7 @@
    (review :initarg :review :body t
 	   :reader book-resume-review))
   (:metaclass xml-class)
-  (:dtd *resume-dtd*)
+  (:dtd-name *resume-dtd*)
   (:element "book-resume"))
 
 ;;; Parsing the following file gives the results:
@@ -498,8 +494,7 @@
 
 ;;; We can write the following class definitions:
 
-(defparameter *book2-dtd*
-  (cxml:parse-dtd-file "xml-impex/tutorial5.dtd"))
+(defparameter *book2-dtd* "xml-impex/tutorial5.dtd")
 
 (defclass author ()
   ((id :initarg :id :reader author-id
@@ -509,7 +504,7 @@
    (name :initarg :name :reader author-name
 	 :element "name"))
   (:metaclass xml-class)
-  (:dtd *book2-dtd*)
+  (:dtd-name *book2-dtd*)
   (:element "author"))
 
 (defmethod print-object ((author author) stream)
@@ -528,7 +523,7 @@
    (title :initarg :title :reader book-title
 	  :element "title"))
   (:metaclass xml-class)
-  (:dtd *book2-dtd*)
+  (:dtd-name *book2-dtd*)
   (:element "book"))
        
 ;;; We can then read the following XML file:

Modified: trunk/bknr/src/xml-impex/xml-class.lisp
===================================================================
--- trunk/bknr/src/xml-impex/xml-class.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/xml-impex/xml-class.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,41 +1,68 @@
 (in-package :bknr.impex)
 
 (defclass xml-class (indexed-class)
-  ((dtd :initarg :dtd :initform nil :accessor xml-class-dtd)
-   (element :initarg :element :initform nil :accessor xml-class-element)))
+  ((element :initarg :element :initform nil :accessor xml-class-element)
+   (unique-id-slot   :initarg :unique-id-slot :initform nil
+		     :documentation "if set to a slot name, this
+signals that the slot can be used as a unique id to refer to an
+instance of the object in a n XML update operation")
+   (unique-id-reader :initarg :unique-id-reader :initform nil
+		     :documentation "if set to a function, this
+signals that the function can be used as a unique index-reader when
+used in XML update operations.")))
 
+(defmethod xml-class-unique-id-slot ((class xml-class))
+  (first (slot-value class 'unique-id-slot)))
+
+(defmethod xml-class-unique-id-reader ((class xml-class))
+  (eval (first (slot-value class 'unique-id-reader))))
+
 (defmethod validate-superclass ((sub xml-class) (super indexed-class))
   t)
 
+(defun princ-to-string-1 (object)
+  (when object
+    (princ-to-string object)))
+
 (defclass xml-direct-slot-definition (bknr.indices::index-direct-slot-definition)
-  ((attribute   :initarg :attribute
-		:initform nil
-		:documentation "Name of attribute to use to impex the slot.")
-   (element     :initarg :element
-		:initform nil
-		:documentation "Name of the element to use to impex the slot.")
-   (body        :initarg :body
-		:initform nil
-		:documentation "Whether the value of the slot has to be stored in the body of the class element.")
-   
-   (parser      :initarg :parser
-		:initform #'identity
-		:documentation "Function used to parse the slot value from the XML string.")
-   (serializer  :initarg :serializer
-		:initform #'princ-to-string
-		:documentation "Function used to serialize the slot back to XML.")
-   
+  ((attribute :initarg :attribute
+              :initform nil
+              :documentation "Name of attribute to use to impex the slot.")
+   (element :initarg :element
+            :initform nil
+            :documentation "Name of the element to use to impex the slot.")
+   (body :initarg :body
+         :initform nil
+         :documentation "Whether the value of the slot has to be stored in the body of the class element.")
+   (containment :initarg :containment
+                :initform nil
+                :documentation "Containment specification for this slot, either nil, :* or :+")
+   (parser :initarg :parser
+           :initform #'identity
+           :documentation "Function used to parse the slot value from the XML string.")
+   (serializer :initarg :serializer
+               :initform #'princ-to-string-1
+               :documentation "Function used to serialize the slot back to XML.")
+
+   (object-id-slot :initarg :object-id-slot
+                   :initform nil
+                   :documentation "If this slot is non-nil, the slot's
+value is considered to be the unique object id of the object.  During
+export, objects which have an object-id-slot will only be serialized
+once.  Further occurances of the same object will be referenced
+through the object-id-slot (either an element or an attribute)")
+
    (id-to-object :initarg :id-to-object
 		 :initform nil
 		 :documentation "Function used to get the value pointed to by the ID.")
    (object-to-id :initarg :object-to-id
 		 :initform nil
 		 :documentation "Function used to get the ID of the object stored in the slot.")
-   
-   (parent      :initarg :parent
-		:initform nil
-		:documentation "Slot is a pointer to the parent object.")))
 
+   (parent :initarg :parent
+           :initform nil
+           :documentation "Slot is a pointer to the parent object.")))
+
 (defclass xml-effective-slot-definition (bknr.indices::index-effective-slot-definition)
   ((body :initform nil)
    (element :initform nil :reader xml-effective-slot-definition-element)
@@ -43,6 +70,8 @@
 
    (parser :initform nil :reader xml-effective-slot-definition-parser)
    (serializer :initform nil :reader xml-effective-slot-definition-serializer)
+
+   (object-id-slot :initform nil :reader xml-effective-slot-definition-object-id-slot)
    
    (id-to-object :initform nil)
    (object-to-id :initform nil)
@@ -53,62 +82,15 @@
 
 (defmethod print-object ((slot xml-effective-slot-definition) stream)
   (print-unreadable-object (slot stream :type t :identity t)
-    (format stream "~A (~A ~S)" (slot-definition-name slot)
-	    (with-slots (attribute element body parent) slot
+    (with-slots (attribute element body parent) slot
+      (format stream "~A (~A~@[ ~S~])" (slot-definition-name slot)
 	      (cond (attribute "ATTRIBUTE")
 		    (element "ELEMENT")
 		    (body "BODY")
 		    (parent "PARENT")
-		    (t "UNKNOWN")))
-	    (with-slots (attribute element body) slot
-	      (cond ((and attribute (typep attribute 'cxml::attdef))
-		     (cxml::rod-string (cxml::attdef-name attribute)))
-		    (attribute attribute)
-		    ((and element (typep element 'cxml::elmdef))
-		     (cxml::rod-string (cxml::elmdef-name element)))
-		    (element element)
-		    (t ""))))))
+		    (t "UNKNOWN"))
+	      (or attribute element)))))
 
-(defun get-dtd-elmdef (dtd elmdef)
-  (typecase elmdef
-    (string (unless dtd
-	      (error "Can not find elmdef ~a in dtd ~A." elmdef dtd))
-	    (cxml::find-element (cxml::string-rod elmdef) dtd))
-    (cxml::elmdef elmdef)
-    (t (let ((elmdef (eval elmdef)))
-	 (unless (typep elmdef 'cxml::elmdef)
-	   (error "Elmdef ~A is not a CXML elmdef." elmdef))
-	 elmdef))))
-
-(defun get-dtd (dtd)
-  (cond ((or (stringp dtd)
-	     (pathnamep dtd))
-	 (cxml:parse-dtd-file dtd))
-	((typep dtd 'cxml::dtd) dtd)
-	(t (let ((dtd (eval dtd)))
-	     (unless (typep dtd 'cxml::dtd)
-	       (error "DTD ~A is not a CXML dtd." dtd))
-	     dtd))))
-  
-(defun get-elmdef-attribute (elmdef attribute)
-  (typecase attribute
-    (string (unless elmdef
-	      (error "Can not find attribute ~a in elmdef ~a." attribute elmdef))
-	    (cxml::find-attribute elmdef (cxml::string-rod attribute)))
-    (cxml::attdef attribute)
-    (t (let ((attribute (eval attribute)))
-	 (unless (typep attribute 'cxml::attdef)
-	   (error "Attribute ~A is not a CXML attdef." attribute))
-	 attribute))))
-
-(defmethod initialize-elmdef ((class xml-class) dtd elmdef)
-  (let* ((dtd (get-dtd dtd))
-	 (elmdef (when elmdef (get-dtd-elmdef dtd elmdef))))
-    (unless elmdef
-      (error "Could not find an element definition for ~A." class))
-    (setf (xml-class-dtd class) dtd
-	  (xml-class-element class) elmdef)))
-
 (defmethod xml-class-attribute-slots ((class xml-class))
   (remove-if #'(lambda (slot)
 		 (or (not (typep slot 'xml-effective-slot-definition))
@@ -131,12 +113,12 @@
 (defmethod xml-class-find-attribute-slot ((class xml-class) attribute)
   (find attribute (xml-class-attribute-slots class)
 	:test #'string-equal
-	:key #'(lambda (slot) (cxml::rod-string (cxml::attdef-name (slot-value slot 'attribute))))))
+	:key #'(lambda (slot) (slot-value slot 'attribute))))
 
 (defmethod xml-class-find-element-slot ((class xml-class) element)
   (find element (xml-class-element-slots class)
 	:test #'string-equal
-	:key #'(lambda (slot) (cxml::rod-string (cxml::elmdef-name (slot-value slot 'element))))))
+	:key #'(lambda (slot) (slot-value slot 'element))))
 
 (defmethod xml-class-parent-slot ((class xml-class))
   (let ((parent-slots
@@ -148,86 +130,20 @@
       (error "Class ~A has more than one parent slot: ~A." class parent-slots))
     (first parent-slots)))
 
-(defmethod elmdef-children ((elmdef cxml::elmdef))
-  (let (result)
-    (labels ((elmdef-children-rec (content containment)
-	       (cond ((and (listp content)
-			   (member (first content) '(cxml::and cxml::or)))
-		      (dolist (child (cdr content))
-			(elmdef-children-rec child containment)))
-		     ((and (listp content)
-			   (eql (first content) 'cxml::+))
-		      (dolist (child (cdr content))
-			(elmdef-children-rec child :+)))
-		     ((and (listp content)
-			   (eql (first content) 'cxml::*))
-		      (dolist (child (cdr content))
-			(elmdef-children-rec child :*)))
-		     ((and (listp content)
-			   (eql (first content) 'cxml::?))
-		      (dolist (child (cdr content))
-			(elmdef-children-rec child :optional)))
-		     ((listp content)
-		      (error "Unknown content form ~S (missing element declaration for ~S in DTD?)." content (cxml::elmdef-name elmdef)))
-		     ((eql content :pcdata))
-		     ((eql content :empty))
-		     (t (push (list content containment) result)))))
-      (elmdef-children-rec (cxml::elmdef-content elmdef) :single)
-      (nreverse result))))
-		      
-;;; called multiple times  
-(defmethod compute-slots :around ((class xml-class))
-  #+nil
-  (format t "around dtd ~A~%" (xml-class-dtd class))
-  (when (and (not (typep (xml-class-dtd class) 'cxml::dtd))
-	     (xml-class-dtd class))
-    (initialize-elmdef class (first (xml-class-dtd class))
-		       (first (xml-class-element class))))
-  (call-next-method))
+(defmethod initialize-instance :after ((class xml-class) &key element &allow-other-keys)
+  (setf (xml-class-element class) (or (first element) (string-downcase (class-name class))))
+  (xml-class-finalize class))
 
+(defmethod reinitialize-instance :after ((class xml-class) &key element &allow-other-keys)
+  (setf (xml-class-element class) (or (first element) (string-downcase (class-name class))))
+  (xml-class-finalize class))
+
 (defmethod xml-class-finalize ((class xml-class))
   (unless (class-finalized-p class)
     (finalize-inheritance class))
 
-  (let ((slots (class-slots class))
-	(elmdef (xml-class-element class)))
-    (unless elmdef
-      (return-from xml-class-finalize))
+  (class-slots class))
 
-    #+nil
-    (format t "~S slots attributes ~S~%" slots (xml-class-attribute-slots class))
-    ;;; check attributes
-    (dolist (attr (cxml::elmdef-attributes elmdef))
-      (let ((attr-name (cxml::rod-string (cxml::attdef-name attr))))
-	(when (eql (cxml::attdef-default attr) :required)
-	  (let ((slot (xml-class-find-attribute-slot class attr-name)))
-	    (when (not slot)
-	      (warn "Could not find slot for required attribute ~A." attr-name))))))
-    ;;; check elements
-    (dolist (child (elmdef-children elmdef))
-      (let* ((child-name (cxml::rod-string (first child)))
-	     (child-containment (second child))
-	     (slot (xml-class-find-element-slot class child-name)))
-	(if slot
-	    (with-slots (containment required-p) slot
-	      (if containment
-		  (when (not (eql containment child-containment))
-		    (error "Slot containment ~A is not the same as the child containment ~A."
-			   containment child-containment))
-		  (setf containment child-containment))
-	      (when (member child-containment '(:single :+))
-		(setf required-p t)))
-	    (when (member child-containment '(:single :+))
-	      (warn "Could not find a slot for the child element ~A with containment ~A."
-		     child-name child-containment)))))
-    slots))
-
-(defmethod initialize-instance :after ((class xml-class) &key &allow-other-keys)
-  (xml-class-finalize class))
-
-(defmethod reinitialize-instance :after ((class xml-class) &key &allow-other-keys)
-  (xml-class-finalize class))
-
 (defmethod direct-slot-definition-class ((class xml-class) &key parent attribute element body &allow-other-keys)
   (if (or attribute element body parent)
       'xml-direct-slot-definition
@@ -237,58 +153,46 @@
   (declare (ignore initargs))
   'xml-effective-slot-definition)
 
-(defmethod compute-effective-slot-definition :around
-    ((class xml-class) name direct-slots)
+(defmethod compute-effective-slot-definition :around ((class xml-class) name direct-slots)
   (let* ((xml-directs (remove-if-not #'(lambda (class) (typep class 'xml-direct-slot-definition))
 				     direct-slots))
 	 (xml-direct (first xml-directs)))
+
     (when (> (length xml-directs) 1)
-      (error "Can't overload slots with xml options."))
+      (dolist (slot-def (class-slots (class-of (first xml-directs))))
+        (unless (apply #'equal (mapcar #'(lambda (slot) (slot-value slot (slot-definition-name slot-def))) xml-directs))
+          (warn "Possibly conflicting slot options for overloaded slot ~A." (slot-definition-name slot-def)))))
 
     (let ((normal-slot (call-next-method)))
       (when (and xml-direct
-		 (typep normal-slot 'xml-effective-slot-definition)
-		 (xml-class-element class))
+		 (typep normal-slot 'xml-effective-slot-definition))
 	(with-slots (attribute element body parent) xml-direct
-	  (let ((dtd (xml-class-dtd class)))
-	    (unless (or element attribute body parent)
-	      (error "Could not find element or attribute for slot ~A." name))
-	    (when (> (length (remove nil (list parent element attribute body))) 1)
-	      (error "Only one of ELEMENT, ATTRIBUTE, PARENT or BODY is possible for a slot definition."))
+	  (when (> (length (remove nil (list parent element attribute body))) 1)
+	    (error "Only one of ELEMENT, ATTRIBUTE, PARENT or BODY is possible for a slot definition."))
+	  (unless (or body parent)
+	    (unless (or element attribute)
+	      (setf element (string-downcase name)))
 	    (when element
-	      (setf element (get-dtd-elmdef dtd element)))
+	      (setf element (if (eq t element) (string-downcase name) element)))
 	    (when attribute
-	      (setf attribute (get-elmdef-attribute (xml-class-element class)
-						    attribute)))
-	    (unless (or element attribute body parent)
+	      (setf attribute (if (eq t attribute) (string-downcase name) attribute)))
+	    (unless (or element attribute)
 	      (error "Could not find element or attribute for slot ~A." name))))
-	
+
+        ;; copy direct-slot-definition slots to effective-slot-definition
 	(dolist (slot '(parser serializer body id-to-object object-to-id
-			parent attribute element))
+			parent attribute element containment))
 	  (setf (slot-value normal-slot slot)
 		(slot-value xml-direct slot))))
 
-      (dolist (slot '(parser serializer object-to-id id-to-object) normal-slot)
+      (dolist (slot '(parser serializer object-id-slot object-to-id id-to-object) normal-slot)
 	(let ((value (slot-value normal-slot slot)))
 	  (when value
 	    (setf (slot-value normal-slot slot)
 		  (eval value)))))
-      
-      ;;; XXX check emptyness of element
-      (with-slots (attribute element containment required-p) normal-slot
-	(when attribute
-	  (when (eql (cxml::attdef-default attribute) :required)
-	    (setf required-p t))))
-      
+	
       normal-slot)))
 
-(defmethod xml-class-reload-dtd ((class xml-class) dtd &optional element)
-  (let ((element (if element
-		     element
-		     (cxml::rod-string (cxml::elmdef-name (xml-class-element class))))))
-    (initialize-elmdef class dtd element)
-    class))
-
 (defmethod xml-object-check-validity (object)
   (let ((class (class-of object)))
     (unless (typep class 'xml-class)

Modified: trunk/bknr/src/xml-impex/xml-export.lisp
===================================================================
--- trunk/bknr/src/xml-impex/xml-export.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/xml-impex/xml-export.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,83 +7,106 @@
     (when serializer
       (setf value (funcall serializer value)))))
 
-(defun write-to-xml (object &key sink name (string-rod-fn #'cxml::string-rod))
-  (unless sink
-    (setf sink (if (boundp 'cxml::*sink*)
-		   cxml::*sink*
-		   (cxml:make-character-stream-sink *standard-output*
-						    :indentation 3 :canonical nil))))
+(defvar *objects-written*)
 
-  (cond ((listp object)
-	 (unless name
-	   (error "No element name was given~%"))
-	 (sax:start-element sink nil nil (funcall string-rod-fn name) nil)
-	 (dolist (obj object)
-	   (write-to-xml obj :sink sink :string-rod-fn string-rod-fn))
-	 (sax:end-element sink nil nil (funcall string-rod-fn name)))
+(defmacro with-xml-export* ((&key output indentation canonical) &body body)
+  `(let ((*objects-written* (make-hash-table :test #'equal))
+         (cxml::*sink* (cxml:make-character-stream-sink ,output
+                                                        :indentation ,indentation :canonical ,canonical)))
+     , at body))
 
-	((typep (class-of object) 'xml-class)
-	 (xml-object-check-validity object)
-	 (let ((class (class-of object)))
-	   (unless (typep class 'xml-class)
-	     (error "~a is not of metaclass XML-CLASS." object))
-	   (unless (xml-class-element class)
-	     (error "Class ~a has no element definition." class))
-	   
-	   (let* ((attr-slots (xml-class-attribute-slots class))
-		  (elt-slots (xml-class-element-slots class))
-		  (body-slot (xml-class-body-slot class))
-		  (qname (cxml::elmdef-name (xml-class-element class)))
-		  ;; attributes
-		  (attributes (loop for slot in attr-slots
-				 for name = (slot-definition-name slot)
-				 for attdef = (xml-effective-slot-definition-attribute slot)
-				 when (and (slot-boundp object name)
-					   (slot-value object name))
-				 collect (sax:make-attribute
-					  :qname (cxml::attdef-name attdef)
-					  :value
-					  (funcall string-rod-fn
-						   (slot-serialize-value slot (slot-value object name)))))))
-	     (sax:start-element sink nil nil qname attributes)
+(defmacro with-xml-export (nil &body body)
+  `(with-xml-export* (:output *standard-output* :indentation 1 :canonical nil)
+     , at body))
 
-	     ;; elements
-	     (dolist (slot elt-slots)
-	       (let ((name (slot-definition-name slot))
-		     (elmdef-name (cxml::rod-string
-				   (cxml::elmdef-name
-				    (xml-effective-slot-definition-element slot))))
-		     (containment (xml-effective-slot-definition-containment slot)))
-		 (when (slot-boundp object name)
-		   (if (member containment '(:+ :*))
-		       (dolist (child (slot-value object name))
-			 (if (typep (class-of child) 'xml-class)
-			     (write-to-xml child :sink sink :string-rod-fn string-rod-fn)
-			     (write-to-xml (slot-serialize-value slot child)
-					   :sink sink :name elmdef-name :string-rod-fn string-rod-fn)))
-		       (let ((child (slot-value object name)))
-			 (if (typep (class-of child) 'xml-class)
-			     (write-to-xml child :sink sink :string-rod-fn string-rod-fn)
-			     (write-to-xml (slot-serialize-value slot child)
-					   :sink sink :name elmdef-name :string-rod-fn string-rod-fn)))))))
+(defgeneric write-to-xml (object &key name no-recurse)
+  (:documentation "Write object to XML stream"))
 
-	     ;; body slot
-	     (when body-slot
-	       (let ((name (slot-definition-name body-slot)))
-		 (when (slot-boundp object name)
-		   (sax:characters
-		    sink
-		    (funcall string-rod-fn
-		     (funcall (xml-effective-slot-definition-serializer body-slot)
-			      (slot-value object name)))))))
-	
-	     (sax:end-element sink nil nil qname))))
+(defmethod write-to-xml ((object (eql nil)) &key name no-recurse)
+  (declare (ignore name)))
 
-	((stringp object)
-	 (unless name
-	   (error "Can not serialize string ~A to XML without an element name." object))
-	 (sax:start-element sink nil nil (funcall string-rod-fn name) nil)
-	 (sax:characters sink (funcall string-rod-fn object))
-	 (sax:end-element sink nil nil (funcall string-rod-fn name)))
+(defmethod write-to-xml ((object list) &key (name (error "Can not serialize list to XML without an element name~%")) no-recurse)
+  (sax:start-element cxml::*sink* nil nil (cxml::string-rod name) nil)
+  (dolist (obj object)
+    (write-to-xml obj))
+  (sax:end-element cxml::*sink* nil nil (cxml::string-rod name)))
 
-	(t (error "Can not serialize unknown object ~A." object))))
+(defmethod write-to-xml ((object string) &key (name (error "Can not serialize string ~A to XML without an element name." object)) no-recurse)
+  (sax:start-element cxml::*sink* nil nil (cxml::string-rod name) nil)
+  (sax:characters cxml::*sink* (cxml::string-rod object))
+  (sax:end-element cxml::*sink* nil nil (cxml::string-rod name)))
+
+(defun write-object-reference (class object unique-id-slot-name name)
+  (let ((slotdef (find unique-id-slot-name (class-slots class) :key #'slot-definition-name)))
+    (unless (xml-effective-slot-definition-attribute slotdef)
+      (error "Slot ~A is not defined as :attribute slot and cannot be used as unique-id slot for class ~A" unique-id-slot-name (class-name class)))
+    (sax:start-element cxml::*sink* nil nil name
+                       (list (sax:make-attribute :qname (cxml::string-rod (xml-effective-slot-definition-attribute slotdef))
+                                                 :value (cxml::string-rod (slot-serialize-value slotdef (slot-value object unique-id-slot-name))))))
+    (sax:end-element cxml::*sink* nil nil name)))
+
+(defmethod write-to-xml ((object t) &key name no-recurse)
+  (let ((class (class-of object)))
+    (cond
+      ((typep class 'xml-class)
+       (xml-object-check-validity object)
+       (let ((qname (cxml::string-rod (or name (xml-class-element class)))))
+
+         ;; If this object has been serialized to the XML stream,
+         ;; write a reference to the object and return.
+
+         (with-slots (unique-id-slot) class
+           (when unique-id-slot
+             (if (gethash (slot-value object (first unique-id-slot)) *objects-written*)
+                 (progn
+                   (write-object-reference class object (first unique-id-slot) qname)
+                   (return-from write-to-xml))
+                 (setf (gethash (slot-value object (first unique-id-slot)) *objects-written*) t))))
+
+         ;; Object has not been written to the XML file or no
+         ;; unique-id-slot is defined for this class.
+
+         (let* ((attr-slots (xml-class-attribute-slots class))
+                (elt-slots (xml-class-element-slots class))
+                (body-slot (xml-class-body-slot class))
+                ;; attributes
+                (attributes (loop for slot in attr-slots
+                               for name = (slot-definition-name slot)
+                               for attdef = (cxml::string-rod (xml-effective-slot-definition-attribute slot))
+                               when (and (slot-boundp object name)
+                                         (slot-value object name))
+                               collect (sax:make-attribute
+                                        :qname attdef
+                                        :value
+                                        (cxml::string-rod
+                                         (slot-serialize-value slot (slot-value object name)))))))
+           (sax:start-element cxml::*sink* nil nil qname attributes)
+
+           ;; elements
+           (dolist (slot elt-slots)
+             (let ((name (slot-definition-name slot))
+                   (element-name (xml-effective-slot-definition-element slot))		     
+                   (containment (xml-effective-slot-definition-containment slot)))
+               (when (slot-boundp object name)
+                 (if (consp (slot-value object name))
+                     (dolist (child (slot-value object name))
+                       (if (typep (class-of child) 'xml-class)
+                           (write-to-xml child)
+                           (write-to-xml (slot-serialize-value slot child) :name element-name)))
+                     (let ((child (slot-value object name)))
+                       (if (typep (class-of child) 'xml-class)
+                           (write-to-xml child)
+                           (write-to-xml (slot-serialize-value slot child) :name element-name)))))))
+
+           ;; body slot
+           (when body-slot
+             (let ((name (slot-definition-name body-slot)))
+               (when (slot-boundp object name)
+                 (sax:characters
+                  cxml::*sink*
+                  (cxml::string-rod
+                   (funcall (xml-effective-slot-definition-serializer body-slot)
+                            (slot-value object name)))))))
+	
+           (sax:end-element cxml::*sink* nil nil qname))))
+      (t nil)))))

Modified: trunk/bknr/src/xml-impex/xml-import.lisp
===================================================================
--- trunk/bknr/src/xml-impex/xml-import.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/bknr/src/xml-impex/xml-import.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,12 +6,6 @@
    (root-elt   :initform nil :accessor importer-root-elt)
    (parent-elts :initform nil :accessor importer-parent-elts)))
 
-(defclass xml-class-instance ()
-  ((initforms :initform nil :initarg :initforms :reader instance-initforms)
-   (children  :initarg :children :accessor instance-children)
-   (elmdef    :initarg :elmdef :accessor instance-elmdef)
-   (class     :initarg :class :initform nil :accessor instance-class)))
-
 (defmethod slot-parse-value ((slot xml-effective-slot-definition) value)
   (with-slots (parser id-to-object) slot
     (when parser
@@ -20,49 +14,149 @@
       (setf value (funcall id-to-object value)))
     value))
 
-(defmethod xml-class-attribute-initforms ((class xml-class) attributes)
-  (let (results)
-    (dolist (attr attributes)
-      (let ((slot (xml-class-find-attribute-slot class (sax:attribute-qname attr))))
-	(when slot
-	  (push (first (slot-definition-initargs slot)) results)
-	  (push (slot-parse-value slot (sax:attribute-value attr)) results))))
-    (nreverse results)))
+;;; description for an object instance to be created from the xml. The
+;;; data is gathered while parsing the XML, and at the end of an
+;;; element, the corresponding object is instanciated.
 
+(defclass xml-node ()
+  ((element :initarg :element :accessor node-element)
+   (children :initarg :children :initform (make-hash-table) :accessor node-children)
+   (elmdef    :initarg :elmdef :accessor instance-elmdef)
+   (attributes :initarg :attributes :accessor node-attributes)
+   (data :initarg :data :initform nil :accessor node-data)))
+
+(defmethod print-object ((node xml-node) stream)
+  (print-unreadable-object (node stream :type t)
+    (format stream "~a" (node-element node))))
+
+(defclass xml-class-instance (xml-node)
+  ((slots :initform (make-hash-table :test #'equal) :accessor instance-slots)
+   (class     :initarg :class :initform nil :accessor instance-class)))
+
+(defmethod print-object ((instance xml-class-instance) stream)
+  (print-unreadable-object (instance stream :type t)
+    (format stream "~a" (instance-class instance))))
+
+(defgeneric importer-add-attribute (handler node attr))
+(defgeneric importer-add-characters (handler node data))
+(defgeneric importer-add-element (handler node element value))
+(defgeneric importer-finalize (handler node))
+
+(defmethod importer-add-attribute ((handler xml-class-importer)
+				 (class-instance xml-class-instance) attr)
+  (with-slots (class slots) class-instance
+    (let ((slot (xml-class-find-attribute-slot class (sax:attribute-qname attr))))
+      (when slot
+	(setf (gethash slot slots) (slot-parse-value slot (sax:attribute-value attr)))))))
+
+(defmethod importer-add-attribute ((handler xml-class-importer)
+				 (node xml-node) attr)
+  nil)
+
+(defmethod importer-add-characters ((handler xml-class-importer)
+				  (node xml-node) characters)
+  (unless (whitespace-p characters)
+    (setf characters (string-trim bknr.utils::+whitespace-chars+ characters))
+    (with-slots (data) node
+      (setf data (if data
+		     (concatenate 'string data characters)
+		     characters)))))
+
+(defmethod importer-add-characters ((handler xml-class-importer)
+				  (instance xml-class-instance) characters)
+  (with-slots (class elmdef slots children) instance
+    (let ((slot (xml-class-body-slot class)))
+      (when slot
+	(setf (gethash slot slots) (slot-parse-value slot characters))))))
+
+(defmethod importer-add-element ((handler xml-class-importer)
+			       (node xml-node) element value)
+  (with-slots (children) node
+    (push value (gethash (make-keyword-from-string element) children))))
+
+(defmethod importer-add-element ((handler xml-class-importer)
+			       (instance xml-class-instance) element value)
+  (with-slots (slots elmdef class children) instance
+    (let ((slot (xml-class-find-element-slot class element)))
+      (when slot
+	  ;; parse the value if necessary
+	  (setf value (slot-parse-value slot value))
+	  (let ((containment (xml-effective-slot-definition-containment slot)))
+	    (if (member containment '(:* :+))
+		;; if it has a plural containment, push the
+		;; created instance into the initargs hash
+		(push value (gethash slot slots))
+		;; else set the initarg hash to the new instance
+		(setf (gethash slot slots) value)))))))
+
+(defmethod importer-finalize ((handler xml-class-importer)
+			    (node xml-node))
+  (with-slots (data children) node
+    (cond
+      ((and data
+	    (= (hash-table-count children) 0)) data)
+      ((> (hash-table-count children) 0)
+       (children-to-initforms (node-children node)))
+      (t nil))))
+
+(defun add-parent (handler parent child)
+  (let* ((class (class-of child))
+	 (parent-slot (when (typep class 'xml-class)
+			(xml-class-parent-slot class))))
+    (when parent-slot
+      (set-slot-value handler child (slot-definition-name parent-slot) parent))))
+
+(defun slots-to-initforms (slots)
+  (let (initforms)
+    (loop for slot being the hash-keys of slots using (hash-value value)
+       when (listp value)
+       do (push (reverse value) initforms)
+       else do (push value initforms)
+       do (push (first (slot-definition-initargs slot)) initforms))
+    initforms))
+
+(defmethod importer-finalize ((handler xml-class-importer)
+			    (instance xml-class-instance))
+  (with-slots (class elmdef children slots) instance
+    (let* ((initforms (slots-to-initforms slots))
+	   (object (apply #'create-instance handler (class-name class) initforms)))
+
+      (loop for objs being the hash-values of slots
+	 when (listp objs)
+	 do (dolist (child objs)
+	      (add-parent handler object child))
+	 else do (add-parent handler object objs))
+
+      object)))
+
 (defmethod sax:start-document ((handler xml-class-importer))
   (setf (importer-root-elt handler) nil))
 
 (defmethod sax:start-element ((handler xml-class-importer) namespace-uri local-name qname attrs)
   (declare (ignore namespace-uri local-name))
-  (let ((class (gethash qname (importer-class-hash handler))))
+  (let ((class (gethash qname (importer-class-hash handler)))
+	(element (cxml::string-rod qname))
+	instance)
     (if class
-	(let ((instance (make-instance 'xml-class-instance
-				       :children (make-hash-table)
-				       :initforms (xml-class-attribute-initforms class attrs)
-				       :elmdef (xml-class-element class)
-				       :class class)))
-	  (push instance (importer-parent-elts handler)))
-	(let ((instance (make-instance 'xml-class-instance
-				       :children (make-hash-table)
-				       :initforms nil
-				       :elmdef (cxml::find-element (cxml::string-rod qname)
-								   (importer-dtd handler))
-				       :class nil)))
-	  (push instance (importer-parent-elts handler))))))
+	(setf instance
+	      (make-instance 'xml-class-instance
+			     :element element
+			     :elmdef (xml-class-element class)
+			     :class class))
+	(setf instance
+	      (make-instance 'xml-node
+			     :element element
+			     :elmdef (cxml::find-element element (importer-dtd handler)))))
 
+    (dolist (attr attrs)
+      (importer-add-attribute handler instance attr))
+    
+    (push instance (importer-parent-elts handler))))
+
 (defmethod sax:characters ((handler xml-class-importer) data)
   (unless (importer-parent-elts handler)
     (error "Can not parse SAX:CHARACTERS without a parent element."))
-  (let ((instance (first (importer-parent-elts handler))))
-    (with-slots (class elmdef initforms children) instance
-      (if class
-	  (let ((slot (xml-class-body-slot class)))
-	    (when slot
-	      (push (funcall (xml-effective-slot-definition-parser slot) data) initforms)
-	      (push (first (slot-definition-initargs slot)) initforms)))
-	  (unless (whitespace-p data)
-	    (setf data (string-trim bknr.utils::+whitespace-chars+ data))
-	    (setf initforms (if initforms (concatenate 'string initforms data) data)))))))
+  (importer-add-characters handler (first (importer-parent-elts handler)) data))
 
 (defmethod create-instance ((handler xml-class-importer) class-name &rest initargs)
   (apply #'make-instance class-name initargs))
@@ -72,55 +166,22 @@
 
 (defmethod sax:end-element ((handler xml-class-importer) namespace-uri local-name qname)
   (declare (ignore namespace-uri local-name))
-  (let ((instance (pop (importer-parent-elts handler))))
-    (with-slots (class initforms elmdef children) instance
-      (loop for key being the hash-keys of children using (hash-value value)
-	    when (listp value)
-	    do (push (reverse value) initforms)
-	    else do (push value initforms)
-	    do (push key initforms))
-      
-      (let ((instance (if class
-			  (apply #'create-instance handler (class-name class) initforms)
-			  initforms)))
 
-	(when class
-	  (loop for objs being the hash-values of children
-		when (listp objs)
-		do (loop for child in objs
-			 for child-class = (class-of child)
-			 for parent-slot = (when (typep child-class 'xml-class)
-					     (xml-class-parent-slot (class-of child)))
-			 when parent-slot
-			 do (set-slot-value handler child (slot-definition-name parent-slot) instance))))
+  (let* ((instance (pop (importer-parent-elts handler)))
+	 (final (importer-finalize handler instance))
+	 (parent (first (importer-parent-elts handler))))
 
-	(let ((parent (first (importer-parent-elts handler))))
-	  (when parent
-	    (if (instance-class parent)
-		(let ((slot (xml-class-find-element-slot (instance-class parent) qname)))
-		  (when slot
-		    (setf instance (slot-parse-value slot instance))
-		    (let ((containment (xml-effective-slot-definition-containment slot)))
-		      (if (member containment '(:* :+))
-			  (push instance (gethash (first (slot-definition-initargs slot))
-						  (instance-children parent)))
-			  (setf (gethash (first (slot-definition-initargs slot))
-					 (instance-children parent)) instance)))))
-		(push instance (gethash (make-keyword-from-string qname)
-					(instance-children parent))))))
-	(setf (importer-root-elt handler) instance)))))
+    (when parent
+      (importer-add-element handler parent qname final))
+    
+    (setf (importer-root-elt handler) final)))
 
 (defun parse-xml-file (xml-file classes &key (recoder #'cxml::rod-string)
 		       (importer-class 'xml-class-importer))
-  (let ((dtds (remove-duplicates (mapcar #'xml-class-dtd classes))))
-    (when (> (length dtds) 1)
-      (error "All the classes do not use the same DTD."))
-    (let ((class-hash (make-hash-table :test #'equal)))
-      (dolist (class classes)
-	(let ((name (cxml::rod-string (cxml::elmdef-name (xml-class-element class)))))
-	  (setf (gethash name class-hash) class)))
-      (let ((importer (make-instance importer-class
-				     :dtd (first dtds)
-				     :class-hash class-hash)))
-	(cxml:parse-file xml-file (cxml:make-recoder importer recoder))
-	(importer-root-elt importer)))))
+  (let ((class-hash (make-hash-table :test #'equal)))
+    (dolist (class classes)
+      (setf (gethash (xml-class-element class) class-hash) class))
+    (let ((importer (make-instance importer-class
+                                   :class-hash class-hash)))
+      (cxml:parse-file xml-file (cxml:make-recoder importer recoder))
+      (importer-root-elt importer))))

Copied: trunk/bknr/src/xml-impex/xml-update.lisp (from rev 2044, branches/xml-class-rework/bknr/src/xml-impex/xml-update.lisp)


Property changes on: trunk/bknr/src/xml-impex/xml-update.lisp
___________________________________________________________________
Name: svn:executable
   + *

Modified: trunk/modules/bknr-modules.asd
===================================================================
--- trunk/modules/bknr-modules.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/bknr-modules.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,4 +1,3 @@
-;;; -*- MODE: LISP -*-
 (in-package :cl-user)
 
 (defpackage :bknr.system
@@ -20,21 +19,17 @@
 		 :cl-gd
 		 :aserve
 		 :net.post-office
-		#-sbcl
 		 :md5
-		#+sbcl
-		 :sb-md5
 		 :cxml
 		 :unit-test
 		 :bknr-utils
 		 :puri
 		 :stem
-		 :mime
+		 #+(or) :mime
 		 :bknr
 		 :klammerscript
 		 #+(not allegro)
-		 :acl-compat
-		 #+nil :bknr-id3)
+		 :acl-compat)
 
     :components ((:file "packages")
 

Modified: trunk/modules/class-browser/class-browser.lisp
===================================================================
--- trunk/modules/class-browser/class-browser.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/class-browser/class-browser.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -26,9 +26,7 @@
 		     (when (documentation class t)
 		       (html
 			(:p (:princ-safe (documentation class t)))))
-		     (dolist (subclass 
-			       #-sbcl(pcl:class-direct-subclasses class)
-			       #+sbcl(sb-pcl:class-direct-subclasses class))
+		     (dolist (subclass (pcl:class-direct-subclasses class))
 		       (show-class subclass (1+ level)))))))
 	  (html
 	   (:head
@@ -42,4 +40,4 @@
 			       :border "thin solid #000000"
 			       :-moz-border-radius "8px")))
 	   (:body
-	    (show-class class)))))))
+	    (show-class class)))))))
\ No newline at end of file

Modified: trunk/modules/mail/mail.lisp
===================================================================
--- trunk/modules/mail/mail.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/mail/mail.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -97,8 +97,7 @@
 				*message-id-re*
 				(first (if (header :in-reply-to)
 					   (split #?/\s+/ (header :in-reply-to))
-					   (last (split #?/\s+/ (header :references)))))
-				#?/\1/)
+					   (last (split #?/\s+/ (header :references))))))
 		     :headers headers
 		     :body body)))))
 

Modified: trunk/modules/mail/package.lisp
===================================================================
--- trunk/modules/mail/package.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/mail/package.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -40,9 +40,8 @@
 	   #:mailinglist-send-mail))
 
 (defpackage :bknr.mail.imap
-  (:use :cl
-	;;:ext
-	)
+  (:use :lisp
+	:ext)
   (:export 
    #:address-name
    #:address-additional
@@ -104,4 +103,4 @@
   (:use :cl
 	:cl-ppcre
 	:cl-interpol)
-  (:shadowing-import-from :cl-interpol quote-meta-chars))
+  (:shadowing-import-from :cl-interpol quote-meta-chars))
\ No newline at end of file

Modified: trunk/modules/packages.lisp
===================================================================
--- trunk/modules/packages.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/packages.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,7 +6,6 @@
 	:cl-interpol
 	:net.aserve
 	:puri
-	#+(or) :bknr.id3
 	:bknr.rss
 	:bknr.utils
 	:bknr.web

Modified: trunk/modules/text/blog-handlers.lisp
===================================================================
--- trunk/modules/text/blog-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/text/blog-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -50,31 +50,6 @@
       (blog-page blog grouped-articles
 				:start-date (object-date-list-handler-date handler blog req)))))
 
-(defclass rss-blog-handler (object-rss-handler blog-handler)
-  ())
-
-(defmethod create-object-rss-feed ((handler rss-blog-handler) blog req)
-  (if blog
-      (let* ((site-url (website-url (page-handler-site handler)))
-	     (url (puri:merge-uris (parse-uri (blog-name blog))
-				   (page-handler-url handler)))
-	     (blog-items (mapcar #'(lambda (article)
-				     (article-to-rss-item article :url site-url))
-				 (subseq (sort (blog-articles blog)
-					       #'> :key #'article-time)
-					 0 20))))
-	(make-instance 'rss-feed
-		       :channel
-		       (make-instance 'rss-channel
-				      :about (render-uri url nil)
-				      :title (blog-name blog)
-				      :link (render-uri url nil)
-				      :items (mapcar #'rss-item-link blog-items))
-		       :items blog-items))
-      (make-instance 'rss-feed :channel (make-instance 'rss-channel
-						       :about "no such blog"
-						       :title "no such blog"))))
-
 (defclass search-blog-handler (edit-object-handler blog-handler)
   ())
 

Modified: trunk/modules/track/media.lisp
===================================================================
--- trunk/modules/track/media.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/track/media.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -11,7 +11,7 @@
 							      :length 0
 							      :remain 0))
    (queue :accessor player-queue :initform nil)
-   (lock :accessor player-lock :initform (acl-compat.mp:make-process-lock))))
+   (lock :accessor player-lock :initform (mp:make-lock))))
 
 (defgeneric player-play (player mp3))
 (defgeneric player-stop (player))
@@ -24,12 +24,12 @@
 
 (defmethod queue-command ((player player) command)
   (with-slots (queue lock) player
-    (acl-compat.mp:with-process-lock (lock)
+    (mp:with-lock-held (lock)
       (setf queue (append queue (list command))))))
 
 (defmethod dequeue-command ((player player))
   (with-slots (queue lock) player
-    (acl-compat.mp:with-process-lock (lock)
+    (mp:with-lock-held (lock)
       (pop queue))))
 
 (defmethod player-play ((player player) mp3)
@@ -49,7 +49,7 @@
    (process :accessor mpg123-player-process :initform nil)))
 
 (defmethod start-mpg123 ((player mpg123-player))
-  (let ((proc (#-sbcl ext:run-program #+sbcl sb-ext:run-program "mpg123" '("-R")
+  (let ((proc (ext:run-program "mpg123" '("-R")
 			       :wait nil
 			       :input :stream
 			       :output :stream
@@ -59,31 +59,18 @@
 						(mpg123-status-changed player)))))
     (when proc
       (with-slots (stream process state) player
-	(setf stream 
-	      #-sbcl
-	      (make-two-way-stream (ext:process-output proc)
-				   (ext:process-input proc))
-	      #+sbcl
-	      (make-two-way-stream (sb-ext:process-output proc)
-				   (sb-ext:process-input proc))
+	(setf stream (make-two-way-stream (ext:process-output proc)
+					  (ext:process-input proc))
 	      process proc)))))
 
 (defmethod mpg123-status-changed ((player mpg123-player))
   (format t "status changed~%")
   (let ((proc (mpg123-player-process player)))
-    (case
-	#-sbcl
-	(ext:process-status proc)
-	#+sbcl
-	(sb-ext:process-status proc)
+    (case (ext:process-status proc)
       (:running)
       (:stopped (format t "mpg123 stopped~%"))
       (:signaled (format t "mpg123 stopped~%"))
-      (t (format t "mpg123 has status: ~a~%"
-		 #-sbcl
-		 (ext:process-status proc)
-		 #+sbcl
-		 (sb-ext:process-status proc))))))
+      (t (format t "mpg123 has status: ~a~%" (ext:process-status proc))))))
 
 (defmethod send-command ((player mpg123-player) command)
   (with-slots (process stream) player
@@ -100,7 +87,7 @@
 
 (defmethod actor-stop :before ((player mpg123-player))
   (when (mpg123-player-process player)
-    (#-sbcl ext:process-kill #+sbcl sb-ext:process-kill (mpg123-player-process player) 9)))
+    (ext:process-kill (mpg123-player-process player) 9)))
 
 (defmethod mpg123-player-parse-status ((player mpg123-player) msg)
   #+nil(format t "msg: ~a~%" msg)

Modified: trunk/modules/track/track.lisp
===================================================================
--- trunk/modules/track/track.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/track/track.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -102,10 +102,8 @@
 			(when mp3
 ;			  (delete-file file)
 			  (when (directory-empty-p file-directory)
-			    #-(or allegro sbcl) 
+			    #-allegro
 			    (unix:unix-rmdir (namestring file-directory))
-			    #+sbcl
-			    (sb-posix:rmdir (namestring file-directory))
 			    #+allegro
 			    (delete-directory file-directory)))
 			(cons file mp3))

Modified: trunk/modules/url/url-handlers.lisp
===================================================================
--- trunk/modules/url/url-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/modules/url/url-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -157,42 +157,3 @@
   (format nil "/url-intersection-rss/~A"
 	  (parse-url req)))
 
-;;; rss url feeds
-(defclass rss-url-handler (object-rss-handler url-page-handler)
-  ())
-
-(defmethod create-object-rss-feed ((handler rss-url-handler)
-				   object req)
-  (let* ((site-url (website-url (page-handler-site handler)))
-	 (url-items (mapcar #'url-submission-to-rss-item
-			    (subseq (sort (object-list-handler-get-objects
-					    handler object req)
-					  #'> :key #'url-submission-date)
-				    0 30))))
-    (if url-items
-	(make-instance 'rss-feed
-		       :channel (make-instance
-				 'rss-channel
-				 :about (render-uri site-url nil)
-				 :title (object-list-handler-title
-					 handler object req)
-				 :link (render-uri site-url nil)
-				 :items (mapcar #'rss-item-link url-items))
-		       :items url-items)
-	(make-instance 'rss-feed
-		       :channel (make-instance 'rss-channel
-					       :about "no such keyword"
-					       :title "no such keyword")))))
-
-(defclass rss-url-keyword-handler (rss-url-handler url-keyword-handler)
-  ())
-
-(defclass rss-url-union-handler (rss-url-handler url-union-handler)
-  ())
-
-(defclass rss-url-intersection-handler (rss-url-handler url-intersection-handler)
-  ())
-
-(defclass rss-url-submitter-handler (rss-url-handler url-submitter-handler)
-  ())
-

Modified: trunk/projects/bknr-website/templates/generate-html.xsl
===================================================================
--- trunk/projects/bknr-website/templates/generate-html.xsl	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bknr-website/templates/generate-html.xsl	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,4 +1,4 @@
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output mode="text" omit-xml-declaration="yes" />
  <xsl:template match="item">xsltproc --stringparam mode html -o ../html/<xsl:value-of select="@url"/>.html <xsl:value-of select="@url"/>.xml</xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>


Property changes on: trunk/projects/bos
___________________________________________________________________
Name: svn:ignore
   + datastore
web.rc
m2.rc


Copied: trunk/projects/bos/Back Office Interface.doc (from rev 2044, branches/xml-class-rework/projects/bos/Back Office Interface.doc)


Property changes on: trunk/projects/bos/Back Office Interface.doc
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/projects/bos/build.lisp
===================================================================
--- trunk/projects/bos/build.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/build.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,6 +1,7 @@
 (in-package :bos.build)
 
 (handler-bind ((style-warning #'muffle-warning))
+  (asdf:operate 'asdf:load-op :aserve)
   (asdf:operate 'asdf:load-op :bos.web))
 
 ;;;
@@ -27,14 +28,14 @@
 
 (defun start-webserver ()
   (apply #'bos.m2::reinit (read-configuration "m2.rc"))
-  (apply #'bos.web::reinit (read-configuration "web.rc"))
+  (apply #'bos.web::init (read-configuration "web.rc"))
   (bknr.cron::start-cron))
 
 (defun start-slime ()
   (swank::create-swank-server 4005 :spawn #'swank::simple-announce-function t))
 
 (defun reload-global-table ()
-  (loop for lib-entry in sys::*global-table*
+  (loop for lib-entry in (reverse sys::*global-table*)
 	for (sap . lib-path) = lib-entry
 	when lib-path
 	do (let ((new-sap (sys::dlopen (namestring lib-path)
@@ -50,6 +51,7 @@
 
 (defun init ()
   (fix-dpd)
+  (asdf:oos 'asdf:load-op :bos.web)
   (format t "BOS Online-System~%")
   (when *cert-daemon*
     (format t "; starting certificate generation daemon, slime and webserver not started~%")

Modified: trunk/projects/bos/build.sh
===================================================================
--- trunk/projects/bos/build.sh	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/build.sh	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,20 +1,5 @@
 #!/bin/sh -e
 
-case "$1" in
-	--clean)
-		echo "deleting fasls... (use --fast to suppress)"
-		find .. -name \*.x86f -print0 | xargs -0 rm
-		;; 
-	--fast)
-		echo "not deleting fasls"
-		;; 
-	*)
-		echo "error: expected argument --clean or --fast" 1>&2
-        	exit 1
-		;;
-esac
-
-pwd
 set -x
 (cd ../thirdparty/cl-gd && make)
 lisp -core cmucl.core -noinit -load load.lisp -load build.lisp

Modified: trunk/projects/bos/m2/bos.m2.asd
===================================================================
--- trunk/projects/bos/m2/bos.m2.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/m2/bos.m2.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,7 +1,7 @@
 (in-package :cl-user)
 
 (asdf:defsystem :bos.m2
-    :depends-on (:bknr :bknr-modules :net.post-office)
+    :depends-on (:bknr :bknr-modules :net.post-office :cl-mime :iconv)
     :components ((:file "packages")
 		 (:file "config" :depends-on ("packages"))
 		 (:file "utils" :depends-on ("config"))

Modified: trunk/projects/bos/m2/cert-daemon.lisp
===================================================================
--- trunk/projects/bos/m2/cert-daemon.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/m2/cert-daemon.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,39 +1,55 @@
 (in-package :bos.m2.cert-generator)
 
 (defun run-tool (program &optional program-args &rest args)
-  (let ((process (apply #'run-program program program-args :output :stream args)))
+  (let* ((process (apply #'run-program program program-args :output :stream args))
+         (error-message (unless (zerop (process-exit-code process))
+                          (with-output-to-string (*standard-output*)
+                            (with-open-stream (output-stream (process-output process))
+                              (princ (read-line output-stream)))))))
+    (process-close process)
     (unless (zerop (process-exit-code process))
-      (let ((error-message (with-output-to-string (*standard-output*)
-			     (with-open-stream (output-stream (process-output process))
-			       (princ (read-line output-stream))))))
-	(error "Error executing ~A - Exit code ~D~%Error message: ~A"
-	       (format nil "\"~A~{ ~A~}\"" program program-args) (process-exit-code process) error-message)))))
+      (error "Error executing ~A - Exit code ~D~%Error message: ~A"
+             (format nil "\"~A~{ ~A~}\"" program program-args) (process-exit-code process) error-message))))
 
-(defun fill-form (fdf-pathname pdf-pathname)
-  (let ((output-pathname (merge-pathnames (make-pathname :type "pdf") fdf-pathname)))
-    (handler-case
-	(progn
-	  (run-tool "recode" (list "utf-8..latin-1" (unix-namestring fdf-pathname)))
-	  (run-tool "pdftk" (list (unix-namestring pdf-pathname)
-				  "fill_form" (unix-namestring fdf-pathname)
-				  "output" (namestring output-pathname)
-				  "flatten"))
-	  (delete-file fdf-pathname)
-	  (format t "; generated ~A~%" output-pathname))
-      (error (e)
-	(warn "While filling form ~A with ~A:~%~A" pdf-pathname fdf-pathname e)))))
+(defun fill-form (fdf-pathname pdf-pathname output-pathname)
+  (handler-case
+      (progn
+        (ignore-errors (run-tool "recode" (list "utf-8..latin-1" (unix-namestring fdf-pathname))))
+        (cond
+          ((unix-namestring pdf-pathname)
+           (run-tool "pdftk" (list (unix-namestring pdf-pathname)
+                                   "fill_form" (unix-namestring fdf-pathname)
+                                   "output" (namestring output-pathname)
+                                   "flatten"))
+           (format t "; generated ~A~%" output-pathname))
+          (t
+           (warn "Warning, stray FDF file ~A deleted, no such contract exists" fdf-pathname)))
+        (delete-file fdf-pathname))
+    (error (e)
+      (warn "While filling form ~A with ~A:~%~A" pdf-pathname fdf-pathname e))))
 
-(defun fill-forms (directory pdf-pathname)
+(defun fill-forms (directory template-pathname)
   (dolist (fdf-pathname (remove "fdf" (directory directory)
 				:test (complement #'string-equal)
 				:key #'pathname-type))
-    (fill-form fdf-pathname pdf-pathname)))
+    (destructuring-bind (id &optional (country "en")) (split "-" (pathname-name fdf-pathname))
+      (let ((language-specific-template-pathname (merge-pathnames (make-pathname :name (format nil "~A-~A" (pathname-name template-pathname) country))
+                                                                  template-pathname))
+            (output-pathname (merge-pathnames (make-pathname :name id :type "pdf") fdf-pathname)))
+        (fill-form fdf-pathname (if (probe-file language-specific-template-pathname)
+                                    language-specific-template-pathname
+                                    template-pathname)
+                   output-pathname)))))
 
+(defun generate-certs ()
+  (fill-forms *cert-mail-directory* *cert-mail-template*)
+  (fill-forms *cert-download-directory* *cert-download-template*)
+  (fill-forms *receipt-mail-directory* *receipt-mail-template*)
+  (fill-forms *receipt-download-directory* *receipt-download-template*))
+
 (defun cert-daemon ()
   (ensure-directories-exist *cert-mail-directory*)
   (ensure-directories-exist *cert-download-directory*)
-  (loop (fill-forms *cert-mail-directory* *cert-mail-template*)
-	(fill-forms *cert-download-directory* *cert-download-template*)
-	(fill-forms *receipt-mail-directory* *receipt-mail-template*)
-	(fill-forms *receipt-download-directory* *receipt-download-template*)
-	(sleep *cert-daemon-poll-seconds*)))
\ No newline at end of file
+  (loop
+     (generate-certs)
+     (sleep *cert-daemon-poll-seconds*)))
\ No newline at end of file

Modified: trunk/projects/bos/m2/config.lisp
===================================================================
--- trunk/projects/bos/m2/config.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/m2/config.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -66,4 +66,6 @@
 
 ;; Vertraege
 (defparameter *manual-contract-expiry-time* (* 42 24 3600))
-(defparameter *online-contract-expiry-time* (* 3600))
\ No newline at end of file
+(defparameter *online-contract-expiry-time* (* 3600))
+
+(defvar *website-url* "http://change-me")
\ No newline at end of file

Modified: trunk/projects/bos/m2/m2.lisp
===================================================================
--- trunk/projects/bos/m2/m2.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/m2/m2.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -40,7 +40,8 @@
 (define-persistent-class m2 ()
   ((x :read)
    (y :read)
-   (contract :update :relaxed-object-reference t))
+   (contract :update :relaxed-object-reference t)
+   (my-slot :read))
   (:default-initargs :contract nil)
   (:class-indices (m2-index :index-type tiled-index
 			    :slots (x y)
@@ -157,6 +158,7 @@
 ;;; CONTRACT-PAIDP (contract) => boolean
 ;;; CONTRACT-DATE (contract) => Universal-Timestamp
 ;;; CONTRACT-M2S (contract) => list of m2
+;;; CONTRACT-BOUNDING-BOX (contract) => (list left top width height)
 ;;;
 ;;; CONTRACT-SET-PAIDP (contract newval) => newval
 
@@ -179,10 +181,13 @@
    (paidp :update)
    (m2s :read)
    (color :read)
+   (download-only :read)
    (cert-issued :read)
+   (worldpay-trans-id :update :initform nil)
    (expires :read :documentation "universal time which specifies the time the contract expires (is deleted) when it has not been paid for" :initform nil))
   (:default-initargs
       :m2s nil
+    :download-only nil
     :color (random-elt *claim-colors*)
     :cert-issued nil
     :expires (+ (get-universal-time) *manual-contract-expiry-time*)))
@@ -227,10 +232,13 @@
   (* (length (contract-m2s contract)) +price-per-m2+))
 
 (defmethod contract-download-only-p ((contract contract))
-  (< (contract-price contract) *mail-amount*))
+  (or (contract-download-only contract)
+      (< (contract-price contract) *mail-amount*)))
 
-(defmethod contract-fdf-pathname ((contract contract))
-  (merge-pathnames (make-pathname :name (format nil "~D" (store-object-id contract))
+(defmethod contract-fdf-pathname ((contract contract) language)
+  (merge-pathnames (make-pathname :name (format nil "~D-~(~A~)"
+                                                (store-object-id contract)
+                                                language)
 				  :type "fdf")
 		   (if (contract-download-only-p contract) *cert-download-directory* *cert-mail-directory*)))
 
@@ -244,11 +252,11 @@
 (defmethod contract-pdf-url ((contract contract))
   (format nil "/~:[~;print-~]certificate/~A" (not (contract-download-only-p contract)) (store-object-id contract)))
 
-(defmethod contract-issue-cert ((contract contract) name &optional address)
+(defmethod contract-issue-cert ((contract contract) name &key address language)
   (if (contract-cert-issued contract)
       (warn "can't re-issue cert for ~A" contract)
       (progn
-	(make-certificate contract name :address address)
+	(make-certificate contract name :address address :language language)
 	(unless (contract-download-only-p contract)
 	  (mail-certificate-to-office contract address))
 	(change-slot-values contract 'cert-issued t))))
@@ -260,27 +268,54 @@
 	       image-tiles))
     image-tiles))
 
+(defmethod contract-bounding-box ((contract contract))
+  (let (min-x min-y max-x max-y)
+    (dolist (m2 (contract-m2s contract))
+      (setf min-x (min (m2-x m2) (or min-x (m2-x m2))))
+      (setf min-y (min (m2-y m2) (or min-y (m2-y m2))))
+      (setf max-x (max (m2-x m2) (or max-x (m2-x m2))))
+      (setf max-y (max (m2-y m2) (or max-y (m2-y m2)))))
+    (list min-x min-y (1+ (- max-x min-x)) (1+ (- max-y min-y)))))
+
 (defun tx-make-contract (sponsor m2-count &key date paidp expires)
   (warn "Old tx-make-contract transaction used, contract dates may be wrong")
   (tx-do-make-contract sponsor m2-count :date date :paidp paidp :expires expires))
 
-(deftransaction do-make-contract (sponsor m2-count &key date paidp expires)
+(deftransaction do-make-contract (sponsor m2-count &key date paidp expires download-only)
   (let ((m2s (find-free-m2s m2-count)))
     (if m2s
-	(make-object 'contract
-		     :sponsor sponsor
-		     :date date
-		     :paidp paidp
-		     :m2s m2s
-		     :expires expires)
+	(let ((contract (make-object 'contract
+				     :sponsor sponsor
+				     :date date
+				     :paidp paidp
+				     :m2s m2s
+				     :expires expires
+				     :download-only download-only)))
+	  (bknr.rss::add-item "news" contract)
+	  contract)
 	(warn "can't create contract, ~A square meters for ~A could not be allocated" m2-count sponsor))))
 
-(defun make-contract (sponsor m2-count &key (date (get-universal-time)) paidp (expires (+ (get-universal-time) *manual-contract-expiry-time*)))
+(defun make-contract (sponsor m2-count
+                      &key (date (get-universal-time))
+                      paidp
+                      (expires (+ (get-universal-time) *manual-contract-expiry-time*))
+                      download-only)
   (unless (and (integerp m2-count)
 	       (plusp m2-count))
     (error "number of square meters must be a positive integer"))
-  (do-make-contract sponsor m2-count :date date :paidp paidp :expires expires))
+  (let ((contract (do-make-contract sponsor m2-count :date date :paidp paidp :expires expires :download-only download-only)))
+    (unless contract
+      (send-system-mail :subject "Contact creation failed - Allocation areas exhaused"
+			:text (format nil "A contract for ~A square meters could not be created, presumably because no
+suitable allocation area was found.  Please check the free allocation
+areas and add more space.
 
+Sponsor-ID: ~A
+"
+				      m2-count (store-object-id sponsor)))
+      (error "could not create contract, allocation areas exhausted?"))
+    contract))
+
 (defun number-of-sold-sqm ()
   (let ((retval 0))
     (dolist (contract (remove-if-not #'contract-paidp (class-instances 'contract)))
@@ -297,30 +332,20 @@
   "Erzeugt das Quadratmeter-Javascript für die angegebenen Contracts"
   (with-output-to-string (*standard-output*)
     (let ((paid-contracts (remove nil (sponsor-contracts sponsor) :key #'contract-paidp)))
-      (format t "profil = [];~%")
-      (format t "qms = [ undefined ];~%")
+      (format t "profil = {};~%")
       (format t "profil['id'] = ~D;~%" (store-object-id sponsor))
       (format t "profil['name'] = ~S;~%" (string-safe (or (user-full-name sponsor) "[anonym]")))
       (format t "profil['country'] = ~S;~%" (or (sponsor-country sponsor) "[unbekannt]"))
       (format t "profil['anzahl'] = ~D;~%" (loop for contract in paid-contracts
 								  sum (length (contract-m2s contract))))
       (format t "profil['nachricht'] = '~A';~%" (string-safe (sponsor-info-text sponsor)))
+      (format t "profil['contracts'] = [ ];~%")
       (loop for contract in paid-contracts
-	    for m2s = (sort (copy-list (contract-m2s contract)) #'(lambda (a b) (if (eql (m2-y a) (m2-y b))
-										    (< (m2-x a) (m2-x b))
-										    (< (m2-y a) (m2-y b)))))
-	    do (progn
-		 (format t "var qm = [];~%")
-		 (format t "qm['x'] = ~D;~%" (m2-x (first (contract-m2s contract))))
-		 (format t "qm['y'] = ~D;~%" (m2-y (first (contract-m2s contract))))
-		 (format t "qm['datum'] = ~S;~%" (format-date-time (contract-date contract) :show-time nil))
-		 (format t "qm['qm_x'] = [0, ~D~{,~D~}];~%"
-			 (m2-x (first m2s))
-			 (mapcar #'m2-x (cdr m2s)))
-		 (format t "qm['qm_y'] = [0, ~D~{,~D~}];~%"
-			 (m2-y (first m2s))
-			 (mapcar #'m2-y (cdr m2s)))
-		 (format t "qms.push(qm);~%"))))))
+	    do (destructuring-bind (left top width height) (contract-bounding-box contract)
+		 (format t "profil.contracts.push({ id: ~A, left: ~A, top: ~A, width: ~A, height: ~A, date: ~S });~%"
+			 (store-object-id contract)
+			 left top width height
+			 (format-date-time (contract-date contract) :show-time nil)))))))
 
 (defun delete-directory (pathname)
   (when (probe-file pathname)
@@ -338,9 +363,10 @@
     #-(or allegro cmu)
     ...))
 
-(defun reinit (&key delete directory)
+(defun reinit (&key delete directory website-url)
   (format t "~&; Startup Quadratmeterdatenbank...~%")
   (force-output)
+  (setf *website-url* website-url)
   (unless directory
     (error ":DIRECTORY parameter not set in m2.rc"))
   (when delete
@@ -363,3 +389,6 @@
 		   (make-contract sponsor
 				  (random-elt (cons (1+ (random 300)) '(1 1 1 1 1 5 5 10 10 10 10 10 10 10 10 10 10 10 10 10 30 30 30)))
 				  :paidp t))))
+
+
+	       
\ No newline at end of file

Modified: trunk/projects/bos/m2/mail-generator.lisp
===================================================================
--- trunk/projects/bos/m2/mail-generator.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/m2/mail-generator.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -2,25 +2,23 @@
 
 (enable-interpol-syntax)
 
-(defun make-mail-header (&key from to subject (date (format-date-time (get-universal-time) :mail-style t)) (content-type "text/plain; charset=utf-8"))
-  (format nil "X-Mailer: BKNR-BOS-mailer
-Date: ~a
-From: ~a
-To: ~a
-Subject: ~a
-Content-Type: ~a
-
-"
-	  date from to subject content-type))
-
-(defun send-system-mail (&key (to *office-mail-address*) (subject "(no subject") (text "(no text)") (content-type "text/plain; charset=UTF-8"))
+(defun send-system-mail (&key (to *office-mail-address*) (subject "(no subject") (text "(no text)") (content-type "text/plain; charset=UTF-8") more-headers)
   (send-smtp "localhost" *mail-sender* to
-	     (make-mail-header :from *mail-sender*
-			       :to to
-			       :subject subject
-			       :content-type content-type)
-	     text))
-
+	     (format nil "X-Mailer: BKNR-BOS-mailer
+Date: ~A
+From: ~A
+To: ~A
+Subject: ~A
+Content-Type: ~A
+~@[~*~%~]~A"
+		     (format-date-time (get-universal-time) :mail-style t)
+		     *mail-sender*
+		     to
+		     subject
+		     content-type
+		     (not more-headers)
+		     text)))
+  
 (defun mail-info-request (email)
   (send-system-mail :subject "Mailinglisten-Eintrag"
 		    :text #?"Bitte in die Info-Mailingliste aufnehmen:
@@ -34,7 +32,7 @@
     (send-system-mail :subject #?"Druckauftrag fuer Spender-Urkunde"
 		      :text #?"Bitte die folgende Urkunde ausdrucken und versenden:
 
-http://create-rainforest.org/print-certificate/$(contract-id)
+$(*website-url*)/print-certificate/$(contract-id)
 
 Versandadresse:
 
@@ -83,27 +81,106 @@
 
 Das Team von BOS Deutschland e.V.")))
 
-(defun mail-transfer-indication (contract-id vorname name strasse plz ort email telefon mail-certificate donationcert-yearly)
-  (let ((contract (store-object-with-id (parse-integer contract-id))))
-    (send-system-mail :subject #?"Ueberweisungsformular fuer Contract-ID $(contract-id)"
-		      :content-type "text/html; charset=UTF-8"
-		      :text (format nil "
+(defun format-vcard (field-list)
+  (with-output-to-string (s)
+    (labels
+	((ensure-list (thing)
+	   (if (listp thing) thing (list thing)))
+	 (vcard-field (field-spec &rest values)
+	   (let* ((values (mapcar (lambda (value) (or value "")) (ensure-list values)))
+		  (encoded-values (mapcar (lambda (string) (cl-qprint:encode (iconv:iconv "UTF-8" "ISO-8859-1" (or string ""))
+									     :encode-newlines t)) values)))
+	     (format s "~{~A~^;~}:~{~@[~A~]~^;~}~%"
+		     (append (ensure-list field-spec)
+			     (unless (equal values encoded-values)
+			       '("CHARSET=ISO-8859-1" "ENCODING=QUOTED-PRINTABLE")))
+		     encoded-values))))
+      (dolist (field field-list)
+	(when field
+	  (apply #'vcard-field field))))))
+
+(defun make-vcard (&key contract-id sponsor-id worldpay-transaction-id
+		   donationcert-yearly gift
+		   vorname nachname
+		   name
+		   address postcode country
+		   strasse ort
+		   email tel)
+  (format-vcard
+   `((BEGIN "VCARD")
+     (VERSION "2.1")
+     (REV ,(format-date-time (get-universal-time) :xml-style t))
+     (FN ,(if name name (format nil "~A ~A" vorname nachname)))
+     ,(when vorname
+	`(N ,nachname ,vorname nil nil nil))
+     ,(when address
+	`((ADR DOM HOME) nil nil ,address nil nil ,postcode ,country))
+     ,(when strasse
+	`((ADR DOM HOME) nil nil ,strasse ,ort nil ,postcode ,country))
+     ,(when tel
+	`((TEL WORK HOME) ,tel))
+     ((EMAIL PREF INTERNET) ,email)
+     ((URL WORK) ,(format nil "~A/edit-sponsor/~A" *website-url* sponsor-id))
+     (NOTE ,(format nil "Contract ID: ~A~%Sponsor ID: ~A~%~@[WorldPay Transaction ID: ~A~%~]Donationcert yearly: ~A~%Gift: ~A~%"
+		    contract-id
+		    sponsor-id
+		    worldpay-transaction-id
+		    (if donationcert-yearly "Yes" "No")
+		    (if gift "Yes" "No")))
+     (END "VCARD"))))
+
+(defun worldpay-callback-request-to-vcard (request)
+  (with-query-params (request cartId
+			      transId
+			      MC_sponsorid
+			      MC_donationcert-yearly
+			      MC_gift
+			      name
+			      address
+			      postcode
+			      country
+			      email
+			      tel)
+    (make-vcard :contract-id cartId
+		:sponsor-id MC_sponsorid
+		:worldpay-transaction-id transId
+		:donationcert-yearly MC_donationcert-yearly
+		:gift MC_gift
+		:name name
+		:address address
+		:postcode postcode
+		:country country
+		:email email
+		:tel tel)))
+
+(defun mail-manual-sponsor-data (req)
+  (with-query-params (req contract-id vorname name strasse plz ort email telefon mail-certificate donationcert-yearly)
+    (let* ((contract (store-object-with-id (parse-integer contract-id)))
+	   (sponsor-id (store-object-id (contract-sponsor contract)))
+	   (mime (make-instance 'multipart-mime
+				:subtype "mixed"
+				:content (list (make-instance 'text-mime
+							      :type "text"
+							      :subtype "html"
+							      :charset "utf-8"
+							      :encoding :quoted-printable
+							      :content (format nil "
 <html>
  <body>
    <h1>Ueberweisungsformulardaten:</h1>
    <table border=\"1\">
-    <tr><td>Contract-ID</td><td>~@[~a~]</td></tr>
-    <tr><td>Anzahl sqm</td><td>~a</td></tr>
-    <tr><td>Vorname</td><td>~@[~a~]</td></tr>
-    <tr><td>Name</td><td>~@[~a~]</td></tr>
-    <tr><td>Strasse</td><td>~@[~a~]</td></tr>
-    <tr><td>PLZ</td><td>~@[~a~]</td></tr>
-    <tr><td>Ort</td><td>~@[~a~]</td></tr>
-    <tr><td>Email</td><td>~@[~a~]</td></tr>
-    <tr><td>Telefon</td><td>~@[~a~]</td></tr>~@[
+    <tr><td>Contract-ID</td><td>~@[~A~]</td></tr>
+    <tr><td>Anzahl sqm</td><td>~A</td></tr>
+    <tr><td>Vorname</td><td>~@[~A~]</td></tr>
+    <tr><td>Name</td><td>~@[~A~]</td></tr>
+    <tr><td>Strasse</td><td>~@[~A~]</td></tr>
+    <tr><td>PLZ</td><td>~@[~A~]</td></tr>
+    <tr><td>Ort</td><td>~@[~A~]</td></tr>
+    <tr><td>Email</td><td>~@[~A~]</td></tr>
+    <tr><td>Telefon</td><td>~@[~A~]</td></tr>~@[
     <tr><td></td></tr>
-    <tr><td>Urkunde per Post</td><td>~a</td></tr>
-    <tr><td>Spendenbescheinigung am Jahresende</td><td>~a</td></tr>~]
+    <tr><td>Urkunde per Post</td><td>~A</td></tr>
+    <tr><td>Spendenbescheinigung am Jahresende</td><td>~A</td></tr>~]
    </table>
    <p>Email & Adresse fuer Cut&Paste:</p>
    <pre>
@@ -113,22 +190,66 @@
 ~A
 ~A ~A
    </pre>
-   <p><a href=\"http://create-rainforest.org/complete-transfer/~a\">Link zum Sponsor-Datensatz</a></p>
+   <p><a href=\"~A/complete-transfer/~A\">Link zum Sponsor-Datensatz</a></p>
  </body>
 </html>
 "
-				    contract-id
-				    (length (contract-m2s contract))
-				    vorname name strasse plz ort email telefon
-				    (if mail-certificate "ja" "nein")
-				    (if donationcert-yearly "ja" "nein")
-				    email vorname name strasse plz ort
-				    contract-id))))
+									     contract-id
+									     (length (contract-m2s contract))
+									     vorname name strasse plz ort email telefon
+									     (if mail-certificate "ja" "nein")
+									     (if donationcert-yearly "ja" "nein")
+									     email vorname name
+									     strasse plz ort
+									     *website-url* contract-id))
+					       (make-instance 'text-mime
+							      :type "text"
+							      :subtype (format nil "xml; name=\"contract-~A.xml\"" contract-id)
+							      :charset "utf-8"
+							      :encoding :quoted-printable
+							      :content (format nil "
+<sponsor>
+ ~{<~A>~A</~A>~}
+</sponsor>
+"
+									       (apply #'append (mapcar #'(lambda (cons)
+													   (list (car cons)
+														 (if (find #\Newline (cdr cons))
+														     (format nil "<![CDATA[~A]]>" (cdr cons))
+														     (cdr cons))
+														 (car cons)))
+												       (all-request-params req)))))
+					       (make-instance 'text-mime
+							      :type "text"
+							      :subtype (format nil "x-vcard; name=\"contract-~A.vcf\"" contract-id)
+							      :charset "utf-8"
+							      :content (make-vcard :contract-id contract-id
+										   :sponsor-id sponsor-id
+										   :donationcert-yearly donationcert-yearly
+										   :vorname vorname
+										   :nachname name
+										   :strasse strasse
+										   :postcode plz
+										   :ort ort
+										   :email email
+										   :tel telefon))))))
+      (send-system-mail :subject (format nil "Ueberweisungsformular-Spenderdaten - Sponsor-ID ~D Contract-ID ~D"
+					 sponsor-id contract-id)
+			:content-type "multipart/mixed"
+			:more-headers t
+			:text (with-output-to-string (s) (print-mime s mime t t))))))
 
-(defun mail-request-parameters (req subject)
-  (send-system-mail :subject subject
-		    :content-type "text/html; charset=UTF-8"
-		    :text (format nil "
+(defun mail-worldpay-sponsor-data (req)
+  (with-query-params (req cartId)
+    (let* ((contract (store-object-with-id (parse-integer cartId)))
+	   (mime (make-instance 'multipart-mime
+				:subtype "mixed"
+				:content (list (make-instance 'text-mime
+							      :type "text"
+							      :subtype "html"
+							      :charset "utf-8"
+							      :encoding :quoted-printable
+							      :content (format nil "
 <table border=\"1\">
  <tr>
   <th>Parameter</th>
@@ -137,4 +258,35 @@
  ~{<tr><td>~A</td><td>~A</td></tr>~}
 </table>
 "
-				  (apply #'append (mapcar #'(lambda (cons) (list (car cons) (cdr cons))) (all-request-params req))))))
+									       (apply #'append (mapcar #'(lambda (cons) (list (car cons) (cdr cons)))
+												       (sort (copy-list (all-request-params req))
+													     #'string-lessp
+													     :key #'car)))))
+					       (make-instance 'text-mime
+							      :type "text"
+							      :subtype (format nil "xml; name=\"contract-~A.xml\"" (store-object-id contract))
+							      :charset "utf-8"
+							      :encoding :quoted-printable
+							      :content (format nil "
+<sponsor>
+ ~{<~A>~A</~A>~}
+</sponsor>
+"
+									       (apply #'append (mapcar #'(lambda (cons)
+									       (list (car cons)
+										     (if (find #\Newline (cdr cons))
+											 (format nil "<![CDATA[~A]]>" (cdr cons))
+											 (cdr cons))
+										     (car cons)))
+												       (all-request-params req)))))
+					       (make-instance 'text-mime
+							      :type "text"
+							      :subtype (format nil "x-vcard; name=\"contract-~A.vcf\"" (store-object-id contract))
+							      :charset "utf-8"
+							      :content (worldpay-callback-request-to-vcard req))))))
+      (send-system-mail :subject (format nil "Online-Spenderdaten - Sponsor-ID ~D Contract-ID ~D"
+					 (store-object-id (contract-sponsor contract))
+					 (store-object-id contract))
+			:content-type "multipart/mixed"
+			:more-headers t
+			:text (with-output-to-string (s) (print-mime s mime t t))))))

Modified: trunk/projects/bos/m2/make-certificate.lisp
===================================================================
--- trunk/projects/bos/m2/make-certificate.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/m2/make-certificate.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -27,13 +27,13 @@
 ;; bzw. im Dateisystem für den Download durch den Spender abgelegt
 ;; werden.
 
-(defun make-certificate (contract name &key (address ""))
+(defun make-certificate (contract name &key (address "") (language "en"))
   "Erzeugen einer FDF-Datei für das Ausfüllen der Urkunde.  Wenn das
 optionale address-Argument übergeben wird, wird die Urkunde per Post
 verschickt und entsprechend eine andere Vorlage ausgewählt als für den
 Download der Urkunde"
   (let ((sponsor (contract-sponsor contract)))
-    (make-fdf-file (contract-fdf-pathname contract)
+    (make-fdf-file (contract-fdf-pathname contract language)
 		   :datum (format-date-time (contract-date contract) :show-time nil)
 		   :name name
 		   :address address

Modified: trunk/projects/bos/m2/news.lisp
===================================================================
--- trunk/projects/bos/m2/news.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/m2/news.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -4,7 +4,7 @@
 
 (in-package :bos.m2)
 
-(define-persistent-class news-item ()
+(define-persistent-class news-item (rss-item)
   ((time :read :initform (get-universal-time))
    (title :none :initform (make-string-hash-table))
    (text :none :initform (make-string-hash-table))))
@@ -27,9 +27,13 @@
 (defmethod news-item-text ((news-item news-item) language)
   (slot-string news-item 'text language))
 
+(defun news-item-published (item language)
+  (and (slot-string item 'title language nil)
+       (slot-string item 'text language nil)))
+
 (defun all-news-items (&optional language)
   (if language
-      (remove-if (complement #'(lambda (news-item) (and (slot-string news-item 'title language nil)
-							(slot-string news-item 'text language nil))))
-		 (store-objects-with-class 'news-item))
-      (sort (copy-list (store-objects-with-class 'news-item)) #'> :key #'news-item-time)))
\ No newline at end of file
+      (remove-if-not (lambda (item) (news-item-published item language))
+		     (store-objects-with-class 'news-item))
+      (sort (copy-list (store-objects-with-class 'news-item)) #'> :key #'news-item-time)))
+

Modified: trunk/projects/bos/m2/packages.lisp
===================================================================
--- trunk/projects/bos/m2/packages.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/m2/packages.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -34,8 +34,11 @@
 	:bknr.web
 	:bknr.images
 	:bknr.statistics
+	:bknr.rss
 	:bos.m2.config
 	:net.post-office
+	:cxml
+	:cl-mime
 	:cl-gd)
   (:shadowing-import-from :cl-interpol #:quote-meta-chars)
   (:export #:m2-store
@@ -95,11 +98,13 @@
            #:contract-paidp
            #:contract-date
            #:contract-m2s
+	   #:contract-bounding-box
 	   #:contract-color
 	   #:contract-cert-issued
            #:contract-set-paidp
 	   #:contract-price
 	   #:contract-issue-cert
+	   #:contract-worldpay-trans-id
 	   #:contract-pdf-pathname
 	   #:contract-pdf-url
 	   #:contract-download-only-p
@@ -174,9 +179,9 @@
 
 	   #:mail-fiscal-certificate-to-office
 	   #:mail-instructions-to-sponsor
-	   #:mail-transfer-indication
 	   #:mail-info-request
-	   #:mail-request-parameters
+	   #:mail-manual-sponsor-data
+	   #:mail-worldpay-sponsor-data
 
 	   #:*cert-download-directory*))
 

Modified: trunk/projects/bos/make-base-lisp.lisp
===================================================================
--- trunk/projects/bos/make-base-lisp.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/make-base-lisp.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,8 +1,8 @@
 ;; create base lisp image
 
-(compile-file "../bknr/patches/patch-around-mop-cmucl19a.lisp")
-(load "../bknr/patches/patch-around-mop-cmucl19a.x86f")
-(load "../thirdparty/asdf/asdf.lisp")
+(compile-file "../../bknr/patches/patch-around-mop-cmucl19a.lisp")
+(load "../../bknr/patches/patch-around-mop-cmucl19a.x86f")
+(load "../../thirdparty/asdf/asdf.lisp")
 
 (defun setup-registry ()
   (format t "; setting up ASDF registry, please be patient...")
@@ -11,12 +11,12 @@
 	    (pushnew (make-pathname :directory (pathname-directory asd-pathname))
 		     asdf:*central-registry*
 		     :test #'equal))
-	(remove "asd" (directory #p"../**/")
+	(remove "asd" (directory #p"../../**/")
 		:test (complement #'equal)
 		:key #'pathname-type))
   (format t " ~D directories found~%" (length asdf:*central-registry*)))
 
 (setup-registry)
 
-(save-lisp "home:cmucl.core")
+(save-lisp "cmucl.core")
 

Copied: trunk/projects/bos/payment-website/images/certificate_en.jpg (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/images/certificate_en.jpg)


Property changes on: trunk/projects/bos/payment-website/images/certificate_en.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: trunk/projects/bos/payment-website/images/projekt_pic_en.jpg (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/images/projekt_pic_en.jpg)


Property changes on: trunk/projects/bos/payment-website/images/projekt_pic_en.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: trunk/projects/bos/payment-website/images/ring_detail_en.jpg (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/images/ring_detail_en.jpg)


Property changes on: trunk/projects/bos/payment-website/images/ring_detail_en.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: trunk/projects/bos/payment-website/images/ring_en.jpg (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/images/ring_en.jpg)


Property changes on: trunk/projects/bos/payment-website/images/ring_en.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: trunk/projects/bos/payment-website/images/statistics (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/images/statistics)


Property changes on: trunk/projects/bos/payment-website/images/statistics
___________________________________________________________________
Name: svn:ignore
   + *


Modified: trunk/projects/bos/payment-website/infosystem/bilder/uebersichtskarte_klein.gif
===================================================================
(Binary files differ)

Modified: trunk/projects/bos/payment-website/infosystem/de/satellitenkarte.htm
===================================================================
--- trunk/projects/bos/payment-website/infosystem/de/satellitenkarte.htm	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/infosystem/de/satellitenkarte.htm	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,6 +5,7 @@
 	<head>
 		<title>Satellitenkarte - Samboja Lestari</title>
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" charset="utf-8" />
+		<meta http-equiv="imagetoolbar" content="no"/>
 
 		<link href="../satellitenkarte_style.css" rel="stylesheet"/>
 		<script language="JavaScript" type="text/JavaScript" src="messages.js"></script>
@@ -143,7 +144,7 @@
 		  </form>	   
 		</div>
 	</div>
-	<div id="UebersichtKlein" style="position:absolute; width:138px; height:132px; z-index:10; left: 10px; top: 79px;" class="KarteRahmen"> 
+	<div id="UebersichtKlein" style="position:absolute; width:138px; height:76px; z-index:10; left: 10px; top: 79px;" class="KarteRahmen"> 
 	  <table width="138" border="0" cellspacing="0" cellpadding="0">
 		<tr> 
 		  <td class="InfoKopf">Ãœbersichtskarte</td>
@@ -151,7 +152,7 @@
 		<tr> 
 		  <td align="center" valign="middle"><div id="UebersichtPosition" style="position:absolute; width:4px; height:4px; z-index:5"><img src="../bilder/spacer.gif" width="4" height="4" border="0"/></div>
 		   <a href="#" class="Navigation" onclick="Uebersicht_anzeigen(); self.focus();">
-		    <img src="../bilder/uebersichtskarte_klein.gif" width="118" height="118" border="0"/>
+		    <img src="../bilder/uebersichtskarte_klein.gif" width="118" height="62" border="0"/>
 		   </a>
 		  </td>
 		</tr>
@@ -200,7 +201,7 @@
 	  <div id="Faehnchen" style="position:absolute; width:120px; height:15px; z-index:7; left: 169px; top: 100px; visibility: hidden;">
 	   <img src="../bilder/spacer.gif" width="1" height="1"/>
 	  </div>
-	  <div id="Uebersichthome" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 220px; visibility: inherit;" class="Navigation">
+	  <div id="Uebersichthome" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 164px; visibility: inherit;" class="Navigation">
 	   Points of Interest 
 	   <div id="UebersichtPoiNavi" style="position:absolute; width:125px; height:80px; z-index:7; left: 19px; top: 17px; visibility: inherit;"></div>
 	  </div>
@@ -302,7 +303,7 @@
 		<div id="ThumbLink5" style="position:absolute; width:55px; height:55px; z-index:4; top: 73px; left: 60px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(5)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
 		<div id="ThumbLink6" style="position:absolute; width:55px; height:55px; z-index:4; top: 73px; left: 117px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(6)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
 	  </div>
-	  <div id="home" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 218px; visibility: inherit;" class="NavigationAktiv">
+	  <div id="home" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 164px; visibility: inherit;" class="NavigationAktiv">
 	   Points of Interest
 	   <div id="PoiNavi" style="position:absolute; width:125px; height:80px; z-index:7; left: 19px; top: 17px; visibility: inherit;"></div>
 	  </div>
@@ -310,6 +311,12 @@
 	<div id="qmDetail" style="position:absolute; width:1px; height:1; z-index:4; left: 0px; top: 0px; visibility: hidden;"> 
 	  <div id="qmDetailKarte" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen"> 
 		<div id="qmLupe" style="position:absolute; width:36px; height:24px; z-index:11; visibility: inherit;"><img src="../bilder/lupe.gif" width="36" height="24"/></div>
+		<div id="selected_contract" style="position:absolute; z-index:10; visibility: inherit;">
+		 <img id="selected_contract_img" src="../bilder/spacer.gif" width="1" height="1"/>
+		</div>
+		<div id="own_contract" style="position:absolute; z-index:10; visibility: inherit;">
+		 <img id="own_contract_img" src="../bilder/spacer.gif" width="1" height="1"/>
+		</div>
 		<div id="LayersMenu" class="KarteRahmen" style="position: absolute; bottom: 31px; right: 1px; z-index: 15; visibility: inherit;">
 		  <table width="90" border="0" cellspacing="0" cellpadding="0">
 		    <tr> 
@@ -398,6 +405,12 @@
 	   "verkaufte" m²
 	  </div>
 	  <div id="qmAusschnitt" style="position:absolute; width:200px; height:115px; z-index:7; left: 172px; top: 512px; visibility: inherit;">
+		<div id="lupe_selected_contract" style="position:absolute; z-index:10; visibility: inherit;">
+		 <img id="lupe_selected_contract_img" src="../bilder/spacer.gif" width="1" height="1"/>
+		</div>
+		<div id="lupe_own_contract" style="position:absolute; z-index:10; visibility: inherit;">
+		 <img id="lupe_own_contract_img" src="../bilder/spacer.gif" width="1" height="1"/>
+		</div>
 		<table width="1800" height="1800" border="0" cellpadding="0" cellspacing="0">
 		  <tr>
 			<td><img name="qmlupe11" width="450" height="450" id="qmlupe11"/></td>

Copied: trunk/projects/bos/payment-website/infosystem/dk (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/infosystem/dk)

Modified: trunk/projects/bos/payment-website/infosystem/en/satellitenkarte.htm
===================================================================
--- trunk/projects/bos/payment-website/infosystem/en/satellitenkarte.htm	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/infosystem/en/satellitenkarte.htm	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,447 +1,460 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html>	  
-	<head>
-		<title>Satellite View - Samboja Lestari</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" charset="utf-8" />
-
-		<link href="../satellitenkarte_style.css" rel="stylesheet"/>
-		<script language="JavaScript" type="text/JavaScript" src="messages.js"></script>
-		<script language="JavaScript" type="text/JavaScript" src="../javascript.js"></script>
-		<script language="JavaScript" type="text/JavaScript">
-			<!--
-			function MM_reloadPage(init) {  //reloads the window if Nav4 resized
-			  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
-				document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
-			  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
-			}
-			MM_reloadPage(true);
-			
-			//-->
-		</script>
-		<style type="text/css">
-			<!--
-			body {
-				margin-left: 0px;
-				margin-top: 0px;
-				margin-right: 0px;
-				margin-bottom: 0px;
-			}
-			-->
-		</style>
-	</head>
-	<body>
-	<table width="740" height="500" border="0" cellpadding="0" cellspacing="0">
-	  <tr> 
-		<td height="50" colspan="3"><img src="../bilder/head.gif" width="740" height="50"/></td>
-	  </tr>
-	  <tr> 
-		<td height="20" class="BreadCrumbs"><img src="../bilder/spacer.gif" width="1" height="1"/></td>
-		<td height="20" colspan="2" class="BreadCrumbs"><img src="../bilder/spacer.gif" width="1" height="1"/></td>
-	  </tr>
-	  <tr> 
-		<td width="140" height="430" align="left" valign="top" class="SpaltenBK"><img src="../bilder/spacer.gif" width="1" height="1"/></td>
-		<td width="380" height="430" align="left" valign="top"><img src="../bilder/spacer.gif" width="1" height="1"/></td>
-		<td width="180" height="430" align="left" valign="top" class="SpaltenBK"><img src="../bilder/spacer.gif" width="1" height="1"/> </td>
-	  </tr>
-	</table>
-	<div id="Loginfehler" style="position:absolute; width:138px; height:88px; z-index:21; left: 10px; top: 403px; visibility: hidden;" class="KarteRahmen"> 
-		<table width="138" border="0" cellspacing="0" cellpadding="0">
-		  <tr> 
-			<td colspan="2" class="InfoKopf">Login Error</td>
-		  </tr>
-		</table>
-		<div style="position:absolute; width:138px; z-index:21; left: 0px; top: 10px; visibility: inherit;" class="InfoZelle">
-			<br/>Error while logging in, please check your donor ID and your password or master code.
-			<img src="/images/pfeil_link_on.gif" border="0"/>
-			<a class="FaehnchenLink" href="#" onclick="document.getElementById('Loginfehler').style.visibility = 'hidden'">
-			    weiter
-			</a>
-		</div>
-	</div>
-	<div id="Anmelden" style="position:absolute; width:138px; height:88px; z-index:20; left: 10px; top: 403px; visibility: hidden;" class="KarteRahmen"> 
-		<table width="138" border="0" cellspacing="0" cellpadding="0">
-		  <tr> 
-			<td colspan="2" class="InfoKopf">"my" m²</td>
-		  </tr>
-		</table>
-		<div id="AnmeldenInhalt" style="position:absolute; width:138px; z-index:20; left: 0px; top: 10px; visibility: inherit;"> 
-		  <form id="form0" name="form0" onsubmit="return do_login();" method="get">
-			<table width="138" border="0" cellspacing="0" cellpadding="0">
-			  <tr> 
-				<td colspan="2" height="5" class="InfoZelle">
-				</td>
-			  </tr>
-			  <tr> 
-				<td colspan="2" class="InfoZelle">
-					Donor ID
-				</td>
-			  </tr>
-			  <tr>
-				<td colspan="2" class="InfoZelle">
-					<input name="__sponsorid" type="text" class="FormSponsorenID" onFocus="sponsorfeld_leeren();"/>
-				</td>
-			  </tr>
-			  <tr> 
-				<td colspan="2" class="InfoZelle">
-					Password
-				</td>
-			  </tr>
-			  <tr> 
-				<td class="InfoZelleKennwort">
-					<input name="__password" type="password" class="FormKennwort"/> 
-				</td>
-				<td class="InfoZelleSubmit">
-					<a href="#" onclick="do_login();">
-						<img src="../bilder/submit.gif" width="18" height="18" border="0"/>
-					</a>
-				</td>
-			  </tr>
-			</table>
-			<input type="submit" name="Submit" value="anmelden" class="submitButton"/>
-		  </form>
-		</div>
-	</div>
-	<div id="SponsorInfo" style="position:absolute; width:138px; height:78px; z-index:20; left: 10px; top: 413px; visibility: hidden;" class="KarteRahmen">
-		   <table width="138" border="0" cellspacing="0" cellpadding="0">
-			<tr>
-			 <td colspan="2" class="InfoKopf">Logged in as</td>
-			</tr>
-			<tr>
-			 <td class="InfoZelle" height="20">
-			  <div id="SponsorInfoText" style="position:absolute; width:120px; height:10px; z-index:21; left: 10px; top:20px; visibility: inherit;"></div>
-			 </td>
-			</tr>
-			<tr>
-			 <td colspan="2">
-			  <img src="../bilder/spacer.gif" width="1" height="18"/>
-			 </td>
-			</tr>
-		   </table>
-		<div id="SponsorInfoInhalt" style="position:absolute; width:138px; z-index:20; left: 0px; top: 50px; visibility: inherit;"> 
-		  <form id="form1" name="form1" action="/infosystem" method="post">
-			<input name="logout" type="hidden" value="1"/>
-			<table width="138" border="0" cellspacing="0" cellpadding="0">
-			<tr>
-			 <td class="InfoZelleKennwort">
-			  <a class="FaehnchenLink" href="#" onclick="document.location.href = '/de/profil'">
-			   <img src="/images/pfeil_link_on.gif" border="0"/>
-			   Profil
-			  </a>
-			 </td>
-			</tr>
-			<tr>
-			 <td class="InfoZelleKennwort">
-			  <a class="FaehnchenLink" href="#" onclick="document.form1.submit();">
-			   <img src="/images/pfeil_back.gif" border="0"/>
-			   Logout
-			  </a>
-			 </td>
-			</tr>
-			</table>
-		  </form>	   
-		</div>
-	</div>
-	<div id="UebersichtKlein" style="position:absolute; width:138px; height:132px; z-index:10; left: 10px; top: 79px;" class="KarteRahmen"> 
-	  <table width="138" border="0" cellspacing="0" cellpadding="0">
-		<tr> 
-		  <td class="InfoKopf">Overview</td>
-		</tr>
-		<tr> 
-		  <td align="center" valign="middle"><div id="UebersichtPosition" style="position:absolute; width:4px; height:4px; z-index:5"><img src="../bilder/spacer.gif" width="4" height="4" border="0"/></div>
-		   <a href="#" class="Navigation" onclick="Uebersicht_anzeigen(); self.focus();">
-		    <img src="../bilder/uebersichtskarte_klein.gif" width="118" height="118" border="0"/>
-		   </a>
-		  </td>
-		</tr>
-	  </table>
-	</div>
-	<div id="Uebersicht" style="position:absolute; width:1px; height:1px; z-index:4; left: 0px; top: 0px; visibility: visible;">
-	  <div id="Info3" style="position:absolute; width:178px; height:132px; z-index:3; top: 329px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
-		<table width="178" border="0" cellspacing="0" cellpadding="0">
-		  <tr> 
-			<td class="InfoKopf">"Sale" State</td>
-		  </tr>
-		  <tr> 
-			<td width="160">
-			 <div id="Info3Text" style="position:absolute; width:160px; height:105px; z-index:4; top: 25px;" class="InfoZelle">
-			 </div>
-			</td>
-		  </tr>
-		</table>
-	  </div>
-	  <div id="Info2" style="position:absolute; width:178px; height:107px; z-index:3; top: 205px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
-		<table width="178" border="0" cellspacing="0" cellpadding="0">
-		  <tr> 
-			<td height="30" class="InfoKopf">Samboja Lestari is located on Borneo</td>
-		  </tr>
-		  <tr> 
-			<td width="160" height="74" align="center" valign="middle"><img src="../bilder/uebersicht_info2.gif" width="178" height="78"/></td>
-		  </tr>
-		</table>
-	  </div>
-	  <div id="Info1" style="position:absolute; width:178px; height:113px; z-index:14; top: 79px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
-		<table width="178" border="0" cellspacing="0" cellpadding="0">
-		  <tr> 
-			<td height="30" class="InfoKopf">Samboja Lestari is located in Indonesia</td>
-		  </tr>
-		  <tr> 
-			<td width="160" height="74" align="center" valign="middle"><img src="../bilder/uebersicht_info1.gif" width="178" height="83"/></td>
-		  </tr>
-		</table>
-	  </div>
-	  <div id="KartUebersicht" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen"> 
-		<div align="right">
-		<img src="../bilder/karte_uebersicht.jpg" width="360" height="360"/>
-		<br/>
-		</div>
-	  </div>
-	  <div id="Faehnchen" style="position:absolute; width:120px; height:15px; z-index:7; left: 169px; top: 100px; visibility: hidden;">
-	   <img src="../bilder/spacer.gif" width="1" height="1"/>
-	  </div>
-	  <div id="Uebersichthome" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 220px; visibility: inherit;" class="Navigation">
-	   Points of Interest 
-	   <div id="UebersichtPoiNavi" style="position:absolute; width:125px; height:80px; z-index:7; left: 19px; top: 17px; visibility: inherit;"></div>
-	  </div>
-	</div>
-	<div id="PoiDetail" style="position:absolute; width:1px; height:1px; z-index:4; left: 0px; top: 0px; visibility: hidden;"> 
-	  <div id="PoiDetailKarte" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen">
-		<div id="PoiPos" style="position:absolute; width:16px; height:16px; z-index:2; visibility: inherit;">
-		        <img border="0" name="poiicon" id="poiicon" width="16" height="16"/>
-		</div>
-		<div id="PoiMenu" style="position: absolute; vertical-align: bottom; bottom: 31px; left: 1px; z-index: 10; visibility: inherit;">
-		</div>
-	        <div id="Luftbild" style="position:absolute; width:360px; height:360px; z-index:9; left: 0px; top: 0px; visibility: hidden;">
-		    <img src="../bilder/submit.gif" name="poiluftbild" width="360" height="360" border="0" />
-		</div>
-	        <div id="Panorama" style="position:absolute; width:360px; height:360px; z-index:9; left: 0px; top: 0px; border: 0px; visibility: hidden;">
-		    <div id="PanoramaApplet" style="position: absolute; top: 0px; left: 0px; width:360px; height:340px;">
-		    </div>
-		    <div id="PanoramaFooter" style="position: absolute; top: 0px; left: 0px; width:360px; height:360px; color: white; background-color: black; " align="right">
-		    </div>
-		</div>
-		<div align="right"> 
-		  <table width="360" height="360" border="0" cellpadding="0" cellspacing="0">
-			<tr> 
-			  <td height="90" width="90"><img name="img11" width="90" height="90" id="img11"/></td>
-			  <td height="90" width="90"><img name="img21" width="90" height="90" id="img21"/></td>
-			  <td height="90" width="90"><img name="img31" width="90" height="90" id="img31"/></td>
-			  <td height="90" width="90"><img name="img41" width="90" height="90" id="img41"/></td>
-			</tr>
-			<tr> 
-			  <td height="90" width="90"><img name="img12" width="90" height="90" id="img12"/></td>
-			  <td height="90" width="90"><img name="img22" width="90" height="90" id="img22"/></td>
-			  <td height="90" width="90"><img name="img32" width="90" height="90" id="img32"/></td>
-			  <td height="90" width="90"><img name="img42" width="90" height="90" id="img42"/></td>
-			</tr>
-			<tr> 
-			  <td height="90" width="90"><img name="img13" width="90" height="90" id="img13"/></td>
-			  <td height="90" width="90"><img name="img23" width="90" height="90" id="img23"/></td>
-			  <td height="90" width="90"><img name="img33" width="90" height="90" id="img33"/></td>
-			  <td height="90" width="90"><img name="img43" width="90" height="90" id="img43"/></td>
-			</tr>
-			<tr> 
-			  <td height="90" width="90"><img name="img14" width="90" height="90" id="img14"/></td>
-			  <td height="90" width="90"><img name="img24" width="90" height="90" id="img24"/></td>
-			  <td height="90" width="90"><img name="img34" width="90" height="90" id="img34"/></td>
-			  <td height="90" width="90"><img name="img44" width="90" height="90" id="img44"/></td>
-			</tr>
-		  </table>
-		</div>
-	  </div>
-	  <div id="PoiDetailThumb" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen"> 
-		<div id="zurueck" style="position:absolute; top:-19px; left:290px; width:70px; height:19px; z-index:7; visibility: inherit;"><a href="#" onClick="Thumbausblenden();" class="Navigation"><img src="/images/pfeil_back.gif" border="0"/>back</a></div>    <div align="right"> 
-		  <table width="360" height="360" border="0" cellpadding="0" cellspacing="0">
-			<tr> 
-			  <td colspan="4"><img name="DetailThumb" width="360" height="360" id="DetailThumb"/></td>
-			</tr>
-		  </table>
-		</div>
-	  </div>
-	  <div id="PoiInfo" style="position:absolute; width:178px; height:238px; z-index:3; top: 222px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
-		<table width="178" border="0" cellspacing="0" cellpadding="0">
-		  <tr> 
-			<td class="InfoKopf">Information</td>
-		  </tr>
-		  <tr> 
-			<td width="160" align="left" valign="top"><div id="PoiInfoText" style="position:absolute; width:158px; height:210px; z-index:4; left: 0px; top: 20px; overflow: auto; visibility: inherit;" class="InfoZelle"></div></td>
-		  </tr>
-		</table>
-	  </div>
-	  <div id="PoiThumb" style="position:absolute; width:178px; height:131px; z-index:3; top: 79px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
-		<table width="178" height="131" border="0" cellpadding="0" cellspacing="0">
-		  <tr> 
-			<td class="InfoKopf">Picture Gallery</td>
-		  </tr>
-		  <tr>
-		  <td align="center" valign="middle"> <table width="174" border="0" cellpadding="0" cellspacing="0">
-			  <tr> 
-				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb1" width="55" height="55" id="thumb1"/></td>
-				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb2" width="55" height="55" id="thumb2"/></td>
-				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb3" width="55" height="55" id="thumb3"/></td>
-			  </tr>
-			  <tr> 
-				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb4" width="55" height="55" id="thumb4"/></td>
-				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb5" width="55" height="55" id="thumb5"/></td>
-				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb6" width="55" height="55" id="thumb6"/></td>
-			  </tr>
-			</table></td>
-		  </tr>
-		</table>
-		<div id="ThumbLink1" style="position:absolute; width:55px; height:55px; z-index:4; top: 16px; left: 3px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(1)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
-		<div id="ThumbLink2" style="position:absolute; width:55px; height:55px; z-index:4; top: 16px; left: 60px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(2)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
-		<div id="ThumbLink3" style="position:absolute; width:55px; height:55px; z-index:4; top: 16px; left: 117px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(3)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
-		<div id="ThumbLink4" style="position:absolute; width:55px; height:55px; z-index:4; top: 73px; left: 3px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(4)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
-		<div id="ThumbLink5" style="position:absolute; width:55px; height:55px; z-index:4; top: 73px; left: 60px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(5)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
-		<div id="ThumbLink6" style="position:absolute; width:55px; height:55px; z-index:4; top: 73px; left: 117px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(6)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
-	  </div>
-	  <div id="home" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 218px; visibility: inherit;" class="NavigationAktiv">
-	   Points of Interest
-	   <div id="PoiNavi" style="position:absolute; width:125px; height:80px; z-index:7; left: 19px; top: 17px; visibility: inherit;"></div>
-	  </div>
-	</div>
-	<div id="qmDetail" style="position:absolute; width:1px; height:1; z-index:4; left: 0px; top: 0px; visibility: hidden;"> 
-	  <div id="qmDetailKarte" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen"> 
-		<div id="qmLupe" style="position:absolute; width:36px; height:24px; z-index:11; visibility: inherit;"><img src="../bilder/lupe.gif" width="36" height="24"/></div>
-		<div id="LayersMenu" class="KarteRahmen" style="position: absolute; bottom: 31px; right: 1px; z-index: 15; visibility: inherit;">
-		  <table width="90" border="0" cellspacing="0" cellpadding="0">
-		    <tr> 
-		      <td align="center" class="InfoKopf">Layers</td>
-		    </tr>
-		    <tr> 
-		      <td valign="top" align="center">
-		        <a class="LayersMenuItemActive" id="LayerMenu_background" href="#" onclick="toggle_layer('background')">Sat Image</a><br/>
-		      </td>
-		    </tr>
-		    <tr> 
-		      <td valign="top" align="center">
-		        <a class="LayersMenuItemActive" id="LayerMenu_areas" href="#" onclick="toggle_layer('areas')">Sale Areas</a><br/>
-		      </td>
-		    </tr>
-		    <tr>
-		      <td valign="top" align="center">
-		        <a class="LayersMenuItemActive" id="LayerMenu_contracts" href="#" onclick="toggle_layer('contracts')">Sold</a><br/>
-		      </td>
-		    </tr>
-		  </table>
-		</div>
-		<img id="MapCaptureImage" style="position: absolute; top: 0px; left: 0px; z-index: 12; visibility: inherit;"
-		     width="360" height="360"
-		     border="0" src="../bilder/spacer.gif" />
-		<div align="right" style="z-index: 10;"> 
-		  <table width="360" height="360" border="0" cellpadding="0" cellspacing="0">
-			<tr> 
-			  <td width="90" height="90"><img name="qmimg11" width="90" height="90" id="qmimg11"/></td>
-			  <td height="90" width="90"><img name="qmimg21" width="90" height="90" id="qmimg21"/></td>
-			  <td height="90" width="90"><img name="qmimg31" width="90" height="90" id="qmimg31"/></td>
-			  <td height="90" width="90"><img name="qmimg41" width="90" height="90" id="qmimg41"/></td>
-			</tr>
-			<tr> 
-			  <td height="90" width="90"><img name="qmimg12" width="90" height="90" id="qmimg12"/></td>
-			  <td height="90" width="90"><img name="qmimg22" width="90" height="90" id="qmimg22"/></td>
-			  <td height="90" width="90"><img name="qmimg32" width="90" height="90" id="qmimg32"/></td>
-			  <td height="90" width="90"><img name="qmimg42" width="90" height="90" id="qmimg42"/></td>
-			</tr>
-			<tr> 
-			  <td height="90" width="90"><img name="qmimg13" width="90" height="90" id="qmimg13"/></td>
-			  <td height="90" width="90"><img name="qmimg23" width="90" height="90" id="qmimg23"/></td>
-			  <td height="90" width="90"><img name="qmimg33" width="90" height="90" id="qmimg33"/></td>
-			  <td height="90" width="90"><img name="qmimg43" width="90" height="90" id="qmimg43"/></td>
-			</tr>
-			<tr> 
-			  <td height="90" width="90"><img name="qmimg14" width="90" height="90" id="qmimg14"/></td>
-			  <td height="90" width="90"><img name="qmimg24" width="90" height="90" id="qmimg24"/></td>
-			  <td height="90" width="90"><img name="qmimg34" width="90" height="90" id="qmimg34"/></td>
-			  <td height="90" width="90"><img name="qmimg44" width="90" height="90" id="qmimg44"/></td>
-			</tr>
-		  </table> 
-		</div>
-	  </div>
-	  <div id="qmLaden" style="position:absolute; width:158px; height:16px; z-index:21; left: 560px; top: 165px; visibility: hidden;" class="Laden"> 
-		<div align="center" valign="middle">Please wait, loading ...</div>
-	  </div>
-	  <div id="qmAusschnittRahmen" style="position:absolute; width:178; height:131px; z-index:3; top: 99px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
-		<table width="178" border="0" cellspacing="0" cellpadding="0">
-		  <tr> 
-			<td class="InfoKopf" >click on "sold" m²s!</td>
-		  </tr>
-		  <tr>
-		  <td align="center" valign="middle">
-		        <img src="../bilder/spacer.gif" width="0" height="0"/>
-		  </td>
-		  </tr>
-		</table>
-	  </div>
-	  <div id="qmInfo" style="position:absolute; width:178px; height:218px; z-index:10; top: 242px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
-		<table width="178" border="0" cellspacing="0" cellpadding="0">
-		  <tr> 
-			<td class="InfoKopf">Donor Information</td>
-		  </tr>
-		  <tr> 
-		   <td width="160" align="left" valign="top">
-		    <div id="qmInfoText" style="position:absolute; width:158px; height:195px; left: 0px; top: 20px; overflow: hidden; visibility: inherit;"
-		         class="InfoZelle" onMouseOver="enlarge_info();" onMouseOut="collapse_info();">
-		    </div>
-		   </td>
-		  </tr>
-		</table>
-	  </div>
-	  <div id="qmhome" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 105px; visibility: inherit;" class="NavigationAktiv">
-	   <img src="/images/pfeil_link_on.gif" width="29" height="12" border="0"/>
-	   "sold" m²
-	  </div>
-	  <div id="qmAusschnitt" style="position:absolute; width:200px; height:115px; z-index:7; left: 172px; top: 512px; visibility: inherit;">
-		<table width="1800" height="1800" border="0" cellpadding="0" cellspacing="0">
-		  <tr>
-			<td><img name="qmlupe11" width="450" height="450" id="qmlupe11"/></td>
-			<td><img name="qmlupe21" width="450" height="450" id="qmlupe21"/></td>
-			<td><img name="qmlupe31" width="450" height="450" id="qmlupe31"/></td>
-			<td><img name="qmlupe41" width="450" height="450" id="qmlupe41"/></td>
-		  </tr>
-		  <tr>
-			<td><img name="qmlupe12" width="450" height="450" id="qmlupe12"/></td>
-			<td><img name="qmlupe22" width="450" height="450" id="qmlupe22"/></td>
-			<td><img name="qmlupe32" width="450" height="450" id="qmlupe32"/></td>
-			<td><img name="qmlupe42" width="450" height="450" id="qmlupe42"/></td>
-		  </tr>
-		  <tr>
-			<td><img name="qmlupe13" width="450" height="450" id="qmlupe13"/></td>
-			<td><img name="qmlupe23" width="450" height="450" id="qmlupe23"/></td>
-			<td><img name="qmlupe33" width="450" height="450" id="qmlupe33"/></td>
-			<td><img name="qmlupe43" width="450" height="450" id="qmlupe43"/></td>
-		  </tr>
-		  <tr>
-			<td><img name="qmlupe14" width="450" height="450" id="qmlupe14"/></td>
-			<td><img name="qmlupe24" width="450" height="450" id="qmlupe24"/></td>
-			<td><img name="qmlupe34" width="450" height="450" id="qmlupe34"/></td>
-			<td><img name="qmlupe44" width="450" height="450" id="qmlupe44"/></td>
-	
-		  </tr>
-		</table>
-	  </div>
-	</div>
-	<div id="Ueberschrift" style="position:absolute; width:290px; height:20px; z-index:5; left: 169px; top: 80px;">Samboja Lestari - Overview</div>
-	<div id="Untertitel" style="position:absolute; width:350px; height:20px; z-index:5; left: 169px; top: 469px;" align="right">More than 17 million square meters for Eternity(?)</div>
-	<div class="Links" style="position:absolute; width:178px; height:132px; z-index:3; top: 472px; left: 550px;">
-	 <span style="padding-right:2px">
-	  <img src="/images/pfeil_link_on.gif" border="0" />
-	  <a class="FaehnchenLink" href="javascript:window_infosystem_hilfe();"> Help </a>
-	 </span>
-	 <span style="padding-right:2px">
-	  <img src="/images/pfeil_link_on.gif" border="0" />
-	  <a class="FaehnchenLink" href="javascript:bestellung();"> Buy m²s </a>
-	 </span>
-	 <span style="padding-right:2px">
-	  <img src="/images/pfeil_link_on.gif" border="0" />
-	  <a class="FaehnchenLink" href="javascript:window.close();"> Close </a>
-	 </span>
-	</div>
-	<div id="dataqm" style="position:absolute; width:1px; height:1px; z-index:11; left: 1px; top: 1px;"></div>
-	<div id="debugger" style="position:absolute; width:400px; height:400px; z-index:21; left: 760px; top: 20px; visibility: hidden;" class="InfoZelle"></div>
-	<div id="data">
-		<iframe src="about:blank" height="0" width="0" name="data"> </iframe>
-	</div>
-	<script language="JavaScript">init();</script>
-	</body>
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>	  
+	<head>
+		<title>Satellite View - Samboja Lestari</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" charset="utf-8" />
+		<meta http-equiv="imagetoolbar" content="no"/>
+
+		<link href="../satellitenkarte_style.css" rel="stylesheet"/>
+		<script language="JavaScript" type="text/JavaScript" src="messages.js"></script>
+		<script language="JavaScript" type="text/JavaScript" src="../javascript.js"></script>
+		<script language="JavaScript" type="text/JavaScript">
+			<!--
+			function MM_reloadPage(init) {  //reloads the window if Nav4 resized
+			  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
+				document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
+			  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
+			}
+			MM_reloadPage(true);
+			
+			//-->
+		</script>
+		<style type="text/css">
+			<!--
+			body {
+				margin-left: 0px;
+				margin-top: 0px;
+				margin-right: 0px;
+				margin-bottom: 0px;
+			}
+			-->
+		</style>
+	</head>
+	<body>
+	<table width="740" height="500" border="0" cellpadding="0" cellspacing="0">
+	  <tr> 
+		<td height="50" colspan="3"><img src="../bilder/head.gif" width="740" height="50"/></td>
+	  </tr>
+	  <tr> 
+		<td height="20" class="BreadCrumbs"><img src="../bilder/spacer.gif" width="1" height="1"/></td>
+		<td height="20" colspan="2" class="BreadCrumbs"><img src="../bilder/spacer.gif" width="1" height="1"/></td>
+	  </tr>
+	  <tr> 
+		<td width="140" height="430" align="left" valign="top" class="SpaltenBK"><img src="../bilder/spacer.gif" width="1" height="1"/></td>
+		<td width="380" height="430" align="left" valign="top"><img src="../bilder/spacer.gif" width="1" height="1"/></td>
+		<td width="180" height="430" align="left" valign="top" class="SpaltenBK"><img src="../bilder/spacer.gif" width="1" height="1"/> </td>
+	  </tr>
+	</table>
+	<div id="Loginfehler" style="position:absolute; width:138px; height:88px; z-index:21; left: 10px; top: 403px; visibility: hidden;" class="KarteRahmen"> 
+		<table width="138" border="0" cellspacing="0" cellpadding="0">
+		  <tr> 
+			<td colspan="2" class="InfoKopf">Login Error</td>
+		  </tr>
+		</table>
+		<div style="position:absolute; width:138px; z-index:21; left: 0px; top: 10px; visibility: inherit;" class="InfoZelle">
+			<br/>Error while logging in, please check your sponsor ID and your password or master code.
+			<img src="/images/pfeil_link_on.gif" border="0"/>
+			<a class="FaehnchenLink" href="#" onclick="document.getElementById('Loginfehler').style.visibility = 'hidden'">
+			    continue
+			</a>
+		</div>
+	</div>
+	<div id="Anmelden" style="position:absolute; width:138px; height:88px; z-index:20; left: 10px; top: 403px; visibility: hidden;" class="KarteRahmen"> 
+		<table width="138" border="0" cellspacing="0" cellpadding="0">
+		  <tr> 
+			<td colspan="2" class="InfoKopf">"my" m²</td>
+		  </tr>
+		</table>
+		<div id="AnmeldenInhalt" style="position:absolute; width:138px; z-index:20; left: 0px; top: 10px; visibility: inherit;"> 
+		  <form id="form0" name="form0" onsubmit="return do_login();" method="get">
+			<table width="138" border="0" cellspacing="0" cellpadding="0">
+			  <tr> 
+				<td colspan="2" height="5" class="InfoZelle">
+				</td>
+			  </tr>
+			  <tr> 
+				<td colspan="2" class="InfoZelle">
+					Sponsor ID
+				</td>
+			  </tr>
+			  <tr>
+				<td colspan="2" class="InfoZelle">
+					<input name="__sponsorid" type="text" class="FormSponsorenID" onFocus="sponsorfeld_leeren();"/>
+				</td>
+			  </tr>
+			  <tr> 
+				<td colspan="2" class="InfoZelle">
+					Password
+				</td>
+			  </tr>
+			  <tr> 
+				<td class="InfoZelleKennwort">
+					<input name="__password" type="password" class="FormKennwort"/> 
+				</td>
+				<td class="InfoZelleSubmit">
+					<a href="#" onclick="do_login();">
+						<img src="../bilder/submit.gif" width="18" height="18" border="0"/>
+					</a>
+				</td>
+			  </tr>
+			</table>
+			<input type="submit" name="Submit" value="anmelden" class="submitButton"/>
+		  </form>
+		</div>
+	</div>
+	<div id="SponsorInfo" style="position:absolute; width:138px; height:78px; z-index:20; left: 10px; top: 413px; visibility: hidden;" class="KarteRahmen">
+		   <table width="138" border="0" cellspacing="0" cellpadding="0">
+			<tr>
+			 <td colspan="2" class="InfoKopf">Logged in as</td>
+			</tr>
+			<tr>
+			 <td class="InfoZelle" height="20">
+			  <div id="SponsorInfoText" style="position:absolute; width:120px; height:10px; z-index:21; left: 10px; top:20px; visibility: inherit;"></div>
+			 </td>
+			</tr>
+			<tr>
+			 <td colspan="2">
+			  <img src="../bilder/spacer.gif" width="1" height="18"/>
+			 </td>
+			</tr>
+		   </table>
+		<div id="SponsorInfoInhalt" style="position:absolute; width:138px; z-index:20; left: 0px; top: 50px; visibility: inherit;"> 
+		  <form id="form1" name="form1" action="/infosystem" method="post">
+			<input name="logout" type="hidden" value="1"/>
+			<table width="138" border="0" cellspacing="0" cellpadding="0">
+			<tr>
+			 <td class="InfoZelleKennwort">
+			  <a class="FaehnchenLink" href="#" onclick="document.location.href = '/en/profil'">
+			   <img src="/images/pfeil_link_on.gif" border="0"/>
+			   Profile
+			  </a>
+			 </td>
+			</tr>
+			<tr>
+			 <td class="InfoZelleKennwort">
+			  <a class="FaehnchenLink" href="#" onclick="document.form1.submit();">
+			   <img src="/images/pfeil_back.gif" border="0"/>
+			   Logout
+			  </a>
+			 </td>
+			</tr>
+			</table>
+		  </form>	   
+		</div>
+	</div>
+	<div id="UebersichtKlein" style="position:absolute; width:138px; height:76px; z-index:10; left: 10px; top: 79px;" class="KarteRahmen"> 
+	  <table width="138" border="0" cellspacing="0" cellpadding="0">
+		<tr> 
+		  <td class="InfoKopf">Overview</td>
+		</tr>
+		<tr> 
+		  <td align="center" valign="middle"><div id="UebersichtPosition" style="position:absolute; width:4px; height:4px; z-index:5"><img src="../bilder/spacer.gif" width="4" height="4" border="0"/></div>
+		   <a href="#" class="Navigation" onclick="Uebersicht_anzeigen(); self.focus();">
+		    <img src="../bilder/uebersichtskarte_klein.gif" width="118" height="62" border="0"/>
+		   </a>
+		  </td>
+		</tr>
+	  </table>
+	</div>
+	<div id="Uebersicht" style="position:absolute; width:1px; height:1px; z-index:4; left: 0px; top: 0px; visibility: visible;">
+	  <div id="Info3" style="position:absolute; width:178px; height:132px; z-index:3; top: 329px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
+		<table width="178" border="0" cellspacing="0" cellpadding="0">
+		  <tr> 
+			<td class="InfoKopf">"Sale" State</td>
+		  </tr>
+		  <tr> 
+			<td width="160">
+			 <div id="Info3Text" style="position:absolute; width:160px; height:105px; z-index:4; top: 25px;" class="InfoZelle">
+			 </div>
+			</td>
+		  </tr>
+		</table>
+	  </div>
+	  <div id="Info2" style="position:absolute; width:178px; height:107px; z-index:3; top: 205px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
+		<table width="178" border="0" cellspacing="0" cellpadding="0">
+		  <tr> 
+			<td height="30" class="InfoKopf">Samboja Lestari is located on Borneo</td>
+		  </tr>
+		  <tr> 
+			<td width="160" height="74" align="center" valign="middle"><img src="../bilder/uebersicht_info2.gif" width="178" height="78"/></td>
+		  </tr>
+		</table>
+	  </div>
+	  <div id="Info1" style="position:absolute; width:178px; height:113px; z-index:14; top: 79px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
+		<table width="178" border="0" cellspacing="0" cellpadding="0">
+		  <tr> 
+			<td height="30" class="InfoKopf">Samboja Lestari is located in Indonesia</td>
+		  </tr>
+		  <tr> 
+			<td width="160" height="74" align="center" valign="middle"><img src="../bilder/uebersicht_info1.gif" width="178" height="83"/></td>
+		  </tr>
+		</table>
+	  </div>
+	  <div id="KartUebersicht" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen"> 
+		<div align="right">
+		<img src="../bilder/karte_uebersicht.jpg" width="360" height="360"/>
+		<br/>
+		</div>
+	  </div>
+	  <div id="Faehnchen" style="position:absolute; width:120px; height:15px; z-index:7; left: 169px; top: 100px; visibility: hidden;">
+	   <img src="../bilder/spacer.gif" width="1" height="1"/>
+	  </div>
+	  <div id="Uebersichthome" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 164px; visibility: inherit;" class="Navigation">
+	   Points of Interest 
+	   <div id="UebersichtPoiNavi" style="position:absolute; width:125px; height:80px; z-index:7; left: 19px; top: 17px; visibility: inherit;"></div>
+	  </div>
+	</div>
+	<div id="PoiDetail" style="position:absolute; width:1px; height:1px; z-index:4; left: 0px; top: 0px; visibility: hidden;"> 
+	  <div id="PoiDetailKarte" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen">
+		<div id="PoiPos" style="position:absolute; width:16px; height:16px; z-index:2; visibility: inherit;">
+		        <img border="0" name="poiicon" id="poiicon" width="16" height="16"/>
+		</div>
+		<div id="PoiMenu" style="position: absolute; vertical-align: bottom; bottom: 31px; left: 1px; z-index: 10; visibility: inherit;">
+		</div>
+	        <div id="Luftbild" style="position:absolute; width:360px; height:360px; z-index:9; left: 0px; top: 0px; visibility: hidden;">
+		    <img src="../bilder/submit.gif" name="poiluftbild" width="360" height="360" border="0" />
+		</div>
+	        <div id="Panorama" style="position:absolute; width:360px; height:360px; z-index:9; left: 0px; top: 0px; border: 0px; visibility: hidden;">
+		    <div id="PanoramaApplet" style="position: absolute; top: 0px; left: 0px; width:360px; height:340px;">
+		    </div>
+		    <div id="PanoramaFooter" style="position: absolute; top: 0px; left: 0px; width:360px; height:360px; color: white; background-color: black; " align="right">
+		    </div>
+		</div>
+		<div align="right"> 
+		  <table width="360" height="360" border="0" cellpadding="0" cellspacing="0">
+			<tr> 
+			  <td height="90" width="90"><img name="img11" width="90" height="90" id="img11"/></td>
+			  <td height="90" width="90"><img name="img21" width="90" height="90" id="img21"/></td>
+			  <td height="90" width="90"><img name="img31" width="90" height="90" id="img31"/></td>
+			  <td height="90" width="90"><img name="img41" width="90" height="90" id="img41"/></td>
+			</tr>
+			<tr> 
+			  <td height="90" width="90"><img name="img12" width="90" height="90" id="img12"/></td>
+			  <td height="90" width="90"><img name="img22" width="90" height="90" id="img22"/></td>
+			  <td height="90" width="90"><img name="img32" width="90" height="90" id="img32"/></td>
+			  <td height="90" width="90"><img name="img42" width="90" height="90" id="img42"/></td>
+			</tr>
+			<tr> 
+			  <td height="90" width="90"><img name="img13" width="90" height="90" id="img13"/></td>
+			  <td height="90" width="90"><img name="img23" width="90" height="90" id="img23"/></td>
+			  <td height="90" width="90"><img name="img33" width="90" height="90" id="img33"/></td>
+			  <td height="90" width="90"><img name="img43" width="90" height="90" id="img43"/></td>
+			</tr>
+			<tr> 
+			  <td height="90" width="90"><img name="img14" width="90" height="90" id="img14"/></td>
+			  <td height="90" width="90"><img name="img24" width="90" height="90" id="img24"/></td>
+			  <td height="90" width="90"><img name="img34" width="90" height="90" id="img34"/></td>
+			  <td height="90" width="90"><img name="img44" width="90" height="90" id="img44"/></td>
+			</tr>
+		  </table>
+		</div>
+	  </div>
+	  <div id="PoiDetailThumb" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen"> 
+		<div id="zurueck" style="position:absolute; top:-19px; left:290px; width:70px; height:19px; z-index:7; visibility: inherit;"><a href="#" onClick="Thumbausblenden();" class="Navigation"><img src="/images/pfeil_back.gif" border="0"/>back</a></div>    <div align="right"> 
+		  <table width="360" height="360" border="0" cellpadding="0" cellspacing="0">
+			<tr> 
+			  <td colspan="4"><img name="DetailThumb" width="360" height="360" id="DetailThumb"/></td>
+			</tr>
+		  </table>
+		</div>
+	  </div>
+	  <div id="PoiInfo" style="position:absolute; width:178px; height:238px; z-index:3; top: 222px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
+		<table width="178" border="0" cellspacing="0" cellpadding="0">
+		  <tr> 
+			<td class="InfoKopf">Information</td>
+		  </tr>
+		  <tr> 
+			<td width="160" align="left" valign="top"><div id="PoiInfoText" style="position:absolute; width:158px; height:210px; z-index:4; left: 0px; top: 20px; overflow: auto; visibility: inherit;" class="InfoZelle"></div></td>
+		  </tr>
+		</table>
+	  </div>
+	  <div id="PoiThumb" style="position:absolute; width:178px; height:131px; z-index:3; top: 79px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
+		<table width="178" height="131" border="0" cellpadding="0" cellspacing="0">
+		  <tr> 
+			<td class="InfoKopf">Picture Gallery</td>
+		  </tr>
+		  <tr>
+		  <td align="center" valign="middle"> <table width="174" border="0" cellpadding="0" cellspacing="0">
+			  <tr> 
+				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb1" width="55" height="55" id="thumb1"/></td>
+				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb2" width="55" height="55" id="thumb2"/></td>
+				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb3" width="55" height="55" id="thumb3"/></td>
+			  </tr>
+			  <tr> 
+				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb4" width="55" height="55" id="thumb4"/></td>
+				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb5" width="55" height="55" id="thumb5"/></td>
+				<td align="center" valign="middle" class="ThumbRahmen"><img name="thumb6" width="55" height="55" id="thumb6"/></td>
+			  </tr>
+			</table></td>
+		  </tr>
+		</table>
+		<div id="ThumbLink1" style="position:absolute; width:55px; height:55px; z-index:4; top: 16px; left: 3px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(1)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
+		<div id="ThumbLink2" style="position:absolute; width:55px; height:55px; z-index:4; top: 16px; left: 60px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(2)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
+		<div id="ThumbLink3" style="position:absolute; width:55px; height:55px; z-index:4; top: 16px; left: 117px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(3)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
+		<div id="ThumbLink4" style="position:absolute; width:55px; height:55px; z-index:4; top: 73px; left: 3px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(4)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
+		<div id="ThumbLink5" style="position:absolute; width:55px; height:55px; z-index:4; top: 73px; left: 60px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(5)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
+		<div id="ThumbLink6" style="position:absolute; width:55px; height:55px; z-index:4; top: 73px; left: 117px; visibility: inherit;"><a href="#" onClick="ThumbVergoessern(6)"><img src="../bilder/spacer.gif" width="55" height="55" border="0"/></a></div>
+	  </div>
+	  <div id="home" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 164px; visibility: inherit;" class="NavigationAktiv">
+	   Points of Interest
+	   <div id="PoiNavi" style="position:absolute; width:125px; height:80px; z-index:7; left: 19px; top: 17px; visibility: inherit;"></div>
+	  </div>
+	</div>
+	<div id="qmDetail" style="position:absolute; width:1px; height:1; z-index:4; left: 0px; top: 0px; visibility: hidden;"> 
+	  <div id="qmDetailKarte" style="position:absolute; width:360px; height:390px; z-index:1; left: 169px; top: 100px; visibility: inherit;" class="KarteRahmen"> 
+		<div id="qmLupe" style="position:absolute; width:36px; height:24px; z-index:11; visibility: inherit;"><img src="../bilder/lupe.gif" width="36" height="24"/></div>
+		<div id="selected_contract" style="position:absolute; z-index:10; visibility: inherit;">
+		 <img id="selected_contract_img" src="../bilder/spacer.gif" width="1" height="1"/>
+		</div>
+		<div id="own_contract" style="position:absolute; z-index:10; visibility: inherit;">
+		 <img id="own_contract_img" src="../bilder/spacer.gif" width="1" height="1"/>
+		</div>
+		<div id="LayersMenu" class="KarteRahmen" style="position: absolute; bottom: 31px; right: 1px; z-index: 15; visibility: inherit;">
+		  <table width="90" border="0" cellspacing="0" cellpadding="0">
+		    <tr> 
+		      <td align="center" class="InfoKopf">Layers</td>
+		    </tr>
+		    <tr> 
+		      <td valign="top" align="center">
+		        <a class="LayersMenuItemActive" id="LayerMenu_background" href="#" onclick="toggle_layer('background')">Sat image</a><br/>
+		      </td>
+		    </tr>
+		    <tr> 
+		      <td valign="top" align="center">
+		        <a class="LayersMenuItemActive" id="LayerMenu_areas" href="#" onclick="toggle_layer('areas')">Selling areas</a><br/>
+		      </td>
+		    </tr>
+		    <tr>
+		      <td valign="top" align="center">
+		        <a class="LayersMenuItemActive" id="LayerMenu_contracts" href="#" onclick="toggle_layer('contracts')">Current status</a><br/>
+		      </td>
+		    </tr>
+		  </table>
+		</div>
+		<img id="MapCaptureImage" style="position: absolute; top: 0px; left: 0px; z-index: 12; visibility: inherit;"
+		     width="360" height="360"
+		     border="0" src="../bilder/spacer.gif" />
+		<div align="right" style="z-index: 10;"> 
+		  <table width="360" height="360" border="0" cellpadding="0" cellspacing="0">
+			<tr> 
+			  <td width="90" height="90"><img name="qmimg11" width="90" height="90" id="qmimg11"/></td>
+			  <td height="90" width="90"><img name="qmimg21" width="90" height="90" id="qmimg21"/></td>
+			  <td height="90" width="90"><img name="qmimg31" width="90" height="90" id="qmimg31"/></td>
+			  <td height="90" width="90"><img name="qmimg41" width="90" height="90" id="qmimg41"/></td>
+			</tr>
+			<tr> 
+			  <td height="90" width="90"><img name="qmimg12" width="90" height="90" id="qmimg12"/></td>
+			  <td height="90" width="90"><img name="qmimg22" width="90" height="90" id="qmimg22"/></td>
+			  <td height="90" width="90"><img name="qmimg32" width="90" height="90" id="qmimg32"/></td>
+			  <td height="90" width="90"><img name="qmimg42" width="90" height="90" id="qmimg42"/></td>
+			</tr>
+			<tr> 
+			  <td height="90" width="90"><img name="qmimg13" width="90" height="90" id="qmimg13"/></td>
+			  <td height="90" width="90"><img name="qmimg23" width="90" height="90" id="qmimg23"/></td>
+			  <td height="90" width="90"><img name="qmimg33" width="90" height="90" id="qmimg33"/></td>
+			  <td height="90" width="90"><img name="qmimg43" width="90" height="90" id="qmimg43"/></td>
+			</tr>
+			<tr> 
+			  <td height="90" width="90"><img name="qmimg14" width="90" height="90" id="qmimg14"/></td>
+			  <td height="90" width="90"><img name="qmimg24" width="90" height="90" id="qmimg24"/></td>
+			  <td height="90" width="90"><img name="qmimg34" width="90" height="90" id="qmimg34"/></td>
+			  <td height="90" width="90"><img name="qmimg44" width="90" height="90" id="qmimg44"/></td>
+			</tr>
+		  </table> 
+		</div>
+	  </div>
+	  <div id="qmLaden" style="position:absolute; width:158px; height:16px; z-index:21; left: 560px; top: 165px; visibility: hidden;" class="Laden"> 
+		<div align="center" valign="middle">Please wait, loading ...</div>
+	  </div>
+	  <div id="qmAusschnittRahmen" style="position:absolute; width:178; height:131px; z-index:3; top: 99px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
+		<table width="178" border="0" cellspacing="0" cellpadding="0">
+		  <tr> 
+			<td class="InfoKopf" >click on "sold" m²s!</td>
+		  </tr>
+		  <tr>
+		  <td align="center" valign="middle">
+		        <img src="../bilder/spacer.gif" width="0" height="0"/>
+		  </td>
+		  </tr>
+		</table>
+	  </div>
+	  <div id="qmInfo" style="position:absolute; width:178px; height:218px; z-index:10; top: 242px; left: 550px; visibility: inherit;" class="KarteRahmen"> 
+		<table width="178" border="0" cellspacing="0" cellpadding="0">
+		  <tr> 
+			<td class="InfoKopf">Sponsor Information</td>
+		  </tr>
+		  <tr> 
+		   <td width="160" align="left" valign="top">
+		    <div id="qmInfoText" style="position:absolute; width:158px; height:195px; left: 0px; top: 20px; overflow: hidden; visibility: inherit;"
+		         class="InfoZelle" onMouseOver="enlarge_info();" onMouseOut="collapse_info();">
+		    </div>
+		   </td>
+		  </tr>
+		</table>
+	  </div>
+	  <div id="qmhome" style="position:absolute; width:140px; height:20px; z-index:6; left: 10px; top: 105px; visibility: inherit;" class="NavigationAktiv">
+	   <img src="/images/pfeil_link_on.gif" width="29" height="12" border="0"/>
+	   "sold" m²
+	  </div>
+	  <div id="qmAusschnitt" style="position:absolute; width:200px; height:115px; z-index:7; left: 172px; top: 512px; visibility: inherit;">
+		<div id="lupe_selected_contract" style="position:absolute; z-index:10; visibility: inherit;">
+		 <img id="lupe_selected_contract_img" src="../bilder/spacer.gif" width="1" height="1"/>
+		</div>
+		<div id="lupe_own_contract" style="position:absolute; z-index:10; visibility: inherit;">
+		 <img id="lupe_own_contract_img" src="../bilder/spacer.gif" width="1" height="1"/>
+		</div>
+		<table width="1800" height="1800" border="0" cellpadding="0" cellspacing="0">
+		  <tr>
+			<td><img name="qmlupe11" width="450" height="450" id="qmlupe11"/></td>
+			<td><img name="qmlupe21" width="450" height="450" id="qmlupe21"/></td>
+			<td><img name="qmlupe31" width="450" height="450" id="qmlupe31"/></td>
+			<td><img name="qmlupe41" width="450" height="450" id="qmlupe41"/></td>
+		  </tr>
+		  <tr>
+			<td><img name="qmlupe12" width="450" height="450" id="qmlupe12"/></td>
+			<td><img name="qmlupe22" width="450" height="450" id="qmlupe22"/></td>
+			<td><img name="qmlupe32" width="450" height="450" id="qmlupe32"/></td>
+			<td><img name="qmlupe42" width="450" height="450" id="qmlupe42"/></td>
+		  </tr>
+		  <tr>
+			<td><img name="qmlupe13" width="450" height="450" id="qmlupe13"/></td>
+			<td><img name="qmlupe23" width="450" height="450" id="qmlupe23"/></td>
+			<td><img name="qmlupe33" width="450" height="450" id="qmlupe33"/></td>
+			<td><img name="qmlupe43" width="450" height="450" id="qmlupe43"/></td>
+		  </tr>
+		  <tr>
+			<td><img name="qmlupe14" width="450" height="450" id="qmlupe14"/></td>
+			<td><img name="qmlupe24" width="450" height="450" id="qmlupe24"/></td>
+			<td><img name="qmlupe34" width="450" height="450" id="qmlupe34"/></td>
+			<td><img name="qmlupe44" width="450" height="450" id="qmlupe44"/></td>
+	
+		  </tr>
+		</table>
+	  </div>
+	</div>
+	<div id="Ueberschrift" style="position:absolute; width:290px; height:20px; z-index:5; left: 169px; top: 80px;">Samboja Lestari - Overview</div>
+	<div id="Untertitel" style="position:absolute; width:350px; height:20px; z-index:5; left: 169px; top: 469px;" align="right">More than 17 million square metres for eternity.</div>
+	<div class="Links" style="position:absolute; width:178px; height:132px; z-index:3; top: 472px; left: 550px;">
+	 <span style="padding-right:2px">
+	  <img src="/images/pfeil_link_on.gif" border="0" />
+	  <a class="FaehnchenLink" href="javascript:window_infosystem_hilfe();"> Help </a>
+	 </span>
+	 <span style="padding-right:2px">
+	  <img src="/images/pfeil_link_on.gif" border="0" />
+	  <a class="FaehnchenLink" href="javascript:bestellung();"> Buy m²s </a>
+	 </span>
+	 <span style="padding-right:2px">
+	  <img src="/images/pfeil_link_on.gif" border="0" />
+	  <a class="FaehnchenLink" href="javascript:window.close();"> Close </a>
+	 </span>
+	</div>
+	<div id="dataqm" style="position:absolute; width:1px; height:1px; z-index:11; left: 1px; top: 1px;"></div>
+	<div id="debugger" style="position:absolute; width:400px; height:400px; z-index:21; left: 760px; top: 20px; visibility: hidden;" class="InfoZelle"></div>
+	<div id="data">
+		<iframe src="about:blank" height="0" width="0" name="data"> </iframe>
+	</div>
+	<script language="JavaScript">init();</script>
+	</body>
 </html>
\ No newline at end of file

Modified: trunk/projects/bos/payment-website/infosystem/javascript.js
===================================================================
--- trunk/projects/bos/payment-website/infosystem/javascript.js	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/infosystem/javascript.js	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,5 +1,8 @@
 // JavaScript Document -*- Java -*-
 
+// Originally written by Matthias, Systemtakt neue Medien GbR
+// This program needs a lot of refactoring.
+
 // XXX bei klick auf übersichtskarte bleiben die links der poi-thumbnails aktiv
 // XXX beim schliessen des opener-fensters funktioniert "m2 kaufen" nicht mehr
 
@@ -30,7 +33,6 @@
 var qm = new Array; // Array in dem die Daten fuer die QM gespeichert werden
 var uebersicht_icons = new Array;  // Array in dem die Daten fuer die Icons der Übersichtskarte gespeichert werden
 var profil = new Array; // Array in dem die Daten fuer das Profil gespeichert werden
-var n_qm = new Array; // Array in dem die Daten fuer das nachbar-Quadratmeter gespeichert werden
 var n_profil = new Array; // Array in dem die Daten fuer das Nachbar-Profil gespeichert werden
 
 var loginstatus = false; // Status ob Anwender eingeloggt sind wird ueber login_pruefen() gefuellt
@@ -78,7 +80,7 @@
     }
 }
 
-function schreibe_debugger(text) {
+function dbg(text) {
     // Schriebt einen Text in die Debugger-Ebene
     debugger_text = debugger_text + text;
     document.getElementById("debugger").innerHTML = debugger_text;
@@ -133,7 +135,7 @@
 	close();
     }
     
-    schreibe_debugger("<br/> init() <br/>");
+    dbg("<br/> init() <br/>");
     // initialisierung startet die Ladefuntkionen
     // parst den URL-String und trennt logout, sponsorid und passwort
     // Debugger anzeigen oder ausblenden
@@ -154,7 +156,7 @@
 
     timer = 0;
 
-    schreibe_debugger("<br/> -> lade POI");
+    dbg("<br/> -> lade POI");
     poicomplete = false;
     window.frames['data'].window.location.replace(http_pfad + "/poi-javascript");
     poi_warten(); // starten der Wartenfunktion
@@ -180,7 +182,7 @@
     // poicomplet ist dei letzte Variable im Script daher wenn sie gesetzt ist ist das Ende erreicht
     if (poicomplete) {
 	// wenn der Datensatz komplett geladen ist wird der timer auf Null gesetzt und je nachdem ob sich eingeloggt wurde oder nicht die loginueberpruefung oder die Punkterzeugung gestartet
-	schreibe_debugger("<br/> -> <b>POI geladen! login: " + login + "</b>");
+	dbg("<br/> -> <b>POI geladen! login: " + login + "</b>");
 	document.getElementById("Info3Text").innerHTML = '<b>' + msg('Anzahl Sponsoren') + '</b><br />'
 	 + anzahlSponsoren
 	 + '<br /><br /><b>' + msg('Anzahl verkaufte m²') + '</b><br />'
@@ -190,14 +192,16 @@
 	}
 	UebersichtNavi();
 	qm_zusammenfassen();
+	icon_versatz(); 
+	poi_faehnchen_erzeugen();
     } else {
 	// wenn der Datensatz noch nicht komplett geladen ist wird der timer eroeht und die Funktion nochmal gestartet
 	timer++; 
 	if (timer < 100) {
-	    schreibe_debugger("."); 
+	    dbg("."); 
 	    setTimeout("poi_warten()", 100);
 	} else {
-	    schreibe_debugger("<br/> -> <b>POI konnten nicht geladen werden</b>");
+	    dbg("<br/> -> <b>POI konnten nicht geladen werden</b>");
 	    alert(msg('Fehler beim Laden der POI-Informationen, bitte probieren Sie es später noch einmal'));
 	}
     }
@@ -215,6 +219,14 @@
     timer = 0;
     var user = document.form0.__sponsorid.value;
     var password = document.form0.__password.value;
+
+    var current_url = '' + document.location;
+
+    if (user == '' && current_url.match(/__sponsorid/)) {
+	user = current_url.replace(/.*__sponsorid=([^?]*).*/, "$1");
+	password = current_url.replace(/.*__password=([^?]*).*/, "$1");
+    }
+
     var url = http_pfad + "/sponsor-login";
     if (user != "") {
 	url += "?__sponsorid=" + user + "&__password=" + password;
@@ -222,7 +234,7 @@
     loginstatus = undefined;
     window.frames['data'].window.location.replace(url);
 
-    schreibe_debugger("<br/> -> lade Login-Status - url ist " + url + '<br/>');
+    dbg("<br/> -> lade Login-Status - url ist " + url + '<br/>');
 
     login_warten(); // Wartefunktion starten
 
@@ -239,23 +251,23 @@
     // wenn loginstatus gesetzt ist ist das Ende erreicht
 
     if (loginstatus) { 
-	schreibe_debugger("<br/> -> <b>Login-Status geladen: " + loginstatus + "</b>");
+	dbg("<br/> -> <b>Login-Status geladen: " + loginstatus + "</b>");
 	// wenn loginstatus gesetzt ist wir timer auf Null gesetzt
 	// wenn lohinstatus = "login-failed" ist wird eine Fehlermeldung eingeblendet
 	if (loginstatus == "not-logged-in") {
-	    schreibe_debugger("<br/> -> <b>nicht eingeloggt!</b>");
+	    dbg("<br/> -> <b>nicht eingeloggt!</b>");
 	}
 
 	if (loginstatus == "login-failed") {
 	    document.getElementById("Loginfehler").style.visibility = 'visible';
-	    schreibe_debugger("<br/> -> <b>Login fehlgeschlagen!</b>");
+	    dbg("<br/> -> <b>Login fehlgeschlagen!</b>");
 	}
 	// wenn lohinstatus = "logged-in" ist wird das Anmeldefeld ausgelendet, das Logoutfeld eingeblendet und die Sponsorid angezeigt
 	// danach werden die Punkte erzuegt und die Quadratmeter geladen
 	if (loginstatus == "logged-in") {
 	    document.getElementById("Anmelden").style.visibility = "hidden";
 	    document.getElementById("SponsorInfo").style.visibility = "visible";
-	    schreibe_debugger("<br/> -> <b>Login erfolgreich!</b>");
+	    dbg("<br/> -> <b>Login erfolgreich!</b>");
 	} else {
 	    document.getElementById("Anmelden").style.visibility = "visible";
 	    document.getElementById("SponsorInfo").style.visibility = "hidden";
@@ -266,10 +278,10 @@
 	// wenn der Datensatz noch nicht komplett geladen ist wird der timer eroeht und die Funktion nochmal gestartet	
 	timer++; 
 	if (timer < 100) {
-	    schreibe_debugger("."); 
+	    dbg("."); 
 	    setTimeout("login_warten()", 100);
 	} else {
-	    schreibe_debugger("<br/> -> <b>Loginstatus konnten nicht geladen werden</b>");
+	    dbg("<br/> -> <b>Loginstatus konnten nicht geladen werden</b>");
 	}
     }
     return true;
@@ -278,7 +290,7 @@
 function ausloggen() {
     // Seesion loeschen -> ausloggen
     window.frames['data'].window.location.replace(http_pfad + "/logout");
-    schreibe_debugger("<br/> -> ausloggen");
+    dbg("<br/> -> ausloggen");
     qm_laden();
     return true;
 }
@@ -289,12 +301,11 @@
     timer = 0;
 
     profil_variable = 'profil';
-    qm_variable = 'qm';
 
     m2complete = false;
     window.frames['data'].window.location.replace(http_pfad + "/m2-javascript/");
 
-    schreibe_debugger("<br/> -> lade Quadratmeter ");
+    dbg("<br/> -> lade Quadratmeter ");
     qm_warten(); // Wartefunktion starten
     return true;
 }
@@ -303,29 +314,26 @@
     // Wartefunktion, da das Laden etwas traege ist wartet dieses Script bis derf Datensatz komplatt geladen ist
     // m2complete ist die letzte Variable im Script daher wenn sie gesetzt ist ist das Ende erreicht
     if (m2complete) {
-	// wenn m2complete gelden ist wird qm_erzeugen() gestartet und der timer auf Null gesetzt
-	schreibe_debugger("<br/> -> <b>Quadratmeter geladen!</b>");		
+	dbg("<br/> -> <b>Quadratmeter geladen!</b>");		
 	poi_laden();
     } else {
 	// wenn der Datensatz noch nicht komplett geladen ist wird der timer eroeht und die Funktion nochmal gestartet
 	timer++; 
 	if (timer < 100) {
-	    schreibe_debugger("."); 
+	    dbg("."); 
 	    setTimeout("qm_warten()", 100);
 	} else {
-	    schreibe_debugger("<br/> -> <b>qm konnten nicht geladen werden</b>");
+	    dbg("<br/> -> <b>qm konnten nicht geladen werden</b>");
 	}
     }
     return true;
 }
 
 var profil_variable;
-var qm_variable;
 
-function qm_fertig(_profil, _qms) {
+function qm_fertig(_profil) {
     if (_profil) {
 	eval(profil_variable + " = _profil;");
-	eval(qm_variable + " = _qms;");
     }
     m2complete = true;
 }
@@ -337,23 +345,16 @@
     // der Datensatz wird vorher auf Nullwerte gesetzt damit fals keine Daten in der URL enthalten sind der Quadratmeter als unverkauft angezeigt wird
     m2complete = false;
     timer=0;
-    n_profil = [];
-    n_profil['name'] = msg("noch nicht verkauft");
-    n_profil['country'] = "";
-    n_profil['anzahl'] = 0;
-    n_profil['datum'] = "";
-    n_profil['nachricht'] = "";
-    n_qm = [];
-    n_qm[1] = false;
-    n_qm[1] = false;
+    n_profil = {
+	name: msg("noch nicht verkauft")
+    };
 
     profil_variable = 'n_profil';
-    qm_variable = 'n_qm';
 
     m2complete = false;
     window.frames['data'].window.location.replace(http_pfad + "/m2-javascript/" + fremd_x + "/" + fremd_y);
     n_qm_warten(); // Wartefunktion starten
-    schreibe_debugger("<br/> -> lade Nachbar-Quadratmeter (" + fremd_x + "/" + fremd_y + ")");		
+    dbg("<br/> -> lade Nachbar-Quadratmeter (" + fremd_x + "/" + fremd_y + ")");		
     return true;
 }
 
@@ -361,9 +362,9 @@
     // Wartefunktion, da das Laden etwas traege ist wartet dieses Script bis derf Datensatz komplatt geladen ist
     // m2complete ist die letzte Variable im Script daher wenn sie gesetzt ist ist das Ende erreicht
     if (m2complete) {
-	// timer wird auf Nullgesetzt und n_qm_erzeugen wird gestartet
+	// timer wird auf Nullgesetzt und display_selected_contract wird gestartet
 	timer = 0;
-	schreibe_debugger("<br/> -> <b>Nachbar-Quadratmeter geladen!</b>");		
+	dbg("<br/> -> <b>Nachbar-Quadratmeter geladen!</b>");		
 	// text fuer das Nachbarprofil wird zusammengesetzt
 	if (n_profil['name'] == msg("noch nicht verkauft")) {
 	    var text = '<table width="155" border="0" cellspacing="0" cellpadding="0"><tr><td colspan="2" class="PoiNavigation">'
@@ -381,8 +382,8 @@
 		+ '</td></tr><tr> <td colspan="2" class="PoiNavigation"><img src="/infosystem/bilder/spacer.gif" width="1" height="10"/></td></tr>'
 		+ '<tr> <td width="60" class="PoiNavigation">' + msg('gesponsort') + ':</td><td class="PoiNavigation">'
 		+ n_profil['anzahl']
-		+ ' m²</td></tr><tr> <td width="60" class="PoiNavigation">' + msg('seit') + ':</td><td class="PoiNavigation">'
-		+ n_qm[1]['datum']
+		+ ' m²</td></tr><tr> <td width="60" class="PoiNavigation">'
+		+ msg('seit') + ':</td><td class="PoiNavigation">' + n_profil.contracts[0].date
 		+ '</td></tr><tr> <td colspan="2" class="PoiNavigation"><img src="/infosystem/bilder/spacer.gif" width="1" height="20"/></td></tr>'
 		+ '<tr> <td colspan="2" class="PoiNavigation">'
 		+ n_profil['nachricht']
@@ -390,77 +391,90 @@
 	}
 	// Inhalt der Ueberschrift und des Infotextes werden gesetzt
 	document.getElementById("qmLaden").style.visibility = "hidden";
-	if (n_qm[1]) {
+	if (n_profil.contracts) {
 	    document.getElementById("Ueberschrift").innerHTML = msg("Verkaufte m²");
 	} else {
 	    document.getElementById("Ueberschrift").innerHTML = msg("zu verkaufen!");
 	}
 	document.getElementById("qmInfoText").innerHTML = text;
-	n_qm_erzeugen();
+	display_selected_contract();
     } else {
 	// wenn der Datensatz noch nicht komplett geladen ist wird der timer eroeht und die Funktion nochmal gestartet	
 	timer++; 
 	if (timer < 100) {
 	    setTimeout("n_qm_warten()", 100);
 	} else {
-	    document.getElementById("qmLaden").style.visibility = "hidden"; schreibe_debugger("<br/> -> <b>Nachbar-Quadratmeter konnten nicht geladen werden</b>");
+	    document.getElementById("qmLaden").style.visibility = "hidden"; dbg("<br/> -> <b>Nachbar-Quadratmeter konnten nicht geladen werden</b>");
 	}
     }
     return true;
 }
 
-function n_qm_erzeugen() {
-    // Erzeugen der Nachbarquadratmeter	
-    // alte qm loeschen
-    if (n_zeilen > 0) {
-	for (var i  = 1; i < n_zeilen; i++) {
-	    var loeschen = eval("document.getElementById('n_qm" + i + "')");
-	    document.getElementById("qmAusschnitt").removeChild(loeschen);
-	}
-	schreibe_debugger("<br/> -> " + n_zeilen + " zeilen geloescht");		
+function load_contract_image(contract, image, factor, color) 
+{
+    var container = image.parentNode;
+
+    if (!color) {
+	color = 'ffff00';
     }
-    // aktuelle qm einzeichnen
-    n_zeilen = 1;
-    objekt = n_qm[1];
 
-    if (objekt['qm_x']) {
-    	schreibe_debugger("<br/> -> Es sollen " + objekt['qm_x'].length + " erzeugt werden");			
-	for (i=1; i < objekt['qm_x'].length; i++) {
-	
-	    // neue Ebene erstellen, Ebene ist abhaengig von <Uebersicht>
-	    var neueebene=document.createElement("DIV");
-	    document.getElementById("qmAusschnitt").appendChild(neueebene);
-			
-	    // Testen ob Icon links oder rechts steht --> Ebene muß um 150 px versetzt werden oder nicht
-	    var x = parseInt(Math.round(objekt['qm_x'][i] - x_anf) * 5);
-	    var y = parseInt(Math.round(objekt['qm_y'][i] - y_anf) * 5);
-	    var width=5;
-	    while (objekt['qm_y'][i] == objekt['qm_y'][(i + 1)]) {
-		width += 5;
-		i++;
-	    }
-	    // definieren der Styles
-	    neueebene.style.position="absolute";
-	    neueebene.style.left = x + "px";
-	    neueebene.style.top = y + "px";
-	    neueebene.style.height = "5px";
-	    neueebene.style.width = width + "px";
-	    neueebene.style.zIndex ="9";
-	    neueebene.style.visibility = "inherit";
-	    neueebene.id = "n_qm" + n_zeilen;		
-	    neueebene.align = "left";
-	    neueebene.innerHTML = '<img src="/infosystem/bilder/gelb.gif" height="5" width="' + width + '"/>';
-	    n_zeilen++;
-	}
+    container.style.visibility = 'hidden';
+    image.onload = function () {
+	this.parentNode.style.visibility = 'inherit';
     }
-    schreibe_debugger("<br/> -> " + n_zeilen + " zeilen fuer die Nachbar-Quadratmeter erzeugt");		
-    return n_zeilen;
+    image.src = '/contract-image/' + contract.id + '/' + color;
+    image.width = contract.width * factor;
+    image.height = contract.height * factor;
+
+    // Falls der Vertrag aus dem angezeigten Bereich herausragt, wird das bild entsprechend geclipped.
+    container.style.clip
+	= 'rect('
+	+ Math.max(0,  y_anf - contract.top) * factor + 'px '
+	+ Math.min(contract.width, contract.width - (contract.left + contract.width - x_anf - 360)) * factor + 'px '
+	+ Math.min(contract.height, contract.height - (contract.top + contract.height - y_anf - 360)) * factor + 'px '
+	+ Math.max(0, x_anf - contract.left) * factor + 'px'
+	+ ')';
+
+    container.style.left = (contract.left - x_anf) * factor + 'px';
+    container.style.top = (contract.top - y_anf) * factor + 'px';
+
 }
 
+function display_selected_contract()
+{
+    // Anzeigen der ausgewählten Nachbarquadratmeter
+
+    if (n_profil.contracts) {
+	var contract = n_profil.contracts[0];
+
+	load_contract_image(contract,
+			    document.getElementById('selected_contract_img'),
+			    1);
+	load_contract_image(contract,
+			    document.getElementById('lupe_selected_contract_img'),
+			    5);
+    } else {
+	document.getElementById('selected_contract_img').src = '../bilder/spacer.gif';
+	document.getElementById('lupe_selected_contract_img').src = '../bilder/spacer.gif';
+    }
+}
+
+function display_own_sqm()
+{
+    var contract = profil.contracts[0];
+    var img = document.getElementById('own_contract_img');
+    var enlarged_image = document.getElementById('lupe_own_contract_img');
+
+    load_contract_image(contract, img, 1, "ff0000");
+    load_contract_image(contract, enlarged_image, 5, "ff0000");
+}
+
 function qm_zusammenfassen() {
     // zusammenfassen mehererer Quadratmeterfähnchen zu einem Fähnchen.
-    // es wird geprüft, ob sich auf der Detailkarte des qm noch mehr qm azeigen lassen dadurch wird die Darstellung der Fähnchen vereinfacht
+    // es wird geprüft, ob sich auf der Detailkarte des qm noch mehr qm anzeigen lassen dadurch wird die Darstellung der Fähnchen vereinfacht
 
+    return;
+    
     var i=1;
     while (qm[i]) {
 	var qmV = qm[i];
@@ -499,7 +513,6 @@
 	}
 	i++;
     }
-    icon_versatz(); 
     return true;
 }
 
@@ -560,20 +573,14 @@
 	index++;
 	i++;
     }
-    var i=1;
-    while (qm[i]) {
-	if (qm[i]['status'] == "mitte") {
-	    var qmV = qm[i];
-	    var uebV = uebersicht_icons[index];
-	    uebersicht_icons[index] = new Array;
-	    uebersicht_icons[index]['x'] = qmV['x'];
-	    uebersicht_icons[index]['y'] = qmV['y'];
-	    uebersicht_icons[index]['icon'] = "qm";			
-	    uebersicht_icons[index]['name'] = msg("meine m²");
-	    uebersicht_icons[index]['id'] = i;
-	}
-	index++;		
-	i++;
+    if (profil.contracts) {
+	var contract = profil.contracts[0];
+	uebersicht_icons[index++] = {
+	    x: contract.left,
+	    y: contract.top,
+	    icon: 'qm',
+	    name: msg("meine m²")
+	};
     }
 
     var i=1;
@@ -584,7 +591,7 @@
 	    var vergleichV_x = uebersicht_icons[j]['x'] + 240;			
 	    var vergleichV_y = uebersicht_icons[j]['y'] + 240;
 	    versatz = kollisonsabfrage(uebV_x + 240, uebV_y + 240, vergleichV_x, vergleichV_y);
-	    // if (versatz[0]) {schreibe_debugger("<br/> -> POI[" + i + "] Richtungsaenderungvorschlag: " + versatz[0]);}
+	    // if (versatz[0]) {dbg("<br/> -> POI[" + i + "] Richtungsaenderungvorschlag: " + versatz[0]);}
 	    var test = new Array;
 	    test[0] = versatz[0];
 	    var versatz_index = versatz[0] + 1;
@@ -595,7 +602,7 @@
 		versatz_index--;
 		if (versatz_index < 1) {versatz_index = 4;}
 		k++;
-		// schreibe_debugger("<br/> -> Richtungsaenderungstest bei " + versatz_index + " Fehler: " + richtungsfehler);
+		// dbg("<br/> -> Richtungsaenderungstest bei " + versatz_index + " Fehler: " + richtungsfehler);
 
 		if (versatz_index == 1) {
 		    richtungsfehler = false;
@@ -606,7 +613,7 @@
 			    test = kollisonsabfrage(((uebV_x + 240) + versatz[versatz_index]), (uebV_y + 240) , testV_x, testV_y);
 			    if (test[0] != 0) {
 				richtungsfehler = true; 
-				// schreibe_debugger("<br/> -> Kollision mit " + l);
+				// dbg("<br/> -> Kollision mit " + l);
 			    }
 			}
 		    }
@@ -621,7 +628,7 @@
 			    test = kollisonsabfrage((uebV_x + 240), ((uebV_y + 240) + versatz[versatz_index]), testV_x, testV_y);
 			    if (test[0] != 0) {
 				richtungsfehler = true;
-				// schreibe_debugger("<br/> -> Kollision mit " + l);
+				// dbg("<br/> -> Kollision mit " + l);
 			    }
 			}
 		    }
@@ -636,7 +643,7 @@
 			    test = kollisonsabfrage(((uebV_x + 240) + versatz[versatz_index]), (uebV_y + 240) , testV_x, testV_y);
 			    if (test[0] != 0) {
 				richtungsfehler = true;
-				// schreibe_debugger("<br/> -> Kollision mit " + l);
+				// dbg("<br/> -> Kollision mit " + l);
 			    }
 			}
 		    }
@@ -651,7 +658,7 @@
 			    test = kollisonsabfrage((uebV_x + 240), ((uebV_y + 240) + versatz[versatz_index]), testV_x, testV_y);
 			    if (test[0] != 0) {
 				richtungsfehler = true;
-				// schreibe_debugger("<br/> -> Kollision mit " + l);
+				// dbg("<br/> -> Kollision mit " + l);
 			    }
 			}
 		    }
@@ -664,7 +671,7 @@
 		if (versatz_index == 2) {uebersicht_icons[i]['y'] = uebersicht_icons[i]['y'] + versatz[versatz_index];}
 		if (versatz_index == 3) {uebersicht_icons[i]['x'] = uebersicht_icons[i]['x'] + versatz[versatz_index];}				
 		if (versatz_index == 4) {uebersicht_icons[i]['y'] = uebersicht_icons[i]['y'] + versatz[versatz_index];}
-		// schreibe_debugger("<br/> -> versetze POI[" + i + "] durch POI[" + j + "] nach " + versatz_index + " um " + versatz[versatz_index] + "<br/>");
+		// dbg("<br/> -> versetze POI[" + i + "] durch POI[" + j + "] nach " + versatz_index + " um " + versatz[versatz_index] + "<br/>");
 		uebV_x = uebersicht_icons[i]['x'];			
 		uebV_y = uebersicht_icons[i]['y'];
 	    }
@@ -672,11 +679,9 @@
 	}
 	i++;
     }
-
-    pkt_erzeugen();
 }
 
-function pkt_erzeugen() {
+function poi_faehnchen_erzeugen() {
     // Erzeugen der Faehnchen fuer die POI, der array wird durchlaufen und die entsprechenden Informationen in Ebenen dargestellt
     var i = 1;
     while (uebersicht_icons[i]) {
@@ -688,8 +693,10 @@
 	var x = parseInt(Math.round(uebersicht_icons[i]['x'] / 30) + 170 - 8);
 	var y = parseInt(Math.round(uebersicht_icons[i]['y'] / 30) + 101 - 8);
 
-			
-	if (y > 360 + 99 - 13) (y = 360 + 99 -13);
+	// "aha!"
+	if (y > 360 + 99 - 13) {
+	    y = 360 + 99 - 13;
+	}
 
 	// definieren der Styles
 	neueebene.style.position="absolute";
@@ -702,24 +709,24 @@
 			
 	neueebene.align = "left";
 	var faehnchentext = msg(uebersicht_icons[i]['name']);
-	var index = uebersicht_icons[i]['id'];
 	if (uebersicht_icons[i]['icon'] == "sale") {
+	    var index = uebersicht_icons[i]['id'];
 	    neueebene.innerHTML = '<a href="#" onClick="qmDetail_anzeigen(' + poi[index]['x'] + ', ' + poi[index]['y'] + ', 0);" class="FaehnchenLink" onMouseOver="faehnchen_einblenden(' + (x + 17) + ', ' + y + ', "' + faehnchentext + '")" onMouseOut="faehnchen_ausblenden();"><img src="/images/' + uebersicht_icons[i]['icon'] + '.gif" border="0"/></a>';
 	} else if (uebersicht_icons[i]['icon'] == "qm") {
-	    neueebene.innerHTML = '<a href="#" onClick="qmDetail_anzeigen(' + qm[index]['x'] + ', ' + qm[index]['y'] + ',' + index + ');" onMouseOver="faehnchen_einblenden(' + (x + 17) + ', ' + y + ', "' + faehnchentext + '")" onMouseOut="faehnchen_ausblenden();"><img src="/images/qm.gif" border="0"/></a>';
+	    neueebene.innerHTML = '<a href="#" onClick="qmDetail_anzeigen(' + profil.contracts[0].left + ', ' + profil.contracts[0].top + ', 0);" onMouseOver="faehnchen_einblenden(' + (x + 17) + ', ' + y + ', "' + faehnchentext + '")" onMouseOut="faehnchen_ausblenden();"><img src="/images/qm.gif" border="0"/></a>';
 	} else {
 	    neueebene.innerHTML = '<a href="#" onClick="PoiDetail_anzeigen(' + uebersicht_icons[i]['id'] + ');" class="FaehnchenLink" onMouseOver="faehnchen_einblenden(' + (x + 17) + ', ' + y + ', "' + faehnchentext + '")" onMouseOut="faehnchen_ausblenden();"><img src="/images/' + uebersicht_icons[i]['icon'] + '.gif" border="0" /></a>';
 	}				
 	i++;
     }
-    schreibe_debugger("<br/> -> <b>" + (i-1) + " Faehnchen erzeugt</b>");		
+    dbg("<br/> -> <b>" + (i-1) + " Faehnchen erzeugt</b>");		
     return true;
 
 }
 function poi_pos_setzen(objekt, i) {
     // qm setzen	
 
-    schreibe_debugger("<br> -> Position gestezt");
+    dbg("<br> -> Position gestezt");
     var x_obj = parseInt(Math.floor(objekt['x'] - x_anf));
     var y_obj = parseInt(Math.floor(objekt['y'] - y_anf));
 
@@ -738,7 +745,7 @@
 
 function qm_pos_setzen(objekt, i) {
     // qm setzen	
-    schreibe_debugger("<br> -> Position gestezt");
+    dbg("<br> -> Position gestezt");
     var x_obj = parseInt(Math.floor(objekt['x'] - x_anf));
     var y_obj = parseInt(Math.floor(objekt['y'] - y_anf));
 
@@ -806,6 +813,10 @@
     // Ebenen entsprechen ein- oder ausblenden
     hide_poi_panorama();
     hide_poi_luftbild();
+
+    n_profil = {};
+    display_selected_contract();
+
     show_page("uebersicht");
     document.getElementById("qmDetail").style.visibility = "hidden";
     document.getElementById("PoiDetail").style.visibility = "hidden";
@@ -813,7 +824,7 @@
     document.getElementById("UebersichtPosition").style.visibility = "hidden";
     document.getElementById("Ueberschrift").innerHTML = start_ueberschrift;
     document.getElementById("Untertitel").innerHTML = "";	
-    schreibe_debugger("<br/> -> <b>Uebersicht anzeigen</b>");		
+    dbg("<br/> -> <b>Uebersicht anzeigen</b>");		
     return true;
 }
 
@@ -924,7 +935,7 @@
     x_anf = Math.max(0, Math.round((the_poi['x'] - 180) / 90) * 90);
     y_anf = Math.min(10440, Math.round((the_poi['y'] - 180) / 90) * 90);
 
-    schreibe_debugger("<br/> -> Kacheln laden");
+    dbg("<br/> -> Kacheln laden");
     // Kacheln von Server holen und dem entsprechenden Bild zuordnen	
     for (var x = 0; x < 4; x++) {
 	for (var y = 0; y < 4; y++) {
@@ -958,7 +969,7 @@
 
     // setzen des Positionskaestchens auf der kleinen Übersichtskarte	
     uebersicht_x = parseInt(((the_poi['x'] / 10800) * 118) + 8);
-    uebersicht_y = parseInt(((the_poi['y'] / 10800) * 118) + 8);
+    uebersicht_y = parseInt(((the_poi['y'] / 10800) * 118) + 8) - 37;
 
     document.getElementById("UebersichtPosition").style.left = uebersicht_x + "px";
     document.getElementById("UebersichtPosition").style.top = uebersicht_y + "px";	
@@ -992,7 +1003,7 @@
     document.getElementById("Uebersicht").style.visibility = "hidden";
     document.getElementById("PoiDetail").style.visibility = "visible";	
     document.getElementById("UebersichtPosition").style.visibility = "visible";
-    schreibe_debugger("<br/> -> <b>POI-Detailansicht anzeigen</b>");
+    dbg("<br/> -> <b>POI-Detailansicht anzeigen</b>");
     return true;
 }
 
@@ -1014,7 +1025,7 @@
     document.getElementById("PoiInfoText").innerHTML =  poi[aktuelles_objekt]['imagetext'][bild - 1];		
     document.getElementById("Ueberschrift").innerHTML = poi[aktuelles_objekt]['imageueberschrift'][bild - 1];
     document.getElementById("Untertitel").innerHTML = poi[aktuelles_objekt]['imageuntertitel'][bild - 1];
-    schreibe_debugger("<br/> -> <b>POI-Foto-Detailansicht anzeigen</b>");
+    dbg("<br/> -> <b>POI-Foto-Detailansicht anzeigen</b>");
     return true;
 }
 
@@ -1044,17 +1055,19 @@
 
     for (var x = 0; x < 4; x++) {
 	for (var y = 0; y < 4; y++) {
-	    var img = eval("document.qmimg" + (x + 1) + "" + (y + 1));
-	    img.src = http_pfad + "/overview/" + (x_anf + (x * 90 )) + "/" + (y_anf + (y * 90 )) + "/" + active_layer_names().join("/");
+	    
+	    var img = document["qmimg" + (x + 1) + "" + (y + 1)];
+	    img.src = http_pfad + "/overview/" + (x_anf + (x * 90)) + "/" + (y_anf + (y * 90)) + "/" + active_layer_names().join("/");
 
-	    var img = eval("document.qmlupe" + (x + 1) + "" + (y + 1));
-	    img.src = http_pfad + "/overview/" + (x_anf + (x * 90 )) + "/" + (y_anf + (y * 90 )) + "/" + active_layer_names().join("/");
+	    var img = document["qmlupe" + (x + 1) + "" + (y + 1)];
+	    img.src = http_pfad + "/overview/" + (x_anf + (x * 90)) + "/" + (y_anf + (y * 90)) + "/" + active_layer_names().join("/");
 
 	}
     }
 }
 	
-function qmDetail_anzeigen(x_koord, y_koord, objekt) {
+function qmDetail_anzeigen(x_koord, y_koord, objekt)
+{
     // Funktion zum Anzeigen der "meine qm" Karte
     // Funktion zur Anzeige der POIs im Detail
     aktuelles_objekt = objekt;
@@ -1063,20 +1076,21 @@
     // alte Kacheln loeschen
     for (var x = 0; x < 4; x++) {
 	for (var y = 0; y < 4; y++) {
-	    var img = eval("document.img" + (x + 1) + "" + (y + 1));
+	    var img = document["img" + (x + 1) + "" + (y + 1)];
 	    img.src = "/infosystem/bilder/spacer.gif";
 
-	    var img = eval("document.qmlupe" + (x + 1) + "" + (y + 1));
+	    var img = document["qmlupe" + (x + 1) + "" + (y + 1)];
 	    img.src = "/infosystem/bilder/spacer.gif";
 	}
     }
 	
-    // Koordinaten auf einen geraden Wert innerhalb des Rasters rechen (es sind nur Vielfache von 90 gueltig),
-    // Startwert der Kacheln ermitteln
+    // Koordinaten auf einen geraden Wert innerhalb des Rasters
+    // umrechnen (es sind nur Vielfache von 90 gueltig), Startwert der
+    // Kacheln ermitteln
     x_anf = Math.max(0, Math.round((x_koord - 180) / 90) * 90);
     y_anf = Math.min(10440, Math.round((y_koord - 180) / 90) * 90);
 	
-    schreibe_debugger("<br/> -> Kacheln laden (" + x_anf + " / " + y_anf + ")");		
+    dbg("<br/> -> Kacheln laden (" + x_anf + " / " + y_anf + ")");		
     // Kacheln von Server holen und dem entsprechenden Bild zuordnen
 
     load_sqm_tiles(x_anf, y_anf);
@@ -1086,24 +1100,14 @@
 	var loeschen = eval("document.getElementById('qm" + i + "')");
 	document.getElementById("qmAusschnitt").removeChild(loeschen);
     }
-    schreibe_debugger("<br/> -> " + erzeugte_zeilen + " zeilen geloescht");
+    dbg("<br/> -> " + erzeugte_zeilen + " zeilen geloescht");
 
-    // fremde Quadratmeter löschen
-    if (n_zeilen > 0) {
-	for (var i  = 1; i < n_zeilen; i++) {
-	    var loeschen = eval("document.getElementById('n_qm" + i + "')");
-	    document.getElementById("qmAusschnitt").removeChild(loeschen);
-	}
-	schreibe_debugger("<br/> -> " + n_zeilen + " zeilen geloescht");		
-	n_zeilen = 0;
-    }
-
     // qm loeschen
     for (var i  = 1; i <= erzeugte_positionen; i++) {
 	var loeschen = eval("document.getElementById('pos" + i + "')");
 	document.getElementById("qmDetailKarte").removeChild(loeschen);
     }
-    schreibe_debugger("<br/> -> " + erzeugte_positionen + " Positionen geloescht");
+    dbg("<br/> -> " + erzeugte_positionen + " Positionen geloescht");
 
     x_obj = parseInt(Math.floor(x_koord - x_anf));
     y_obj = parseInt(Math.floor(y_koord - y_anf));
@@ -1125,15 +1129,19 @@
 			
 	    i++;
 	}	
-	schreibe_debugger("<br/> -> " + erzeugte_positionen + " Quadratmeterpositionen");
-	schreibe_debugger("<br/> -> " + erzeugte_zeilen + " zeilen fuer Quadratmeter eingezeichnet");
+	dbg("<br/> -> " + erzeugte_positionen + " Quadratmeterpositionen");
+	dbg("<br/> -> " + erzeugte_zeilen + " zeilen fuer Quadratmeter eingezeichnet");
 	
     }
     // setzen des Positionskaestchens auf der kleinen Übersichtskarte	
-    var uebersicht_x = parseInt(((x_koord / 10800) * 118) + 14)
-	var uebersicht_y = parseInt(((y_koord / 10800) * 118 ) + 10)
-	if (uebersicht_y < 13) {uebersicht_y = 13};
-    if (uebersicht_x > 125) {uebersicht_x = 125};
+    var uebersicht_x = parseInt(((x_koord / 10800) * 118) + 14);
+    var uebersicht_y = parseInt(((y_koord / 10800) * 118 ) + 10) - 37;
+    if (uebersicht_y < 13) {
+	uebersicht_y = 13;
+    }
+    if (uebersicht_x > 125) {
+	uebersicht_x = 125;
+    }
 
     document.getElementById("UebersichtPosition").style.left = uebersicht_x + "px";	
     document.getElementById("UebersichtPosition").style.top = uebersicht_y + "px";	
@@ -1145,7 +1153,7 @@
 	    + '<tr> <td width="60" class="PoiNavigation">' + msg('Land') + ':</td><td class="PoiNavigation">' + profil['country'] + '</td></tr>'
 	    + '<tr> <td colspan="2" class="PoiNavigation"><img src="/infosystem/bilder/spacer.gif" width="1" height="10"/></td></tr>'
 	    + '<tr> <td width="60" class="PoiNavigation">' + msg('gesponsort') + ':</td><td class="PoiNavigation">' + profil['anzahl'] + ' m²</td></tr>'
-	    + '<tr> <td width="60" class="PoiNavigation">' + msg('seit') + ':</td><td class="PoiNavigation">' + qm[aktuelles_objekt]['datum'] + '</td></tr>'
+	    + '<tr> <td width="60" class="PoiNavigation">' + msg('seit') + ':</td><td class="PoiNavigation">' + qm[aktuelles_objekt]['date'] + '</td></tr>'
 	    + '<tr> <td colspan="2" class="PoiNavigation"><img src="/infosystem/bilder/spacer.gif" width="1" height="20"/></td></tr>'
 	    + '<tr> <td colspan="2" class="PoiNavigation">' + profil['nachricht'] + '</td></tr>'
 	    + '</table>';
@@ -1185,7 +1193,11 @@
     element.onmousedown = maus_gedrueckt;
     element.onmouseup = maus_losgelassen;
 
-    schreibe_debugger("<br/> -> <b>qm-Detailansicht anzeigen</b>");
+    if (profil.contracts) {
+	display_own_sqm();
+    }
+
+    dbg("<br/> -> <b>qm-Detailansicht anzeigen</b>");
     return true;
 }
 

Modified: trunk/projects/bos/payment-website/static/bos.js
===================================================================
--- trunk/projects/bos/payment-website/static/bos.js	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/static/bos.js	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,4 +1,4 @@
-
+// -*- Java -*- Script
 // ***  extrafenster fuer impressum, kontakt etc. *** //
 function window_extra(target) { 
 	mywin=open(target,"detailwin","width=482,height=600,status=no,toolbar=no,menubar=no,resizable=yes,scrollbars=yes,left=100,top=100");
@@ -22,9 +22,18 @@
 // ***  extrafenster fuer satellitenkarte *** //
 function window_infosys() {
 	var language = document.location.pathname.substr(1, 2); // XXX funktioniert nur mit 2-buchstaben-abkuerzungen von sprachen
-	mywin=open("/infosystem/" + language + "/satellitenkarte.htm",
-			"infowin",
-			"width=740,height=500,status=no,toolbar=no,menubar=no,resizable=no,scrollbars=no,left=250,top=50");
+	var url = "/infosystem/" + language + "/satellitenkarte.htm";
+
+	var sponsorid_input = document.getElementById('sponsorid-input');
+	var password_input = document.getElementById('password-input');
+
+	if (sponsorid_input && password_input) {
+	    url += "?__sponsorid=" + sponsorid_input.value + "&__password=" + password_input.value;
+	}
+	
+	mywin=open(url,
+		   "infowin",
+		   "width=740,height=500,status=no,toolbar=no,menubar=no,resizable=no,scrollbars=no,left=250,top=50");
 	mywin.focus();
 };
 

Copied: trunk/projects/bos/payment-website/static/bos_en.js (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/static/bos_en.js)

Modified: trunk/projects/bos/payment-website/static/cms.js
===================================================================
--- trunk/projects/bos/payment-website/static/cms.js	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/static/cms.js	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,3 +1,5 @@
+// This may look like -*- Java -*-, but it really is ECMAScript
+
 // Formularcheck für Sponsoren-Erzeugung
 
 function check_complete_sale() {
@@ -2,44 +4,53 @@
 
-	if (document.form.name.value == "") {
-		alert('Missing name for certificate');
-		return false;
-	}
+    if (document.form.name.value == "") {
+	alert('Missing name for certificate');
+	return false;
+    }
 
-	if (document.form.numsqm.value == ""
-			|| !document.form.numsqm.value.match(/^\d+$/)) {
-		alert('Invalid number of square meters');
-		document.form.numsqm.focus();
-		document.form.numsqm.select();
-		return false;
-	}
+    if (document.form.numsqm.value == ""
+	|| !document.form.numsqm.value.match(/^\d+$/)) {
+	alert('Invalid number of square meters');
+	document.form.numsqm.focus();
+	document.form.numsqm.select();
+	return false;
+    }
 
-	if (!document.form.date.value.match(/^[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9][0-9]$/)) {
-		alert('Invalid date format, use DD.MM.YYYY');
-		return false;
-	}
+    if (!document.form.date.value.match(/^[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9][0-9]$/)) {
+	alert('Invalid date format, use DD.MM.YYYY');
+	return false;
+    }
 
-	var mail_message;
+    var mail_message;
 
-	if (document.form.email.value == "") {
-		mail_message = 'No welcome email will be sent\n';
-	} else {
-		mail_message = 'Welcome email will be sent to ' + document.form.email.value + '\n';
-	}
+    if (document.form.email.value == "") {
+	mail_message = 'No welcome email will be sent\n';
+    } else {
+	mail_message = 'Welcome email will be sent to ' + document.form.email.value + '\n';
+    }
 
-	var send_cert_message;
+    var send_cert_message;
 
-	if (document.form.postaladdress.value.match(/^\s*$/)) {
-		send_cert_message = 'No printed certificate will be mailed\n';
-	} else {
-		send_cert_message = 'Printed certificate will be mailed to:\n' + document.form.postaladdress.value;
-	}
+    if (document.form.postaladdress.value.match(/^\s*$/)) {
+	send_cert_message = 'No printed certificate will be mailed\n';
+    } else {
+	send_cert_message = 'Printed certificate will be mailed to:\n' + document.form.postaladdress.value;
+    }
 
-	var numsqm = document.form.numsqm.value;
-	var price = numsqm * 3;
+    var numsqm = document.form.numsqm.value;
+    var price = numsqm * 3;
 
-	return confirm(numsqm + ' square meters have been bought for ' + price + ' euros\n'
-			+ mail_message
-			+ send_cert_message);
+    return confirm(numsqm + ' square meters have been bought for ' + price + ' euros\n'
+		   + mail_message
+		   + send_cert_message);
 }
 
+function statistic_selected ()
+{
+    var select = document.getElementById('selector');
+    var stats_name = select[select.options.selectedIndex].value;
 
+    document.getElementById('stats').innerHTML
+ 	= '<embed src="/images/statistics/' + stats_name + '.svg" width="800" height="600" type="image/svg+xml"></embed>';
+
+    return true;
+}

Modified: trunk/projects/bos/payment-website/static/content_style.css
===================================================================
--- trunk/projects/bos/payment-website/static/content_style.css	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/static/content_style.css	2006-10-24 21:07:42 UTC (rev 2045)
@@ -15,7 +15,7 @@
 	width: 150px;
 	max-width: 150px;
 	padding-bottom: 0px;
-	margin : 58px 15px 10px 15px;
+	margin : 5px 15px 10px 15px;
 	border-width: 1px;
 	border-style: solid solid solid solid;
 	border-color : Silver;
@@ -33,7 +33,7 @@
 	width: 150px;
 	height: 398px;
 	max-width: 150px;
-	margin : 28px 15px 10px 15px;	
+	margin : 5px 15px 10px 15px;	
 	visibility: visible;
 	display: block;
 	font : normal normal 0.7em Verdana, Geneva, Arial, Helvetica, sans-serif;
@@ -50,9 +50,9 @@
 	width: 150px;
 	max-width: 150px;
 	height: 180px;
-	margin : 22px 15px 10px 15px;
+	margin : 0px 15px 10px 15px;
 	border-width: 1px;
-	border-style: solid solid none solid;
+	border-style: solid solid solid solid;
 	border-color : Silver;
 	visibility: visible;
 	display: block;
@@ -65,6 +65,34 @@
 	background-position : bottom;
 }	
 	
+/* Login-Formular auf der HP */	
+#textbox_left_login {
+	position: relative;
+	background-color: white;
+	z-index: 20;
+	width: 150px;
+	max-width: 150px;
+	height: 85px;
+	margin : 0px 15px 0px 15px;
+	border-width: 1px;
+	border-style: solid solid solid solid;
+	border-color : Silver;
+	visibility: visible;
+	display: block;
+	font : normal normal 0.7em Verdana, Geneva, Arial, Helvetica, sans-serif;
+	color : #333333;
+	font-weight : normal;
+	text-decoration : none;
+}
+
+.password-input {
+	width: 115px;
+}
+
+.login-button {
+	top: 5px;
+}
+	
 #textbox_right
 	{
 	position: relative;

Copied: trunk/projects/bos/payment-website/static/profil_en.js (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/static/profil_en.js)

Modified: trunk/projects/bos/payment-website/static/toplevel_style.css
===================================================================
--- trunk/projects/bos/payment-website/static/toplevel_style.css	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/static/toplevel_style.css	2006-10-24 21:07:42 UTC (rev 2045)
@@ -351,7 +351,7 @@
 #menue_footer {
 	position: relative;
 	z-index: 15;
-	margin-top: 20px;
+	margin-top: 5px;
 	margin-left: 0px;
 	width: 186px;
 	height: 20px;

Deleted: trunk/projects/bos/payment-website/templates/baustelle.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/baustelle.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/baustelle.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  suppress-xml-headers="1"
-  >
-	<head>
-		<base href="http://createrainforest.org/quittung" />
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-             <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />-->
-		<title>REGENWALD für SAMBOJA LESTARI</title>
-	</head>
-	<body>
-		
-		<!-- link zurueck zur startseite via header -->
-		<map id="startseite" name="startseite">
-			<area shape="rect" coords="3,3,650,47" href="index" alt="zur Startseite" />
-		</map>
-		<!-- /link zurück -->	
-		
-		<!-- header and menu_top -->
-		<div id="header">
-			<div id="menue_header_left">
-			BOS Deutschland e.V.
-			</div>
-			<div id="header_transgif">
-				<img src="/images/trans.gif" width="575" height="65" alt="" border="0" usemap="#startseite" />
-			</div>
-		</div>
-		<!-- /header and menu_top -->
-		<!-- content 3teilig-->
-		<div id="content">
-			<!-- /content left-->
-			<!-- container content_main -->
-			<div id="content_main">
-				<div id="textbox_content_big" >
-					<form method="post" action="profil_setup">
-						<input type="hidden" name="cartId" value="$(cartId)" />
-						<table id="formTable" width="95%" border="0" cellspacing="0" cellpadding="0">
-							<tr>
-								<td colspan="3">
-									<span class="titlegray">
-										Hier entsteht die Website "create rainforest".
-										Bitte schauen Sie in ein paar Wochen wieder
-										vorbei!
-									</span>
-								</td>
-							</tr>
-						</table>
-					 </form>
-				</div>
-			</div>
-		</div>
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/baustelle.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/baustelle.xml)


Property changes on: trunk/projects/bos/payment-website/templates/baustelle.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/archive.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/archive.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/archive.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - News-Archiv"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-        <h1 class="extra">NEWS im ARCHIV</h1>
-        <p class="text_content">
-		<bos:news-headlines archive="1" />
-	</p>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/archive.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/archive.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/archive.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/bestellung.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/bestellung.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/bestellung.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<!-- content 3teilig-->
-	<div id="content">
-		<!-- content left-->
-		<div id="content_left">
-			<div id="textbox_left_form">		
-				<table border="0" cellpadding="1" cellspacing="0">
-					<tr>
-						<td></td>
-						<td colspan="2">
-							<img src="/images/step1.gif" width="120" height="20" border="0" alt="" />
-						</td>
-					</tr>
-					<tr><td colspan="4" height="40"></td></tr>
-					<tr>
-						<td> </td>
-						<td colspan="2">
-							<span class="link_titlered">
-								Regenwald schaffen
-								<br />für nur 3,- Euro pro m²
-							</span>
-							<br /><br />
-						</td>
-						<td></td>				
-					</tr>
-					<tr>
-						<td></td>
-						<td colspan="2">
-							Wir freuen uns über Ihre Entscheidung, sich mit BOS für Natur und Mensch in Indonesien zu engagieren.
-							<br /><br />
-							Mit Ihrer Unterstützung leisten Sie einen wichtigen Beitrag zur nachhaltigen Projektarbeit in Samboja Lestari
-							<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-									<a href="idea_subtitle2" class="more">
-										mehr...
-									</a>
-						</td>
-						<td></td>
-					</tr>
-				</table>
-			</div>
-			<!-- footer -->	
-			<div id="menue_footer">	
-				<a href="javascript:window_extra('privacy')" class="footer">
-					Datenschutzinfo
-				</a>
-				l
-				<a href="javascript:window_extra('impressum')" class="footer">
-					Impressum
-				</a>
-			</div>
-			<!-- /footer -->	
-		</div>
-		<!-- /content left-->
-		<!-- container content_main -->
-		<div id="content_main">
-			<div id="textbox_content_big" >
-				<form name="bestellformular" method="post" action="buy-sqm">
-					<table id="formTable" width="100%" border="0" cellspacing="0" cellpadding="0">
-							<tr>
-								<td colspan="3">
-									<span class="headline">
-										Ich bin dabei. Ich möchte sehen wie Samboja Lestari grüner wird und schaffe...
-									</span>
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="5"> </td>
-							</tr>
-							<tr>
-								<td colspan="3">
-									<input type="radio" name="numsqm" value="1"
-											onclick="document.bestellformular.numsqm1.value = '';" />
-									1 m² Regenwald [3 Euro],
-									<br />
-									<input type="radio" name="numsqm" value="5"
-											onclick="document.bestellformular.numsqm1.value = '';" />
-									5 m² Regenwald [15 Euro],
-									<br />
-									<input type="radio" name="numsqm" value="10" checked="checked"
-											onclick="document.bestellformular.numsqm1.value = '';" />
-									10 m²  Regenwald [30 Euro],
-									<br />
-									<input type="radio" name="numsqm" value="30"
-											onclick="document.bestellformular.numsqm1.value = '';" />
-									30 m² Regenwald [90 Euro]
-									<br />
-									<input type="radio" name="numsqm" value=""/>
-									oder
-									<input type="text" name="numsqm1" size="5" value=""
-											onfocus="document.bestellformular.numsqm[4].click()"/>
-									Quadratmeter [zu je 3 Euro].
-									<br />
-	                        				</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="8"> </td>
-							</tr>
-							
-							<tr>
-								<td colspan="3">
-									<input type="checkbox" name="gift" value="1" />
-									Ich möchte die m² symbolisch verschenken.
- 									<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-									<a href="javascript:window_extra('verschenken')" class="more">
-										Info
-									</a>
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="10"> 
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="1" bgcolor="#c0c0c0"> 
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="10"> 
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3">
-									<span class="headline">Spenden sind steuerlich absetzbar!</span><br /> 
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="10"> 
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3">
-									<input type="checkbox" name="donationcert-yearly" value="1" />
-									Ich möchte eine Spendenbescheinigung am Jahresende.
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="10"> 
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="1" bgcolor="#c0c0c0"> 
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="10"> 
-								</td>
-							</tr>	
-												
-							<tr>
-								<td colspan="4">							
-									<span class="help_text">
-										Ihre Daten werden elektronisch über unseren Partner WorldPay erfasst und bearbeitet.
-										Die Bestimmungen des Datenschutzgesetzes werden eingehalten. Daten werden nicht an Dritte
-										weitergegeben.
-									</span>
-									<br />
- 									<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-									<a href="javascript:window_extra('privacy')" class="more">
-										Datenschutzinformation
-									</a>
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="9"> </td>
-							</tr>
-							<tr>
-								<td colspan="3">
-									<span class="help_text">
-										Spenden Sie bequem online via Kreditkarte oder Lastschriftverfahren.
-										Sie verringern damit administrative Kosten für BOS.
-									</span>
-									<!--
-										Ich möchte den administrativen Aufwand und Kosten für BOS verringern und
-										spende deshalb bequem online via Kreditkarte oder per Lastschrift.
-									-->
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="15"> </td>
-							</tr>
-							<tr>
-								<td colspan="3">
-									<input type="checkbox" name="disclaimer_read" value="1" />
-									Ich habe die
- 									<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-									<a href="javascript:show_disclaimer()" class="more">
-										Verzichtsklausel
-									</a> gelesen und stimme ihr zu. <br /> <br />
-								</td>
-							</tr>
-							<tr>
-				                          	<td align="right" colspan="3">
-							  		<input type="submit" class="form_big_bold" name="action" value="Online Spenden"
-										onclick="return check_online();" />
-									<input type="submit" class="form_big" name="action" value="Ãœberweisen"
-										onclick="return check_ueberweisung();" />
-								</td>
-							</tr>
-					</table>
-				</form>
-			</div>
-		</div>
-		<div id="content_right">
-			<div id="helpbox">		
-				<br /><br /><br />
-				[<strong>Regenwald-Urkunde</strong>]
-				<br />
-				Ab einer Spende von 30,- Euro senden wir Ihnen oder dem Beschenkten eine attraktive Regenwald-Urkunde zu.
-				Schon ab 1 m² erhalten Sie eine
-				<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-				<a href="javascript:window_extra('certificat')" class="more">
-					Urkunde
-				</a>
-				als pdf-Download im eigenen Sponsoren-Profil. 
-				<br /><br /><br />
-				[<strong>Spendenquittung</strong>]
-				<br />
-				Bei Spenden über 100,- Euro schicken wir Ihnen eine Spendenbescheinigung per Post zu. Bei Spenden
-				unter 100,- Euro gilt die Zahlungsbestätigung per E-Mail.
-				<br /> <br />	
-				[<strong>Vertrauensgarantie</strong>]<br />
-	        		Worldpay ist ein international anerkannter Onlinezahlungsanbieter.
-	            		Ihre Daten werden über WorldPay verschlüsselt versendet und nach erfolgreicher Transaktion sofort gelöscht.
-				<br /><br />
-	    		</div>			
-		</div>
-	</div>
-</bknr:toplevel>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/de/bestellung.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/bestellung.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/bestellung.xml
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/bos.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/bos.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/bos.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_main"
-  title="REGENWALD für SAMBOJA LESTARI - Über BOS"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="content_main">
-		<div id="textbox_content">
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="3"><span class="headline">BOS Foundation</span></td>
-					<td></td>				
-				</tr>
-				<tr>
-					<td height="15"></td>
-				</tr>
-				<tr>
-					<td>
-						Die <b>Borneo Orangutan Survival Foundation</b> (BOS) ist die weltweit größte Organisation zur Rettung der vom Aussterben bedrohten
-						Orang-Utans. Ihr Lebensraum, der Regenwald mit seiner Artenvielfalt, wird in Zusammenarbeit mit der lokalen Bevölkerung geschützt.
-						BOS ist eine indonesische Nicht-Regierungs-Organisation, die im Jahr 1991 gegründet wurde.
-						<br /><br />
-						Die Aufgabenschwerpunkte von BOS in Indonesien sind:
-						<br /><br />
-						<ul>
-							<li>
-								Konfiszierung illegal gehaltener Orang-Utans, Malaienbären und anderer Arten
-							</li>
-							<li>
-								Rehabilitation der Orang-Utans in Stationen
-							</li>
-							<li>
-								Auswilderung der Tiere in geschützte Regenwaldgebiete
-							</li>
-							<li>
-								Rettung und Umsiedlung von gefährdeten Orang-Utans und anderen Arten
-							</li>
-							<li>
-								Aufforstung und  Schutz von Regenwald 
-							</li>
-							<li>
-								Schaffung von Alternativen für die lokale Bevölkerung
-							</li>
-							<li>
-								Umweltbildung und Aufklärung der lokalen Bevölkerung
-							</li>
-							<li>
-								Ãœberwachung von Schutzgebieten
-							</li> 
-							<li>
-								Auswertung von Satellitenbildern
-							</li>
-							<li>
-								und vieles mehr.
-							</li>
-						</ul>
-						<br />
-						Die Projekte von BOS werden aufgrund der sehr schwierigen wirtschaftlichen Lage in Indonesien hauptsächlich durch ausländische Spendengelder finanziert.
- 					</td>
-				</tr>				
-			</table>		
-		</div>	
-	</div>
-	<div id="content_right">
-		<div id="textbox_right_top">
-			<table id="rightTable" border="0" cellpadding="0" cellspacing="0">
-				
-				<tr><td height="30"></td></tr>			
-				<tr>
-					<td colspan="2"><img src="/images/bos-logo.gif" width="116" height="85" alt="" /></td>
-				</tr>	
-				<tr>
-					<td colspan="2">Möchten Sie gerne mehr über die Projekte von BOS erfahren?
-					<br /><br />
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="http://www.bos-deutschland.de" target="_blank" class="more">
-						bos-deutschland.de
-					</a>
-					<br />
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="http://www.savetheorangutan.info" target="_blank" class="more">
-						savetheorangutan.info
-					</a>
-					<br /><br />
-					</td>
-				</tr>
-				<tr>
-					<td colspan="2">Dort finden Sie auch Links zu unseren BOS- Schwesterorganisationen weltweit.</td>
-				</tr>		
-			</table>			
-		</div>
-	</div>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/bos.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/bos.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/bos.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/buy-sqm.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/buy-sqm.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/buy-sqm.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bos:buy-sqm
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-  <bknr:redirect-request target="$(worldpay-url)"/>
-</bos:buy-sqm>

Copied: trunk/projects/bos/payment-website/templates/de/buy-sqm.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/buy-sqm.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/buy-sqm.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/certificat.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/certificat.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/certificat.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Urkunde"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<h1 class="extra">So sieht Ihre Regenwald-Urkunde aus:</h1>
-	<center>
-		<img src="/images/certificat.jpg" width="300" height="424" alt="" border="0" />
-	</center>	
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/certificat.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/certificat.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/certificat.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/contact.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/contact.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/contact.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_main"
-  title="REGENWALD für SAMBOJA LESTARI - Kontakt"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="content_main">
-		<div id="textbox_content">
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="3"><span class="headline">Kontakt</span>
-					</td>
-					<td>
-					</td>				
-				</tr>
-				<tr>
-					<td height="15">
-					</td>
-				</tr>
-				<tr>
-					<td>Wenn Sie Fragen haben, wenden Sie sich an uns!<br />
-						Wir freuen uns auf Ihre Anregungen und beantworten Ihre Fragen jederzeit gerne.
-						<br /><br />
-						BOS Deutschland e.V.<br />
-						Schöneberger Ufer 69<br />
-						D - 10785 Berlin 
-						<br /><br />	
-						Telefon:   +49.30.26 36 78 33<br />
-						Fax:       +49.30.26 36 78 15<br /><br />
-						E-Mail:
-						<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-						<a href="mailto:info at bos-deutschland.de" class="more">
-							info at bos-deutschland.de
-						</a>
-						<br /><br /><br /><br /><br /><br />
-						Wir werden alle Anfragen baldmöglichst beantworten.  Bitte haben Sie etwas Geduld.
-						<br />
-					</td>					
-				</tr>				
-			</table>		
-		</div>	
-	</div>
-	<div id="content_right">
-		<div id="textbox_right_top">
-			<table id="rightTable" border="0" cellpadding="0" cellspacing="0">				
-				<tr>
-					<td height="30">
-					</td>
-				</tr>			
-				<tr>
-					<td colspan="2"><img src="/images/bos-logo.gif" width="116" height="85" alt="" />
-					</td>
-				</tr>	
-				<tr>
-					<td height="10">
-					</td>
-				</tr>		
-				<tr>
-					<td colspan="2">Möchten Sie gern mehr über die Projekte von BOS erfahren?
-					<br /><br />
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="http://www.bos-deutschland.de" target="_blank" class="more">
-						bos-deutschland.de
-					</a>
-					<br />
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="http://www.savetheorangutan.info" target="_blank" class="more">
-						savetheorangutan.info
-					</a>
-					<br /><br />
-					</td>
-				</tr>
-				<tr>
-					<td>Dort finden Sie auch Links zu unseren BOS- Schwesterorganisationen weltweit.
-					</td>
-				</tr>	
-			</table>
-		</div>		
-	</div>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/contact.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/contact.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/contact.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/disclaimer.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/disclaimer.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/disclaimer.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Verschenken"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<p class="text_content">
-
-		<p><b>Verzichtserklärung</b></p>
-
-		<p>
-Jeder Sponsor eines oder mehrerer Quadratmeter wiederentstehenden 
-Regenwaldes im Aufforstungs- und Naturschutzprojekt Samboja Lestari / Borneo 
-/ Indonesien hat keinerlei Besitzanrechte oder sonstige Ansprüche auf das 
-entsprechende Land.  Niemand wird berechtigt das Land weiter zu verkaufen. 
-Kein Sponsor geht Pflichten ein. Es handelt sich hierbei um eine rein 
-symbolische Handlung mit informativem Charakter.  BOS garantiert, dass das 
-Land für ewig dem Nutzen des nachhaltigen Natur- und Tierschutzes reserviert 
-bleibt.
-		</p>
-	</p>					
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/disclaimer.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/disclaimer.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/generate-cert.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/generate-cert.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/generate-cert.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bos:generate-cert
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  />

Copied: trunk/projects/bos/payment-website/templates/de/generate-cert.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/generate-cert.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/headline2.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/headline2.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/headline2.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_main"
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="content_main">
-		<div id="textbox_content_bigger">
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="2">
-						<span class="headline">
-							Der Schlüssel zum Erfolg - die lokale Bevölkerung
-						</span>
-					</td>
-					<td align="center" valign="top">
-						<img src="../images/pfeil_back.gif" width="10" height="9" alt="" />
-						<a href="javascript:history.back()" class="titlegray">
-							zurück
-						</a>  
-					</td>		
-				</tr>
-				<tr>
-					<td height="6"><img src="../images/trans.gif" width="120" height="10" alt="" />
-					</td>
-					<td><img src="../images/trans.gif" width="130" height="6" alt="" />
-					</td>
- 					<td width="150"><img src="../images/trans.gif" width="140" height="6" alt="" />
-					</td>
-				</tr>		
-				<tr>
-					<td  valign="top">
-						Der Naturschutz und die Bedürfnisse der Bevölkerung dürfen sich nicht im Wege stehen.
-						<br /><br />
-						Das Naturreservat Samboja Lestari bietet der lokalen Bevölkerung ein gesichertes Einkommen, Gesundheit
-						und Bildung. Die Menschen werden in alle Phasen des Projektes mit einbezogen. Landwirtschaft, Baumschule,
-						Kompostproduktion, Aufforstung, Anpflanzung, Forschung und Aufbau der Infrastruktur bieten sichere Arbeitsplätze.
-						<br />
-					</td>
-					<td align="right" colspan="2"><img src="../images/pic_headline2_big.jpg" width="256" height="150" border="0" alt="" /></td>
-				</tr>
-				<tr>
-					<td height="10">
-					</td>
-				</tr>	
-				<tr>
-					<td colspan="3">
-						<b>"Auf diese Weise wird den Menschen eine Alternative geboten, und sie brauchen den Wald nicht mehr zu roden. So können
-						wir der Welt zeigen, dass Natur und Menschen zusammenleben können und einander nicht auszuschließen brauchen."</b>
-						<br />
-						sagt Dr. Willie Smits, Vorsitzender von BOS Indonesien.
-						<br />
-					</td>
-					<td></td>			
-				</tr>
-				<tr>
-					<td height="6">
-					</td>
-				</tr>
-				<tr>
-					<td colspan="3">				
-					</td>			
-				</tr>				
-				<tr>
-					<td height="6">
-					</td>
-				</tr>				
-				<tr>
-					<td height="6">
-					</td>
-				</tr>
-				<tr>
-					<td colspan="3">
-						Die Sicherheit des Naturschutzreservates ist durch die Akzeptanz der indonesischen Bevölkerung gewährleistet.
-						Der Erfolg des Projektes garantiert einen besseren Lebensstandard und umgekehrt.
-					</td>
-				</tr>
-				<tr><td height="16"></td></tr>	
-			</table>	
-		</div>	
-	</div>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/headline2.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/headline2.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/headline2.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/headline3.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/headline3.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/headline3.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_main"
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<!-- container content_main -->
-	<div id="content_main">
-		<div id="textbox_content_bigger">
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="2">
-						<span class="headline">
-							Orang-Utan, Malaienbär und Nashornvogel
-						</span>
-					</td>
-					<td align="center" valign="top">
-						<img src="/images/pfeil_back.gif" width="10" height="9" alt="" />
-						<a href="javascript:history.back()" class="titlegray">
-							zurück
-						</a>
-				  	</td>
-				</tr>
-				<tr>
-					<td><img src="/images/trans.gif" width="120" height="15" alt="" /></td>
-					<td><img src="/images/trans.gif" width="130" height="10" alt="" /></td>
-					<td width="150"><img src="/images/trans.gif" width="140" height="10" alt="" /></td>
-				</tr>
-				<tr>
-					<td colspan="3">
-						Orang-Utans, auch Menschen des Waldes genannt, gehören zu den unmittelbar vom Aussterben bedrohten Menschenaffen.
-						<br /><br />
-						Orang-Utans gehören nicht nur zu unseren nahen Verwandten im Tierreich, sie sind als Samenverbreiter auch unentbehrlich
-						für die Vielfalt des Regenwaldes - sie sind die so genannte Schirmspezies. Somit dient der Schutz dieser faszinierenden
-						Menschenaffen gleichzeitig auch dem Erhalt des Waldökosystems.
-						<br /><br />
-						Heute leben Orang-Utans nur noch auf Sumatra und Borneo. Massive Regenwaldzerstörung und skrupelloser Tierhandel
-						könnten bald das Ende ihrer Art bedeuten. Auch die Malaienbären verlieren ihren Lebensraum. Das Naturreservat Samboja Lestari
-						bietet zahlreichen Tieren eine letzte Zuflucht - eine Chance zum Überleben. Bereits heute leben Malaienbären dort in
-						einem abgegrenzten Areal und in wenigen Jahren können auch Orang-Utans ein Leben in Freiheit genießen.
-						<br /><br />
-						Seltene Arten wie z.B. Nashornvogel, Zwerghirsch und Königskobra können heute schon wieder in Samboja Lestari beobachtet werden.
- 					</td>
-				</tr>
-				<tr><td height="50"></td></tr>		
-				<tr>
-					<td valign="top" colspan="3">
-						<img src="/images/pic_h3_orangutan.jpg" width="169" height="88" border="0" alt="" />
-						<img src="/images/pic_h3_baer.jpg" width="169" height="88" border="0" alt="" />
-						<img src="/images/pic_h3_vogel.jpg" width="169" height="88" alt="" />
-					</td>
-				</tr>			
-				<tr><td height="20"></td></tr>	
-			</table>	
-		</div>	
-	</div><!-- /container content_main -->
-</bknr:toplevel>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/de/headline3.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/headline3.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/headline3.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/idea.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/idea.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/idea.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_main"
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<!-- container content_main -->
-	<div id="content_main">
-		<div id="textbox_content">
-			<table  border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="2">
-						<span class="headline">
-							Samboja Lestari - kreative Aufforstung.
-							<br />
-							Eine Zufluchtstätte für Borneo
-						</span>
-					</td>
-					<td align="center"><img src="/images/pfeil_back.gif" width="10" height="9" alt="" />
-						<a href="javascript:history.back()" class="titlegray">
-							zurück
-						</a>
-					</td>		
-				</tr>
-				<tr><td height="6"> </td></tr>				
-				<tr>
-					<td colspan="3" align="left"><img src="/images/start_pic_headline1.jpg" width="363" height="120" alt="" border="0" /></td>
-					<td></td>			
-				</tr>
-				<tr><td height="6"></td></tr>
-				<tr>
-					<td colspan="3">
-						BOS schafft durch ein einzigartiges Aufforstungskonzept die vielleicht letzte Zufluchtstätte für Orang-Utans,
-						Malaienbären und andere bedrohte Arten in Borneo. Die Fortschritte können Sie anhand von Satellitenbildern hier
-						im Internet beobachten. 
-						<br /><br />
-						Der ehemals artenreiche Regenwald von
-						<a href="javascript:window_infosys()" class="titlegreen">
-							Samboja Lestari
-						</a>
-						wurde in den letzten Jahrzehnten rücksichtslos gerodet und abgebrannt. Nährstoffzehrendes Alang-Alang-Gras breitete
-						sich flächendeckend aus. Zurück blieb eine ökologische Wüste. Doch schon heute kann man deutlich erkennen, dass
-						dies nicht so bleiben muss - denn BOS schafft seit 2001 neuen Regenwald. Das Gebiet von über 17 Millionen m² wird
-						durch ein innovatives Aufforstungs- und Schutzkonzept wieder in natürlichen Lebensraum verwandelt. Im tropischen
-						Borneo wachsen Pflanzen um ein Vielfaches schneller als in Europa. Schon in wenigen Jahren können die ersten
-						Orang-Utans im neuen Regenwald ausgewildert werden und die Freiheit mit anderen Tieren teilen. In Samboja Lestari
-						("ewiges Samboja") entsteht ein Naturschutzgebiet zum dauerhaften Nutzen für Menschen, Tiere und Pflanzen.
-					</td>
-					<td></td>				
-				</tr>				
-			</table>		
-		</div>	
-	</div>
-	<div id="content_right">
-		<div id="textbox_right_top">
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="2">
-						<a href="idea_subtitle1" class="titlegreen">
-							Landwirtschaft, Aufforstung und Schutz
-						</a>
-					</td>
-				</tr>	
-				<tr><td height="6"></td></tr>			
-				<tr>
-					<td>Während der frühen Aufforstungs- phase bauen die indonesischen Landwirte gewinnbringende Agrarprodukte zwischen den </td>
-					<td valign="top" align="right">
-						<a href="idea_subtitle1" class="titlegreen">
-							<img src="/images/projekt_pic_headline1b.jpg" width="69" height="120" alt="" border="0" />
-						</a>
-					</td>
-				</tr>
-				
-				<tr>
-					<td colspan="2">
-						neu gepflanzten Bäumen an. Landwirtschaft und Aufforstung beeinflussen sich positiv...
-						<br />
-						...
-						<a href="idea_subtitle1" class="more">
-							mehr
-						</a>
-					</td>
-				</tr>	
-				<tr><td height="10"> </td></tr>		
-			</table>
-		
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="2">
-						<a href="idea_subtitle2" class="titlegreen">
-							Ein m², der es in sich hat
-						</a>
-					</td>
-				</tr>	
-				<tr><td height="6"> </td></tr>			
-				<tr>
-					<td>
-						<a href="idea_subtitle2" class="titlegreen">
-							<img src="/images/projekt_pic_headline1c.gif" width="163" height="80" border="0" alt="" />
-						</a>
-					</td>
-				</tr>
-				<tr><td height="4"> </td></tr>
-				
-				<tr>
-					<td colspan="2">
-						Zur Finanzierung des Naturreservates hat BOS ein System zum symbolischen Landkauf entwickelt.
-						<br />
-						...
-						<a href="idea_subtitle2" class="more">
-							mehr
-						</a>
-					</td>
-				</tr>			
-			</table>
-		</div>	
-	</div>
-</bknr:toplevel>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/de/idea.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/idea.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/idea.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/idea_subtitle1.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/idea_subtitle1.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/idea_subtitle1.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_main"
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<!-- container content_main -->
-	<div id="content_main">
-		<div id="textbox_content_bigger">
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="2">
-						<span class="headline">
-							Landwirtschaft, Aufforstung und Schutz <br /> - eine gute Kombination
-						</span>
-					</td>
-					<td align="center"><img src="/images/pfeil_back.gif" width="10" height="9" alt="" />
-						<a href="javascript:history.back()" class="titlegray">
-							zurück
-						</a>
-					</td>		
-				</tr>
-				<tr>
-					<td height="6" width="150"><img src="/images/trans.gif" width="160" height="6" alt="" /> </td>
-					<td><img src="/images/trans.gif" width="150" height="6" alt="" /></td>
-					<td width="150"><img src="/images/trans.gif" width="150" height="6" alt="" /></td>
-				</tr>				
-				<tr>
-					<td align="left"><img src="/images/pic_headline1b_big.jpg" width="149" height="180" alt="" border="0" /></td>
-					<td colspan="2">
-Während der frühen Aufforstungsphase bauen die indonesischen Landwirte gewinnbringende Agrarprodukte zwischen den neu gepflanzten Bäumen an. Landwirtschaft und Aufforstung beeinflussen sich positiv durch viele Faktoren. 
-					<br /><br />Agrarprodukte schützen die jungen Tropenbäume vor dem Überwuchern mit Alang-Alang-Gras. Bäume verbessern die Boden- qualität und spenden Schatten. 
-					<br /><br />		
-					Früchte wie Papaya und Ananas werden den Bauern garantiert von BOS abgekauft,  regional vermarktet oder dienen der Eigenversorgung. Allein für die Versorgung der Orang-Utans in der nahe gelegenen Rehabilitationsstation Wanariset werden rund 1000 kg Früchte täglich benötigt.</td>
-					<td></td>			
-				</tr>
-				<tr><td height="6"></td></tr>
-				<tr>
-					<td colspan="3">				
-					</td>			
-				</tr>	
-				<tr><td height="6"> </td></tr>
-				<tr>
-					<td colspan="2"><span class="headline">Das Schutz(ring)system</span></td>
-					<td rowspan="3">
-
-						<img src="/images/ring.jpg" width="215" height="150" border="0" alt="" />
-					</td>
-				</tr>
-				<tr><td height="6"> </td></tr>
-				<tr>
-					<td colspan="2">
-
-Rund um das Naturreservat wird ein <img
-src="/images/pfeil_link_on.gif" width="10" height="9" alt="" /> <a
-href="javascript:javascript:window_ringdetail();"
-class="content_green">Ring</a> aus Zuckerpalmplantagen angelegt. Ãœber
-650 Familien werden vom Zucker als Hauptprodukt profitieren. Der Ring
-schützt das Naturreservat vor den gefürchteten Waldbränden als
-Feuerbarriere.<br /><br />Ein innerer Schutzring aus dicht wachsenden,
-stacheligen Salakpalmen verhindert das Eindringen von Menschen in das
-Schutzgebiet und das Ausbrechen von Orang-Utans. Die Früchte der
-Salakpalme sind zudem wohlschmeckende Nahrung für Mensch und Tier.
-
-					</td>
-				</tr>
-				<tr><td colspan="3">
-Ultraleichtflugzeuge und moderne Satellitentechnik unterstützen die ständige Überwachung der BOS-Projekte aus Luft und Weltraum. Illegaler Holzeinschlag sowie Brandrodung können so auch in Samboja Lestari sehr viel effektiver verfolgt werden.   
-					</td>
-				</tr>	
-			</table>		
-		</div>	
-	</div>	
-</bknr:toplevel>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/de/idea_subtitle1.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/idea_subtitle1.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/idea_subtitle1.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/idea_subtitle2.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/idea_subtitle2.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/idea_subtitle2.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_main"
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="content_main">
-		<div id="textbox_content_bigger">
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="2"><span class="headline">Ein m², der es in sich hat <br /></span></td>
-					<td align="center">
-						<img src="/images/pfeil_back.gif" width="10" height="9" alt="" />
-						<a href="javascript:history.back()" class="titlegray">
-							zurück
-						</a>
-					</td>		
-				</tr>
-				<tr><td height="16"> </td>
-				</tr>	
-				<tr>			
-					<td colspan="3">
-						Zur Finanzierung des Naturreservates hat BOS ein System zum symbolischen Landkauf entwickelt.
-						<br /><br />
-						<a href="bestellung" class="titlered">
-							Schaffen Sie Regenwald für nur 3 Euro pro m²!
-						</a> 
-						<br /><br />
-					</td>
-				</tr>
-				<tr>
-					<td colspan="2">
-						Sie finanzieren den Landkauf, ökologische Aufforstung, eine Baumschule, ökologische Landwirtschaft,
-						Zuckerpalmplantagen, Löhne für indonesische Mitarbeiter, Überwachung und Schutz des Gebietes,
-						Feuerbekämpfung, Umweltbildung, Infrastruktur, Forschung und Arboretum, Orang-Utan-Inseln und das
-						Malaienbärareal.
-					</td>
-					<td>
-						<img src="/images/projekt_pic.jpg" width="240" height="120" />
-					</td>
-				</tr>
-				<tr>
-					<td colspan="3">
-						<br />
-						Leisten Sie einen Beitrag für eine bessere Zukunft und beobachten Sie den Projektverlauf von Samboja
-						Lestari im Internet. Jeder m², den Sie symbolisch erwerben, wird Ihnen durch ein persönliches Profil
-						zugeordnet. Über ein Kennwort können Sie diese m² jederzeit leicht wieder finden.
-						Es können auch kurze Infotexte "auf" den jeweiligen m² hinterlassen werden, um sich mit anderen
-						Regenwaldsponsoren auszutauschen.  Besucher dieser Internetseite dürfen in alle m² und deren
-						persönliche Profile einblicken.
-						<br /><br />
-						<b>Beobachten Sie "Ihre" Fläche aus unterschiedlichen Perspektiven bei der Entwicklung. BOS bietet Ihnen
-						einen transparenten Einblick u.a. über Satellitenbilder und berichtet regelmäßig über die
-						Fortschritte vor Ort.</b>
-						<br /><br />
-						Unterstützen Sie das Projekt und Sie erhalten eine Regenwald-Urkunde. Sie können m² auch an Ihre
-						Freunde, Verwandten und Bekannten verschenken.
-						<br /><br />
-						Machen Sie mit und sehen Sie Regenwald wachsen!
-
-					</td>
-				</tr>
-				<tr>
-					<td height="6"> 
-					</td>
-				</tr>				
-			</table>	
-		</div>	
-	</div>
-	<!-- /container content_main -->
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/idea_subtitle2.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/idea_subtitle2.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/idea_subtitle2.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/impressum.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/impressum.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/impressum.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Impressum"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<h1 class="extra">Impressum</h1>
-	<p class="text_content">
-		<strong>www.create-rainforest.org </strong>ist eine Webseite von:<br /><br />
-
-		The Borneo Orangutan Survival Foundation (BOS) in Zusammenarbeit mit der
-		Schwesterorganisation BOS Deutschland e.V.. <br /> <br />
-
-		Postanschrift:<br /><br />
-		BOS Deutschland e.V.<br /><br />
-		Schöneberger Ufer 69<br />
-		10785 Berlin<br /><br />
-				
-		Tel.  +49 - (0)30 - 26 36 78 33<br />
-		Fax: +49 - (0)30 - 26 36 78 15<br /><br />
-				
-		<img src="/images/pfeil_link_on.gif" valign="bottom" width="10" height="9" alt="" />
-		<a href="mailto:info at bos-deutschland.de'" class="content_green">
-			info at bos-deutschland.de
-		</a>
-		<br />
-		<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-		<a href="http://www.bos-deutschland.de" target="_empty" class="content_green">
-			www.bos-deutschland.de
-		</a>
-		<br /><br />
-		1. Vorsitzender: Boris Thiemig<br />
-		2. Vorsitzender: Dr. Dr. Klaus Ursus Schendel<br /><br />
-		BOS Deutschland e.V. ist im Vereinsregister des Amtsgerichtes Kiel unter Nr. 502 VR 4228 eingetragen.<br /><br />
-		Die Fotos auf der Webseite sind copyrightgeschützt und stehen für kommerzielle  Zwecke nicht frei zur Verfügung.
-		Wenn Sie Fotos von BOS nutzen möchten, wenden Sie sich bitte an die oben genannte Kontaktadresse. <br /><br />
-		Wenn Sie Fragen haben sollten, schreiben Sie eine E-Mail oder rufen Sie uns an.<br /><br />
-	</p>					
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/impressum.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/impressum.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/impressum.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/index.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/index.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/index.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_main"
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<!-- container content_main -->
-	<div id="content_main">
-		<div id="textbox_content">
-			<table border="0" cellpadding="0" cellspacing="0">
-				<tr>
-					<td colspan="3">
-						<a href="idea" class="titlegreen">
-							Samboja Lestari - kreative Aufforstung in Borneo. <br />
-							Eine Zufluchtstätte für bedrohte Tierarten
-						</a>
-					</td>
-					<td></td>				
-				</tr>
-				<tr><td height="6"> </td></tr>				
-				<tr>
-					<td colspan="3" align="left">
-						<a href="idea" class="titlegreen">
-							<img src="/images/start_pic_headline1.jpg" width="363" height="120" alt="" border="0" />
-						</a>
-					</td>
-					<td></td>			
-				</tr>
-				<tr><td height="6"></td></tr>
-				<tr>
-					<td colspan="3">
-BOS schafft durch ein einzigartiges Aufforstungskonzept die vielleicht
-letzte Zufluchtstätte für Orang-Utans, Malaienbären und andere
-bedrohte Arten in Borneo. Die Fortschritte können Sie direkt hier im
-Internet beobachten.
-					<br />
-					...
-					<a href="idea" class="more">
-						mehr
-					</a>
-					</td>
-					<td></td>				
-				</tr>
-				<tr><td height="10"></td></tr>
-				
-				<tr>
-					<td>
-						<a href="headline2" class="titlegreen">
-							Der Schlüssel zum Erfolg - die lokale Bevölkerung
-						</a>
-					</td>
-					<td></td>
-					<td>
-						<a href="headline3" class="titlegreen">
-							Orang-Utan, Malaienbär und Nashornvogel
-						</a>
-					</td>
-					<td></td>				
-				</tr>
-				<tr><td height="6"> </td></tr>				
-				<tr>
-					<td align="left">
-						<a href="headline2" class="titlegreen">
-							<img src="/images/start_pic_headline2b.jpg" width="175" height="92" alt="" border="0" />
-						</a>
-					</td>
-					<td><img src="/images/trans.gif" width="16" height="1" alt="" border="0" /></td>
-					<td align="left">
-						<a href="headline3" class="titlegreen">
-							<img src="/images/start_pic_headline3.jpg" width="175" height="92" border="0" alt="" />
-						</a>
-					</td>
-					<td></td>			
-				</tr>
-				<tr><td height="6"></td></tr>
-				<tr>
-					<td>Naturschutz und Bedürfnisse der Bevölkerung dürfen sich nicht im Wege stehen. 
-						<br />
-						...
-						<a href="headline2" class="more">
-							mehr
-						</a>						
-					</td>
-					<td></td>
-					<td>Orang-Utans gehören zu den unmittelbar vom Aussterben bedrohten Menschenaffen. 
-					<br />
-					...
-					<a href="headline3" class="more">
-						mehr
-					</a> 
-					</td>
-					<td></td>				
-				</tr>
-			</table>		
-		</div>	
-	</div>
-	<div id="content_right">
-		<bos:news-headlines />
-		<div id="newsarchive">
-			<img src="/images/pfeil_link_on.gif" width="10" height="9" border="0" alt="" />
-			<a href="javascript:window_news('archive')" class="menue">
-				<strong>NEWS im ARCHIV</strong>
-			</a> 
-		</div>	
-		<div id="subscribe">
-			<form style="margin:0px" name="form" method="post">
-				<input value="news" name="list" type="hidden"/>
-				<strong>Infos direkt nach Hause? </strong><br />
-					Ihre E-Mail-Adresse:
-					<br /><br />
-					<input type="text" class="form_big" name="email" size="20" maxlength="40" value="" />
-					<input value="ja" class="form_big" name="action" type="submit" onclick="return send_info_request();" />
-			</form> 
-		</div>	
-	</div>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/index.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/index.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/index.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/info-request.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/info-request.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/info-request.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - News"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<bos:send-info-request email="$(email)">
-		<p>
-			<span class="headline">
-				Vielen Dank für Ihr Interesse
-			</span>
-		</p>
-
-		<p>
-			Wir werden Ihnen gelegentlich Informationen über BOS und das Projekt Samboja Lestari per Email zuschicken.
-		</p>
-		<p>
-			Bei Fragen wenden Sie sich bitte per Email an service at create-rainforest.org.
-		</p>
-	</bos:send-info-request>
-</bknr:toplevel>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/de/info-request.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/info-request.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/infosys-help-poidetail.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/infosys-help-poidetail.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/infosys-help-poidetail.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Hilfe zur Satellitenkarte"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<h1 class="extra">Hilfe zur Satellitenkarte</h1>
-	<p class="text_content">
-		<p> Sie befinden sich in der Detail-Anzeige für einen interessanten Punkt (POI) auf dem Projektgelände
-		in Samboja Lestari.  Links oben in der Ãœbersichtskarte bekommen Sie angezeigt, wo sich dieser POI
-		auf dem Gelände befindet.</p>
-		<p> Durch Klick auf einen der POI-Titel in der Liste links können Sie einen anderen POI anzeigen.</p>
-		<p> Oben rechts im Bild finden Sie sechs Detail-Fotos von diesem POI.  Durch Klick auf die
-		 Miniaturdarstellung können Sie das Foto vergrößert anzeigen.</p>
-		<p> Am unteren des Fotos finden Sie bis zu drei Schaltflächen mit den Titeln <strong>Sat-Karte</strong>,
-		<strong>Luftbild</strong> und <strong>Panorama</strong>.  Durch Klick auf eine der Schaltflächen können Sie
-		eine andere Ansicht des POI anzeigen.</p>
-		<p style="margin-left: 40px; margin-right: 40px;">
-		  <bl>
-		    <li><strong>Sat-Karte</strong> Ausschnitt aus dem Satellitenfoto des Projektgeländes von 2002</li>
-		    <li><strong>Luftbild</strong> Luftbild des POI, aufgenommen im Herbst 2004 von einem Leichtflugzeug</li>
-		    <li><strong>Panorama</strong> Panorama-Foto des POI, aufgenommen im Herbst des Jahres 2004.  Durch Klicken
-		        und Ziehen im Panoramabild können Sie die Ansicht verändern.</li>
-		  </bl>
-		</p>
-		<p> Durch Klick auf die Übersichtskarte links oben gelangen Sie wieder zurück zur POI-Übersicht.</p>
-	</p>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/infosys-help-poidetail.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/infosys-help-poidetail.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/infosys-help-poifoto.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/infosys-help-poifoto.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/infosys-help-poifoto.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Hilfe zur Satellitenkarte"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<h1 class="extra">Hilfe zur Satellitenkarte</h1>
-	<p class="text_content">
-		<p> Sie befinden sich in der Detail-Anzeige für einen interessanten Punkt (POI) auf dem Projektgelände
-		in Samboja Lestari.  Links oben in der Ãœbersichtskarte bekommen Sie angezeigt, wo sich dieser POI
-		auf dem Gelände befindet.</p>
-		<p> Das angezeigte Bild zeigt eine Ansicht des POI.  Durch Klick auf eines der sechs rechts oben
-		angezeigten kleinen Bilder können Sie weitere Ansichten des POI sehen.  Klicken Sie auf "Zurück",
-		um zurück zur Ansicht des Satellitenkarten-Ausschnitts des POI zu kommen.</p>
-		<p> Durch Klick auf die Übersichtskarte links oben gelangen Sie wieder zurück zur POI-Übersicht.</p>
-	</p>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/infosys-help-poifoto.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/infosys-help-poifoto.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/infosys-help-qmdetail.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/infosys-help-qmdetail.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/infosys-help-qmdetail.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Hilfe zur Satellitenkarte"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="hbebettp://headcraft.de/bos"
-  >
-	<h1 class="extra">Hilfe zur Satellitenkarte</h1>
-	<p class="text_content">
-		<p> Sie befinden sich in der Detailansicht für das Quadratmeter-Verkaufsgebiet.  Hier können Sie sehen, wie viele
-		Quadratmeter schon verkauft wurden.  Weiterhin können Sie die Profile der Sponsoren und die von ihnen dort hinterlegten
-		Mitteilungen sehen.</p>
-		<p> Wenn Sie angemeldet sind, werden Ihre "eigenen" Quadratmeter in der Satellitenkarte durch ein Icon (<img src="/images/qm.gif"
-		border="0" />) markiert.  Die "verkauften" Quadratmeter werden in der Satellitenkarte farbig hervorgehoben.  Durch Klick in die
-		Satellitenkarte in der Mitte des Bildschirms können Sie die "Quadratmeterlupe" verschieben.  Der so angeklickte, rot umrahmte
-		Bereich wird rechts oben vergrößert dargestellt.  Durch Klick auf einen "verkauften" und farbig hervorgehobenen Quadratmeterbereich
-		in der vergrößerten Darstellung können Sie das zugehörige Sponsorenprofil aufrufen.  Es wird unter dem Vergrößerungsbereich angezeigt
-		und kann "aufgezogen" werden, indem man die Maus hinein bewegt.</p>
-		<p> Unten rechts in der Satellitenkarte finden Sie das Ebenenauswahl-Menü, in dem sie einzelne Darstellungsebenen der Satellitenkarte
-		durch Klick auf den Namen der Ebene ein- und ausblenden können.</p>
-		<p>Folgende Ebenen stehen zur Verfügung:</p>
-		<p style="margin-left: 40px; margin-right: 40px;"> 
-		  <bl>
-		    <li><strong>Sat-Karte</strong> Die Satelliten-Karte stellt den Hintergrund der Karte dar </li>
-		    <li><strong>Verkaufsgebiete</strong> Gebiete mit zu verkaufenden Quadratmetern werden in grau dargestellt </li>
-		    <li><strong>Verkauft</strong> Verkaufte Quadratmeter werden unterschiedlich farbig dargestellt</li>
-		  </bl>
-		</p>
-		<p> Durch Klick auf die Übersichtskarte links oben gelangen Sie wieder zurück zur POI-Übersicht.</p>
-	</p>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/infosys-help-qmdetail.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/infosys-help-qmdetail.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/infosys-help-uebersicht.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/infosys-help-uebersicht.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/infosys-help-uebersicht.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Hilfe zur Satellitenkarte"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<h1 class="extra">Hilfe zur Satellitenkarte</h1>
-	<p class="text_content">
-		<p> Sie befinden sich in unserem Satelliten-Informationssystem.
-		Hier können Sie sich selbst ein Bild über das Projektgelände in Samboja Lestari machen, sowie nachsehen, wo
-		sich die von Ihnen gesponsorten Quadratmeter auf dem Gelände befinden. </p>
-		<p>
-		Auf der Übersichtskarte sehen Sie verschiedene Icons, die Sie anklicken können und die sie zu weiteren Bildern
-		führen:</p>
-		<span style="border-left:30px; border-right:30px">
-			<table border="0">
-				<tr>
-					<td width="20"> </td>
-					<td>
-						<img src="/images/punkt.gif" border="0" />
-					</td>
-					<td>
-						Hier befindet sich eine Einrichtung von BOS.
-					</td>
-					<td width="20"> </td>
-				</tr>
-				<tr>
-					<td width="20"> </td>
-					<td>
-						<img src="/images/palme.gif" border="0" />
-					</td>
-					<td>
-						Dieses Icon markiert einen sehenswürdigen Punkt auf dem Projektgelände.
-					</td>
-					<td width="20"> </td>
-				</tr>
-				<tr>
-					<td width="20"> </td>
-					<td>
-						<img src="/images/sale.gif" border="0" />
-					</td>
-					<td>
-						Verkaufsgebiet für Quadratmeter, hier können die Profile der
-						Quadratmetersponsoren einsehen.
-					</td>
-					<td width="20"> </td>
-				</tr>
-				<tr>
-					<td width="20"> </td>
-					<td>
-						<img src="/images/qm.gif" border="0" />
-					</td>
-					<td>
-						Hier sind "Ihre" Quadratmeter.  Dieses Icon wird nur angezeigt, wenn
-						Sie sich angemeldet haben.
-					</td>
-					<td width="20"> </td>
-				</tr>
-			</table>
-		</span>
-		<p> Ãœber die Liste unter "Points of Interest" links gelangen Sie direkt zum von Ihnen angeklickten
-		sehenswürdigen Punkt. </p>
-		<p> Um aus einer der Unterebenen wieder zur Ãœbersicht zu gelangen, klicken Sie bitte auf die links
-		oben angezeigte Ãœbersichtskarte. </p>
-		<p> Falls Sie bereits Quadratmeter gesponsort haben, können Sie sich durch Eingabe Ihrer Sponsor-ID
-		und Ihres Kennworts oder Ihres Mastercodes in des Login-Feld links unten anmelden.  Sie haben
-		dann Zugriff auf Ihr Sponsoren-Profil und können Ihren Sponsoren-Status sowie ggf. Ihre Regenwald-Urkunde
-		im PDF-Format abrufen. </p>
-		<p> Wir wünschen Ihnen viel Spaß bei Ihrer virtuellen Entdeckungsreise nach Samboja Lestari! </p>
-	</p>					
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/infosys-help-uebersicht.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/infosys-help-uebersicht.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/infosystem.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/infosystem.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/infosystem.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-	<head>
-		<!--<BASE HREF="http://jabberwock.dyndns.orgbuy-sqm">-->
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript">
-		</script>
-		<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
-		<title>REGENWALD für SAMBOJA LESTARI - Infosystem</title>
-	</head>
-
-<body>
-<div id="header_infosystem">
-</div>
-<div id="content_infosystem">
-	<h1 class="extra">Infosystem "rund um das Satellitenbild"</h1>
-</div>
-</body>
-</html>
-

Copied: trunk/projects/bos/payment-website/templates/de/infosystem.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/infosystem.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/infosystem.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/mail-transfer.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/mail-transfer.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/mail-transfer.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bknr:toplevel
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<bos:mail-transfer />
-	<!-- content 3teilig-->
-	<div id="content">
-		<div id="content_left"><!-- content left-->
-			<div id="textbox_left_form">		
-				<table border="0" cellpadding="1" cellspacing="0">
-					<tr>
-						<td></td>
-						<td colspan="2">
-							<img src="/images/step3.gif" width="120" height="20" border="0" alt="" />
-						</td>
-					</tr>
-					<tr><td colspan="4" height="40"></td></tr>
-				</table>			                                             
-			</div>	
-			<!-- footer -->	
-			<div id="menue_footer">	
-				<a href="javascript:window_extra('privacy')" class="footer">
-					Datenschutzinfo
-				</a>
-				l
-				<a href="javascript:window_extra('impressum')" class="footer">
-					Impressum
-				</a>
-			</div>
-			<!-- /footer -->	
-		</div>
-		<!-- /content left-->
-		<!-- container content_main -->
-		<div id="content_main">
-			<div id="textbox_content">
-				<table  border="0" cellpadding="0" cellspacing="0">
-					<tr>
-						<td colspan="3">
-							<span class="headline">
-								Vielen Dank für Ihre Unterstützung
-							</span>
-						</td>
-						<td></td>
-					</tr>
-					<tr><td height="6"></td></tr>
-					<tr>
-						<td colspan="3">
-							<strong>Bitte geben Sie unbedingt die ID $(contract-id) als Verwendungszweck
-							Ihrer Überweisung an, damit wir Sie nach der Bearbeitung erreichen können!</strong>
-						</td>
-					</tr>
-					<tr><td height="6"></td></tr>
-					<tr>
-						<td colspan="3">
-								<table border="0">
-									<tr><td colspan="2">BOS Deutschland e.V.</td></tr>
-									<tr><td>Kontonummer:</td><td>32 10 100</td></tr>
-									<tr><td>Bank:</td><td>Bank für Sozialwirtschaft</td></tr>
-									<tr><td>BLZ:</td><td>100 205 00</td></tr>
-								</table>
-						</td>
-					</tr>
-					<tr><td height="6"></td></tr>
-					<tr>
-						<td colspan="3">
-							Wir melden uns direkt nach Eingang Ihrer Ãœberweisung und
-							geben Ihnen die Informationen, die Sie benötigen, um Ihre Quadratmeter im Internet zu beobachten.
-							<br /><br />
-							<a href="index" class="more">
-								<img src="/images/pfeil_link_on.gif" width="10" height="9" border="0" alt="" />
-								Zurück zur Home Page
-							</a>
-						</td>
-						<td></td>
-					</tr>
-				</table>
-			</div>
-		</div>
-	</div>
-</bknr:toplevel>		

Copied: trunk/projects/bos/payment-website/templates/de/mail-transfer.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/mail-transfer.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/mail-transfer.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Copied: trunk/projects/bos/payment-website/templates/de/news-extern.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/news-extern.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/news.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/news.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/news.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - News"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<bos:news-item />
-	<h1 class="extra">
-		<img src="/images/pfeil_link_on.gif" width="10" height="9" border="0" alt="" />
-		<a href="javascript:window_news('../archive')" class="more">
-			NEWS im ARCHIV
-		</a>
-	</h1>					
-</bknr:toplevel>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/de/news.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/news.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/news.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/print_profil_setup.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/print_profil_setup.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/print_profil_setup.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Profil drucken"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="noprint"><!-- container wird nicht mitgedruckt -->
-		<table border="0">
-			<tr>
-				<td colspan="3" height="20"> </td>
-			</tr>
-			<tr>
-				<td width="10"> 
-				</td>
-				<td colspan="2">
-				Bitte überprüfen Sie ggf. vor dem Drucken Ihre Druckereinstellungen.
-				</td>
-			</tr>
-			<tr>	
-				<td colspan="2"> </td>										
-				<td align="right" height="30">
-				<input class="form_big" type="button" value="Seite drucken" onclick="self.print(); return false;" id="drucken" name="drucken" /> 		
-				</td>
-			</tr>
-		</table>
-	</div>
-	<!-- content_main -->
-	
-	<table id="formTable"  align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-		<tr>
-			<td colspan="3" height="10"><h1 class="extra">Meine m² in Samboja Lestari - mein Sponsoren-Profil</h1>	
-			</td>
-		</tr>		
-		<tr>
-			<td colspan="3" height="10"> 
-			</td>
-		</tr>
-		<tr>
-			<td colspan="3" height="25">Ihre Sponsoren-Profil-Zugangsdaten:
-			</td>
-		</tr>
-		<tr>
-			<td height="20" width="40%">
-				<strong>Ihre Sponsoren-ID:</strong>
-			</td>
-			<td width="15">
-			</td>
-			<td>
-				$(sponsor-id)
-			</td>
-		</tr>						
-		<tr>
-			<td height="30">   
-				<strong> Ihr Kennwort:</strong>
-			</td>
-			<td>
-			</td>
-			<td>
-				$(sponsor-password_new)
-			</td>
-		</tr>
-		<tr>
-			<td colspan="3" height="20"> 
-			</td>
-		</tr>					
-		<tr>
-			<td colspan="3">Momentan führen wir Ihr Profil unter folgendem angegebenem Namen:
-			</td>
-		</tr>	
-		<tr>
-			<td colspan="3" height="8"> 
-			</td>
-		</tr>					
-		<tr>
-            <td width="40%" height="20">    
-			 	Name:
-			</td>
-            <td> 
-			</td>
-            <td>
-				$(name)                       
-             </td>
-		</tr>
-		<tr>
-			<td colspan="3" height="15"> 
-			</td>
-		</tr>
-		<tr>
-			<td colspan="3">
-				<br />Ihre E-Mail-Adresse wird<strong> nicht</strong> veröffentlicht, sondern lediglich für interne Informationszwecke verwendet.
-			</td>
-		</tr>
-		<tr>
-			<td colspan="3" height="18"> 
-			</td>
-		</tr>
-		<tr>
-            <td class="content_text" height="20">    
-				E-Mail-Adresse:
-			</td>
-            <td> 
-			</td>
-            <td>
-                $(email)
-            </td>
-		</tr>						
-		<tr>
-			<td height="12">
-			</td>
-		</tr>
-		<tr>
-			<td colspan="3" height="10"> 
-			</td>
-		</tr>
-		<tr>
-			<td colspan="3"> 
-				<div id="footer_print_top" align="center">
-					<div>
-						<a href="mailto:mail at bosf-deutschland.de" class="footer_bold">
-							mail at bosf-deutschland.de
-						</a>
-					</div>
-					<div style="padding-left:115px"> </div>
-					<div><span class="link_footer_bold">BOS Deutschland e.V.</span></div>
-				</div>
-				<div id="footer_print_bottom" align="center">
-					<div>Telefon: +49.30.26 36 78 33</div>
-					<div>l</div>
-					<div>D-10785 Berlin </div>
-					<div>l</div>
-					<div>Schöneberger Ufer 69</div>
-				</div>
-			</td>
-		</tr>
-	</table>
-</bknr:toplevel>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/de/print_profil_setup.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/print_profil_setup.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/print_profil_setup.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/print_ueberweisung.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/print_ueberweisung.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/print_ueberweisung.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Überweisungsformular drucken"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="noprint"><!-- container wird nicht mitgedruckt -->
-		<table border="0">
-			<tr>
-				<td colspan="3" height="20"> </td>
-			</tr>
-			<tr>
-				<td colspan="3" align="right">Bitte überprüfen Sie ggf. vor dem Drucken Ihre Druckereinstellungen.</td>
-			</tr>
-			<tr>	
-				<td colspan="2"> </td>										
-				<td align="right" height="30">
-				<input class="form_big" type="button" value="Seite drucken" onclick="self.print(); return false;" id="drucken" name="drucken" /> 		
-				</td>
-			</tr>
-		</table>
-	</div>
-	<!-- content_main -->
-	<table id="formTable" width="100%" border="0" cellspacing="10" cellpadding="0">
-		<tr>
-			<td colspan="3" height="10"><h1 class="extra">Meine Überweisung für das BOS-Projekt "Samboja Lestari"</h1>	
-			</td>
-		</tr>		
-		<tr>
-			<td colspan="3" height="20"> </td>
-		</tr>
-		<tr>
-			<td colspan="3">
-			Ich überweise den Betrag von $(Betrag) Euro<br />
-			auf das Spendenkonto "Samboja Lestari" von BOS Deutschland e.V.<br /><br />
-			Kontonummer:XXXXXXXXXXX<br />
-			BLZ:XXXXXXXXXXX<br />
-			Bank:XXXXXXXXXXXX<br /><br />
-			Verwendungszweck: $(Transaktionsnummer)<br />
-			<strong>bitte unbedingt auf dem Ãœberweisungsformular angeben!</strong>
-                         </td>
-		</tr>						
-		<tr>
-			<td colspan="3" height="20"> </td>
-		</tr>
-		
-		<tr>
-			<td>Vorname:</td>
-			<td width="10"></td>
-			<td>$(vorname)</td>
-		</tr>
-		<tr>
-			<td>Name:</td>
-			<td></td>
-			<td>$(name)</td>
-		</tr>
-		<tr>
-			<td>Straße/Nr.:</td>
-			<td></td>
-			<td>$(strasse)</td>
-		</tr>
-		<tr>
-			<td>PLZ/Ort</td>
-			<td> </td>
-			<td>$(plz) $(ort)</td>
-		</tr>
-		<tr>
-			<td>E-Mail:</td>
-			<td> </td>
-		<td>$(email)</td>
-		</tr>
-		<tr>
-			<td>Telefon:</td>
-			<td> </td>
-			<td>$(telefon)</td>
-		</tr>							
-		<tr>
-			<td colspan="3" height="15"> </td>
-		</tr>
-		<tr>
-			<td colspan="3" >
-				<span class="help_text">
-					BOS garantiert:
-					<br />
-					Ihre Daten werden lediglich für die Reservierung "Ihrer" m2 benötigt.
-					<br />
-					Die Bestimmungen des Datenschutzgesetzes werden eingehalten. Diese Daten werden nicht an Dritte
-					weitergegeben.
-				</span>
-				<br />
-				<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-				<a href="javascript:window_extra('privacy')" class="more">
-					Datenschutzinfo
-				</a>
-			</td>
-		</tr>
-		<tr>
-			<td colspan="3" height="15"> </td>
-		</tr>
-		<tr>
-			<td colspan="3"> 
-				<div id="footer_print_top" align="center">
-					<div>
-						<a href="mailto:mail at bosf-deutschland.de" class="footer_bold">
-							mail at bosf-deutschland.de
-						</a>
-					</div>
-					<div style="padding-left:115px"> </div>
-					<div>
-						<span class="footer_bold">
-							BOS Deutschland e.V.
-						</span>
-					</div>
-				</div>
-				<div id="footer_print_bottom" align="center">
-					<div>Telefon: +49.30.26 36 78 33</div>
-					<div>l</div>
-					<div>D-10785 Berlin </div>
-					<div>l</div>
-					<div>Schöneberger Ufer 69</div>
-				</div>
-			</td>
-		</tr>
-	</table>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/print_ueberweisung.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/print_ueberweisung.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/print_ueberweisung.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/print_versand_quittung.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/print_versand_quittung.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/print_versand_quittung.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Versand-Quittung drucken"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="noprint">
-		<table border="0">
-			<tr>
-				<td colspan="3" height="20"> </td>
-			</tr>
-			<tr>
-				<td width="10"> </td>
-				<td colspan="2" align="right">Bitte überprüfen Sie ggf. vor dem Drucken Ihre Druckereinstellungen.</td>
-			</tr>
-			<tr>	
-				<td colspan="2"> </td>										
-				<td align="right" height="30">
-				<input class="form_big" type="button" value="Seite drucken" onclick="self.print(); return false;" id="drucken" name="drucken" /> 		
-				</td>
-			</tr>
-		</table>
-	</div>
-	<!-- content_main -->
-	<table id="formTable" width="100%" border="0" cellspacing="10" cellpadding="0">
-		<tr>
-			<td colspan="3" height="10"><h1 class="extra">Meine m² in Samboja Lestari </h1>	
-			</td>
-		</tr>		
-		<tr>
-			<td colspan="3" height="20"> </td>
-		</tr>		
-		<tr>
-			<td colspan="3">Die Regenwald-Urkunde wird auf folgenden Namen ausgestellt:</td>
-		</tr>
-		<tr>
-			<td>Name:</td>
-			<td></td>
-			<td>$(name)</td>
-		</tr>
-		<tr>
-			<td colspan="3">und wird an folgende Adresse versendet:</td>
-		</tr>
-		<tr>
-			<td>Adresse:</td>
-			<td> </td>
-		<td>$(adresse)</td>
-		</tr>
-		<tr>
-			<td colspan="3" height="40">Mit dieser Zahlung wurde ein neues Sponsoren-Profil mit der folgenden Sponsoren-ID angelegt:
-			</td>
-		</tr>
-		<tr>
-			<td height="20" width="40%"><strong>Ihre Sponsoren-ID:</strong></td>
-			<td width="15"></td>
-			<td>$(sponsor-id)</td>
-		</tr>					
-		<tr>
-			<td colspan="3" height="15"> </td>
-		</tr>
-		<tr>
-			<td colspan="3" height="15"> </td>
-		</tr>
-		<tr>
-			<td colspan="3"> 
-				<div id="footer_print_top" align="center">
-					<div>
-						<a href="mailto:mail at bosf-deutschland.de" class="footer_bold">
-							mail at bosf-deutschland.de
-						</a>
-					</div>
-					<div style="padding-left:115px"> </div>
-					<div>
-						<span class="footer_bold">
-							BOS Deutschland e.V.
-						</span>
-					</div>
-				</div>
-				<div id="footer_print_bottom" align="center">
-					<div>Telefon: +49.30.26 36 78 33</div>
-					<div>l</div>
-					<div>D-10785 Berlin </div>
-					<div>l</div>
-					<div>Schöneberger Ufer 69</div>
-				</div>
-			</td>
-		</tr>
-	</table>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/print_versand_quittung.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/print_versand_quittung.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/print_versand_quittung.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/privacy.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/privacy.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/privacy.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Datenschutzinformation"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<h1 class="extra">Datenschutzgrundsätze (Privacy Policy) von BOS Deutschland e.V.</h1>
-	<p class="text_content">
-		<p>
-Der Schutz Ihrer persönlichen Daten durch elektronische Verarbeitung
-ist BOS Deutschland e.V. ein wichtiges Anliegen und streng
-reglementiert.  BOS Deutschland e.V. ist ein gemeinnützig anerkannter
-Verein und unterliegt dem Bundesdatenschutzgesetz (BDSG). Eingetragen
-in das Vereinsregister Amtsgericht Kiel, Nr. 502 VR 4228;
-Freistellungsbescheid Finanzamt Kiel-Nord, GL 5105.
-		</p>
-		<p>
-<b>Was geschieht mit Ihren persönlichen Daten?</b>
-		</p>
-		<p>
-Wenn Sie sich dazu entschieden haben online zu spenden, müssen Sie
-Ihre Kontoinformationen bekannt geben.  Diese Informationen werden
-ausschließlich von WorldPay verarbeitet.  WorldPay ist ein
-international anerkannter Onlinezahlungsanbieter.  Ihre Daten werden
-über WorldPay im sicheren SSL-Verfahren verschlüsselt versendet und
-nach erfolgreicher Transaktion sofort wieder gelöscht.  BOS
-Deutschland e.V. hat keinen Zugriff auf Ihre Kontoinformationen.
-		</p>
-		<p>
-Jedem Quadratmeter des Naturschutzprojektes, den Sie durch Ihre Spende
-unterstützen, wird Ihr persönliches Profil angehängt. Dieses Profil
-besteht aus Namen, Landesherkunft, Anzahl der gesponsorten
-Quadratmeter, Datum der Unterstützung und einem möglichen,
-persönlichen Grußtext.  Alle Profilinformationen (ausschließlich
-E-Mail-Adresse und Postadresse) sind für jeden Besucher unserer
-Webseite einsehbar.  Hierdurch soll eine größtmögliche Transparenz und
-Interaktion zwischen den Sponsoren gefördert
-werden.  Profilinformationen können von der betreffenden Person durch
-Kennwortzugang jederzeit geändert werden.  Hierüber ist es ist Ihnen auch
-möglich, anonym zu bleiben.
-		</p>
-		<p>
-Um Ihnen Ihr persönliches Profil mit Sponsoren-ID und Kennwort
-zusenden zu können, benötigen wir die Angabe Ihrer E-Mail-Adresse.
-Für die Versendung von Urkunden per Post benötigen wir eine
-entsprechende Adresse und den Namen der Person, auf die die Urkunde
-ausgestellt werden soll.  Für die Versendung von
-Newslettern/Nachrichten können Sie uns Ihre E-Mail-Adresse
-bekanntgeben.
-		</p>
-		<p>
-Wir versichern, dass diese Daten nur zu Zwecken der Verwaltung und
-Information von BOS Deutschland e.V. sowie im internationalen
-BOS-Verbund verwendet werden. Sie können der Zusendung von
-Informationen jederzeit widersprechen und das Löschen Ihrer Daten aus
-dem System bewirken.  Bitte geben Sie stets Ihre Sponsor-ID an!
-		</p>
-		<p>
-Wenn Sie Fragen zu den Datenschutzgrundsätzen von BOS Deutschland
-e.V. haben, wenden Sie sich bitte an datenschutz at bos-deutschland.de.
-		</p>
-	</p>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/privacy.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/privacy.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/privacy.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/profil.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/profil.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/profil.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
- <head>
-  <title>Profil-Editor</title>
-  <meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
-  <script language="JavaScript" type="text/JavaScript" src="/static/profil.js"> </script>
-  <link href="/static/profil_style.css" rel="stylesheet" type="text/css" />
- </head>
- <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
-  <bos:save-profile>
-   <form name="form" method="POST">
-    <table width="740" border="0" cellpadding="0" cellspacing="0">
-     <tr>
-      <td height="50" colspan="3"><img src="../images/header_infosystem.gif" width="740" height="50"/></td>
-     </tr>
-     <tr> 
-      <td height="20" class="BreadCrumbs"> </td>
-      <td height="20" colspan="2" class="BreadCrumbs"> </td>
-     </tr>
-     <tr> 
-      <td class="Label" valign="top"> </td>
-      <td class="Input" valign="top"> </td>
-      <td class="Info" valign="top"> </td>
-     </tr>
-     <tr>
-      <td class="Label">Sponsor-ID</td>
-      <td class="Input">$(sponsor-id)</td>
-      <td class="Info">Vom System zugewiesen</td>
-     </tr>
-     <tr>
-      <td class="Label">Land</td>
-      <td class="Input">$(country)</td>
-      <td class="Info">Nicht änderbar</td>
-     </tr>
-     <tr>
-      <td class="Label">Name</td>
-      <td class="Input"><input type="text" name="name" size="23" value="$(name)"/></td>
-      <td class="Info">Für jeden sichtbar</td>
-     </tr>
-     <tr>
-      <td class="Label">Neues Kennwort</td>
-      <td class="Input"><input type="password" name="password" size="23"/></td>
-      <td class="Info">Bitte zwei mal eingeben</td>
-     </tr>
-     <tr>
-      <td class="Label">Kennwort-Wiederholung</td>
-      <td class="Input"><input type="password" name="password1" size="23"/></td>
-      <td class="Info"></td>
-     </tr>
-     <tr>
-      <td class="Label">Info-Text</td>
-      <td class="Input"><textarea class="Textarea" name="infotext" rows="3" cols="30">$(infotext)</textarea></td>
-      <td class="Info">Beliebiger Informationstext, für jeden sichtbar</td>
-     </tr>
-     <tr>
-      <td class="Label">Quadratmeter</td>
-      <td class="Input">Insgesamt $(numsqm) Quadratmeter gekauft<br />UTM-Koordinate: N$(sqm-x) E$(sqm-y)</td>
-      <td class="Info"></td>
-     </tr>
-     <tr>
-      <td class="Label">Aktionen</td>
-      <td class="Input">
-       <button name="action" type="submit" value="save" onclick="javascript:return formcheck();">Speichern</button>
-      </td>
-      <td class="Info">Ihre Profildaten werden mit den eingegeben Werten aktualisiert</td>
-     </tr>
-     <tr>
-      <td class="Label"></td>
-      <td class="Input">
-       <button name="anonymize" type="submit" value="anonymize" onclick="javascript:return anonymizecheck();">Profil anonymisieren</button>
-      </td>
-      <td class="Info">Ihre persönlichen Profildaten werden gelöscht</td>
-     </tr>
-     <tr>
-      <td class="Label"></td>
-      <td class="Input">
-       <button name="action" type="reset">Änderungen verwerfen</button>
-      </td>
-      <td class="Info">Alle durchgeführten Änderungen werden verworfen.</td>
-     </tr>
-     <bos:when-certificate>
-      <tr>
-       <td class="Label"></td>
-       <td class="Input"><button name="urkunde" type="button" onclick="javascript:return window_urkunde();">Urkunde zeigen</button></td>
-       <td class="Info">Urkunde als PDF ansehen / downloaden</td>
-      </tr>
-     </bos:when-certificate>
-<!-- not yet
-     <tr>
-      <td class="Label"></td>
-      <td class="Input">
-       <input type="text" name="numsqm" value="10" size="1"/>
-       <button name="action" type="submit" value="buy" onclick="javascript:return buycheck();">Quadratmeter kaufen</button>
-      </td>
-      <td class="Info">Weitere Quadratmeter mit WorldPay kaufen</td>
-     </tr>
--->
-     <tr>
-      <td class="Label" height="10"></td>
-      <td class="Input"></td>
-      <td class="Info"></td>
-     </tr>
-     <tr>
-      <td class="Label"></td>
-      <td class="Input">
-       <a class="Link" href="#" onclick="document.location.href = '/infosystem'">
-        <img src="/images/pfeil_back.gif" border="0"/>
-	Zurück
-       </a>
-      </td>
-      <td class="Info"></td>
-     </tr>
-     <tr>
-      <td class="Label" height="300"></td>
-      <td class="Input"></td>
-      <td class="Info"></td>
-     </tr>
-    </table>
-   </form>
-  </bos:save-profile>
- </body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/profil.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/profil.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/profil_setup.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/profil_setup.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/profil_setup.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="content">
-		<!-- content left-->
-		<div id="content_left">
-			<div id="textbox_left_form">
-				<table border="0" cellpadding="1" cellspacing="0">
-					<tr>
-						<td></td>
-						<td colspan="2">
-							<img src="/images/step5.gif" width="120" height="20" border="0" alt="" />
-						</td>
-					</tr>
-					<tr><td colspan="4" height="40"></td></tr>
-				</table>
-			</div>
-			<!-- footer -->
-			<div id="menue_footer">
-				<a href="javascript:window_extra('privacy')" class="footer">
-					Datenschutzinfo
-				</a>
-				l
-				<a href="javascript:window_extra('impressum')" class="footer">
-					Impressum
-				</a>
-			</div>
-			<!-- /footer -->
-		</div>
-		<!-- /content left-->
-		<!-- container content_main -->
-		<div id="content_main">
-			<div id="textbox_content_big" >
-				<form method="post" action="save-initial-profile" name="form" onsubmit="return check_profil_setup();">
-					<input type="hidden" name="sponsor-id" value="$(sponsor-id)" />
-					<table id="formTable" width="95%" border="0" cellspacing="0" cellpadding="0">
-						<tr>
-							<td colspan="3" height="10">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="25">Richten Sie jetzt Ihr Sponsoren-Profil ein:
-							</td>
-						</tr>
-						<tr>
-							<td height="20" width="40%">
-								<strong>Ihre Sponsoren-ID:</strong>
-							</td>
-							<td width="15">
-							</td>
-							<td>
-								$(sponsor-id)
-							</td>
-						</tr>
-						<tr>
-							<td height="30">
-								<strong> Kennwort:</strong>
-							</td>
-							<td>
-							</td>
-							<td>
-								<input type="password" name="password" value="" size="20" class="form_big" />
-							</td>
-						</tr>
-						<tr>
-							<td height="30">
-								<strong> Kennwort wiederholen:</strong>
-							</td>
-							<td>
-							</td>
-							<td>
-								<input type="password" name="password1" value="" size="20" class="form_big" />
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="20">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3">
-								Momentan führen wir Ihr Profil unter unten angegebenem Namen. Sie können diesen an
-								dieser Stelle auch ändern bzw. angeben, dass Sie anonym bleiben möchten.
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="8">
-							</td>
-						</tr>
-						<tr>
-				                         <td width="40%" height="20">
-							 	Name:
-							</td>
-				                        <td>
-							</td>
-				                        <td>
-								<input type="text" name="name" value="$(name)" size="20" class="form_big"
-									onclick="javascript:document.form.anonym.checked = false;"
-									onblur="javascript:if (this.value == '') { document.form.anonym.checked = true; }"/>
-								<br />
-								<input type="checkbox" name="anonym" value="1"
-									onclick="javascript:if (this.checked) { document.form.name.value = ''; }"/> anonym
-				                        </td>
-						</tr>
-						<tr>
-							<td colspan="3" height="15">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3">
-								<br />
-								Ihre E-Mail-Adresse wird <strong>nicht</strong> veröffentlicht, sondern lediglich für
-								interne Informationszwecke verwendet.
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="18">
-							</td>
-						</tr>
-						<tr>
-				                      	<td class="content_text" height="20">
-								E-Mail-Adresse:
-							</td>
-				                        <td>
-							</td>
-	                			        <td>
-								<input type="text" name="email" value="$(email)" size="33" class="form_big" />
-							</td>
-						</tr>
-						<tr>
-							<td height="12">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="10">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="1" bgcolor="#c0c0c0">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="15">
-							</td>
-						</tr>
-						<tr>
-				                        <td colspan="3" align="right">
-								<input type="submit" class="form_big" name="Button" value="speichern und zu den Quadratmetern" />
-						  	</td>
-						</tr>
-					</table>
-				 </form>
-			</div>
-		</div>
-		<div id="content_right">
-			<div id="helpbox">
-				<br /><br />
-				[<strong>Profil-Kennwort</strong>]<br />
-				Geben Sie Ihr eigenes Kennwort an. Sollten Sie dieses vergessen, dann finden Sie ein so genanntes Master-Kennwort auf Ihrer
-				Zahlungsbestätigung, die per E-Mail verschickt wurde.<br /><br /><br /><br /><br />
-				[<strong>Profil-Einrichtung</strong>]<br />
-				Legen Sie fest, unter welchem Namen "Ihr" m² angezeigt werden sollen.
-				<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
-		 	</div>
-		</div>
-	</div>
-</bknr:toplevel>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/de/profil_setup.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/profil_setup.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/profil_setup.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/quittung.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/quittung.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/quittung.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  suppress-xml-headers="1"
-  >
-	<head>
-		<base href="$(website-url)/de/quittung" />
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-             <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />-->
-		<title>REGENWALD für SAMBOJA LESTARI</title>
-	</head>
-	<body>
-		
-		<!-- header and menu_top -->
-		<div id="header">
-
-			<div id="menue_banner">
-				<a href="index">
-					<img src="../images/header_ganzneu.gif" border="0" />
-				</a>
-			</div>
-
-			<div id="menue_header_left">
-				BOS Deutschland e.V.
-			</div>
-
-		</div>
-		<!-- /header and menu_top -->
-		<!-- content 3teilig-->
-		<div id="content">
-			<div id="content_left"><!-- content left-->
-				<div id="textbox_left_form">		
-					<table border="0" cellpadding="1" cellspacing="0">
-						<tr>
-							<td></td>
-							<td colspan="2">
-								<img src="/images/step3.gif" width="120" height="20" border="0" alt="" />
-							</td>
-						</tr>
-						<tr><td colspan="4" height="40"></td></tr>
-						<tr>
-							<td> </td>
-							<td colspan="2"><span class="link_titlered">Herzlichen Dank</span><br /><br /></td>
-							<td></td>				
-						</tr>
-						<tr>
-							<td></td>
-							<td colspan="2">
-								für Ihre Unterstützung und das Vertrauen, das Sie BOS damit entgegen bringen.
-								<br /><br />
-								Die von Ihnen gesponserten m² sind in guten Händen.
-							</td>
-							<td></td>				
-						</tr>
-					</table>	                                                         
-				</div>	
-				<!-- footer -->	
-				<div id="menue_footer">	
-					<a href="javascript:window_extra('privacy')" class="footer">
-						Datenschutzinfo
-					</a>
-					l
-					<a href="javascript:window_extra('impressum')" class="footer">
-						Impressum
-					</a>
-				</div>
-				<!-- /footer -->	
-			</div>
-			<!-- /content left-->
-			<!-- container content_main -->
-			<div id="content_main">
-				<div id="textbox_content_big" >
-					<bos:process-payment>
-						<form method="post" action="generate-cert">
-							<input type="hidden" name="contract-id" value="$(cartId)" />
-							<input type="hidden" name="__sponsorid" value="$(sponsor-id)" />
-							<input type="hidden" name="__password" value="$(master-code)" />
-							<input type="hidden" name="email" value="$(email)" />
-							<table id="formTable" width="95%" border="0" cellspacing="0" cellpadding="0">
-								<tr>
-									<td colspan="3"><span class="headline">Ihre Zahlung war erfolgreich:</span></td>
-								</tr>
-								<tr>
-									<td colspan="3" height="140">
-										<bos:worldpay-receipt />
-									</td>							
-								</tr>
-								<tr>
-									<td colspan="3" height="10"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="1" bgcolor="#c0c0c0"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="10"> </td>
-								</tr>
-								
-								<tr>
-									<td colspan="3" height="15">Auf welchen Namen sollen wir Ihre Regenwald-Urkunde ausstellen? </td>
-								</tr>	
-								<tr>
-									<td height="30">Name:</td>
-									<td></td>
-									<td><input type="text" class="form_big" size="35" name="name" value="$(name)" /></td>
-								</tr>
-								<tr>
-									<td colspan="3" height="8">
-										<span class="help_text">
-											Wir übernehmen den Namen, der in diesem Eingabefeld angegeben wird.
-											Bitte korrigieren Sie bei Bedarf die angezeigte Eingabe.
-										</span> 
-									</td>
-								</tr>	
-								<tr>
-									<td colspan="3" height="10"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="1" bgcolor="#c0c0c0"> </td>
-								</tr>
-											
-								<tr>
-									<td height="12"></td>
-								</tr>
-								<tr>
-					                          	<td colspan="3" align="right">
-										<input type="submit" class="form_big" name="Button"
-											onclick="javascript:return confirm('Ist der Name korrekt angegeben?');"
-											value="speichern und weiter" />
-								  	</td>
-								</tr>
-							</table>
-						 </form>
-					</bos:process-payment>
-				</div>
-			</div>
-			<div id="content_right">
-				<div id="helpbox">		
-					<br /><br />
-					[<strong>Zahlungsbestätigung</strong>]
-					<br />
-					Diese Zahlungsbestätigung von WorldPay ist bereits per E-Mail unterwegs zu Ihnen. Sollten Sie wider
-					Erwarten keine Nachricht erhalten, wenden Sie sich bitte an
-					<br />
-						<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-						<a href="mailto:service at create-rainforest.org" class="more">
-							service at create-rainforest.org
-						</a>
-					<br /><br /><br />
-					
-					[<strong>Regenwald-Urkunde</strong>]
-					<br />
-					Schon ab 1 m² erhalten Sie eine
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="javascript:window_extra('certificat')" class="more">
-						Urkunde
-					</a>
-					als pdf-Download in Ihrem eigenen Sponsoren-Profil.
-					<br /><br /><br /><br /><br /><br /><br />			
-			 	</div>
-			</div>
-		</div>
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/quittung.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/quittung.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/quittung.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/ring-detail.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/ring-detail.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/ring-detail.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<head>
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-		<title>Ringschema</title>
-	</head>
-	<body>
-		<div id="content_extra">
-			<h1 class="ringschema">Ringschema</h1>
-			<img src="/images/ring_detail.jpg" />
-		</div>
-		<div style="padding:10px">
-			<img src="/images/pfeil_link_on.gif" width="10" height="9" border="0" alt="" />
-			<a href="javascript:window.close()" class="more">
-				Fenster schließen
-			</a>
-		</div>
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/ring-detail.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/ring-detail.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/save-initial-profile.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/save-initial-profile.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/save-initial-profile.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bos:save-profile
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-  <bknr:redirect-request target="index"/>
-</bos:save-profile>

Copied: trunk/projects/bos/payment-website/templates/de/save-initial-profile.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/save-initial-profile.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/sponsor_canceled.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/sponsor_canceled.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/sponsor_canceled.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  suppress-xml-headers="1"
-  >
-	<head>
-		<base href="$(website-url)/de/sponsor_canceled" />
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-             <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />-->
-		<title>REGENWALD für SAMBOJA LESTARI</title>
-	</head>
-	<body>
-		
-		<!-- header and menu_top -->
-		<div id="header">
-
-			<div id="menue_banner">
-				<a href="index">
-					<img src="../images/header_ganzneu.gif" border="0" />
-				</a>
-			</div>
-
-			<div id="menue_header_left">
-			BOS Deutschland e.V.
-			</div>
-			<div id="menue_header_main">
-				<div>l</div>
-				<div>
-					<a href="idea" class="menue"
-							title="Was genau passiert.">
-						Projekt
-					</a>
-				</div>
-				<div>l</div>
-				<div>
-					<a href="bestellung" class="menue"
-							title="Machen Sie mit!">
-						Spenden
-					</a>
-				</div>
-				<div>l</div>	
-				<div>
-					<a href="bos" class="menue"
-							title="BOS Foundation">
-						BOS
-					</a>
-				</div>
-				<div>l</div>	
-				<div>
-					<a href="javascript:window_infosys()" class="menue"
-							title="Satellitenkarte">
-						Satellitenkarte
-					</a>
-				</div>
-				<div>l</div>
-				<div>
-					<a href="contact" class="menue"
-							title="Kontakten Sie uns.">
-						Kontakt
-					</a>
-				</div>	
-				<div>l</div>		
-			</div>
-		</div>
-		<!-- /header and menu_top -->
-		<!-- content 3teilig-->
-		<div id="content">
-			<div id="content_left"><!-- content left-->
-				<div id="textbox_left_form">		
-				</div>	
-				<!-- footer -->	
-				<div id="menue_footer">	
-					<a href="javascript:window_extra('privacy')" class="footer">
-						Datenschutzinfo
-					</a>
-					l
-					<a href="javascript:window_extra('impressum')" class="footer">
-						Impressum
-					</a>
-				</div>
-				<!-- /footer -->	
-			</div>
-			<!-- /content left-->
-			<!-- container content_main -->
-			<div id="content_main">
-				<div id="textbox_content_big" >
-					<table id="formTable" width="95%" border="0" cellspacing="0" cellpadding="0">
-						<tr>
-							<td colspan="3"><span class="headline">Sie haben die Zahlung abgebrochen</span></td>
-						</tr>
-					</table>
-				</div>
-			</div>
-			<div id="content_right">
-				<div id="helpbox">		
-					<br /><br />
-					[<strong>Zahlung abgebrochen</strong>]
-			 	</div>
-			</div>
-		</div>
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/sponsor_canceled.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/sponsor_canceled.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/sponsor_canceled.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/toplevel.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/toplevel.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/toplevel.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<head>
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-             <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />-->
-		<title>$(title)</title>
-	</head>
-<body>
-
-	<!-- header and menu_top -->
-	<div id="header">
-
-		<div id="menue_banner">
-			<a href="index">
-				<img src="../images/header_ganzneu.gif" border="0" />
-			</a>
-		</div>
-
-		<div id="menue_header_left">
-		BOS Deutschland e.V.
-		</div>
-
-		<div id="menue_header_main">
-			<div>l</div>
-			<div>
-				<a href="idea" class="menue"
-						title="Was genau passiert.">
-					Projekt
-				</a>
-			</div>
-			<div>l</div>
-			<div>
-				<a href="bestellung" class="menue"
-						title="Machen Sie mit!">
-					Spenden
-				</a>
-			</div>
-			<div>l</div>	
-			<div>
-				<a href="bos" class="menue"
-						title="BOS Foundation">
-					BOS
-				</a>
-			</div>
-			<div>l</div>	
-			<div>
-				<a href="javascript:window_infosys()" class="menue"
-						title="Satellitenkarte">
-					Satellitenkarte
-				</a>
-			</div>
-			<div>l</div>
-			<div>
-				<a href="contact" class="menue"
-						title="Kontakten Sie uns.">
-					Kontakt
-				</a>
-			</div>	
-			<div>l</div>		
-		</div>
-	</div>
-	<!-- /header and menu_top -->
-
-	<!-- content 3teilig-->
-		<bknr:tag-body />
-	<!-- /content 3teilig-->
-
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/toplevel.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/toplevel.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/toplevel.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/toplevel_extra.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/toplevel_extra.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/toplevel_extra.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<head>
-		<bos:maybe-base href="$(base-url)" />
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-             <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />-->
-		<title>$(title)</title>
-	</head>
-	<body>
-		<div id="header_extra">
-		</div>
-		<div id="content_extra">
-			<bknr:tag-body />
-		</div>
-		<div style="padding:10px">
-			<img src="/images/pfeil_link_on.gif" width="10" height="9" border="0" alt="" />
-			<a href="javascript:window.close()" class="more">
-				Fenster schließen
-			</a>
-		</div>
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/toplevel_extra.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/toplevel_extra.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/toplevel_extra.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/toplevel_main.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/toplevel_main.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/toplevel_main.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<head>
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-             <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />-->
-		<title>$(title)</title>
-	</head>
-	<body>
-		<!-- header and menu_top -->
-		<div id="header">
-
-			<div id="menue_banner">
-				<a href="index">
-					<img src="../images/header_ganzneu.gif" border="0" />
-				</a>
-			</div>
-
-			<div id="menue_header_left">
-			BOS Deutschland e.V.
-			</div>
-			<div id="menue_header_main">
-				<div>l</div>
-				<div>
-					<a href="idea" class="menue"
-							title="Was genau passiert.">
-						Projekt
-					</a>
-				</div>
-				<div>l</div>
-				<div>
-					<a href="bestellung" class="menue"
-							title="Machen Sie mit!">
-						Spenden
-					</a>
-				</div>
-				<div>l</div>	
-				<div>
-					<a href="bos" class="menue"
-							title="BOS Foundation">
-						BOS
-					</a>
-				</div>
-				<div>l</div>	
-				<div>
-					<a href="javascript:window_infosys()" class="menue"
-							title="Satellitenkarte">
-						Satellitenkarte
-					</a>
-				</div>
-				<div>l</div>
-				<div>
-					<a href="contact" class="menue"
-							title="Kontakten Sie uns.">
-						Kontakt
-					</a>
-				</div>	
-				<div>l</div>		
-			</div>
-			<div id="menue_header_right" align="right">
-				<select name="language" style="width:125px;"
-						onchange="jumpMenu('parent', this, 0)">
- 					<bos:language-options />
-				</select>
-			</div>
-		</div>
-		<!-- /header and menu_top -->
-	
-		<!-- content 3teilig-->
-		<div id="content">
-			<div id="content_left">
-			<!-- content left-->
-				<div id="textbox_left_top">
-					<table border="0" cellpadding="0" cellspacing="0">
-						<tr>
-							<td colspan="4" height="10">
-							</td>
-						</tr>
-						<tr>
-							<td width="6"> 
-							</td>
-							<td colspan="2">
-								<strong>Schaffen Sie Regenwald!</strong>
-								<br /><br />
-							</td>
-							<td>
-							</td>				
-						</tr>
-						<tr>
-							<td>
-							</td>
-							<td colspan="2" >
-								<img src="/images/pfeil_link_on.gif" width="10" height="9" border="0" alt="" />
-								<a href="bestellung" class="content_black">
-									Spenden Sie!
-								</a>					
-							</td>
-							<td> 
-							</td>				
-						</tr>
-						<tr><td colspan="3" height="5"></td></tr>
-						<tr>
-							<td colspan="4" valign="bottom">
-								<a href="bestellung" class="content_black">
-									<img src="/images/spenden.jpg" width="150" height="71" border="0" alt="" />
-								</a>
-							</td>			
-						</tr>
-						<tr><td colspan="3" height="15"></td></tr>
-					</table>
-				</div>			
-				<div id="textbox_left_down">
-					<table border="0" cellpadding="0" cellspacing="0">
-						<tr><td colspan="4" height="6"></td></tr>
-						<tr>
-							<td width="6"> </td>
-							<td colspan="2">
-								<strong>Satellitenkarte</strong>
-								<br /></td>
-							<td></td>				
-						</tr>
-						<tr><td colspan="3" height="5"></td></tr>
-						<tr>
-							<td></td>
-							<td colspan="2">
-								<img src="/images/pfeil_link_on.gif" width="10" height="9" border="0" alt="" />
-								<a href="javascript:window_infosys()"
-										class="content_black">
-									Es dreht sich um m².
-								</a>
-							</td>
-							<td></td>				
-						</tr>		
-						<tr>
-							<td colspan="3" height="88">
-							<a href="javascript:window_infosys()">
-								<img src="/images/trans.gif" width="150" height="108" border="0" alt="" />
-							</a>
-							</td>
-						</tr>
-					</table>
-				</div>
-				<!-- footer -->	
-				<div id="menue_footer">	
-					<a href="javascript:window_extra('privacy')" class="footer">
-						Datenschutzinfo
-					</a>
-					l
-					<a href="javascript:window_extra('impressum')" class="footer">
-						Impressum
-					</a>
-				</div>
-				<!-- /footer -->	
-			</div>
-			<!-- /content left-->
-				<bknr:tag-body />
-			<!-- /content 3teilig-->
-		</div>
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/toplevel_main.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/toplevel_main.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/toplevel_main.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Copied: trunk/projects/bos/payment-website/templates/de/toplevel_news.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/toplevel_news.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/ueberweisung.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/ueberweisung.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/ueberweisung.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<div id="content">
-		<div id="content_left"><!-- content left-->
-			<div id="textbox_left_form">		
-				<table border="0" cellpadding="1" cellspacing="0">
-					<tr>
-						<td></td>
-						<td colspan="2">
-							<img src="/images/step3.gif" width="120" height="20" border="0" alt="" />
-						</td>
-					</tr>
-					<tr><td colspan="4" height="40"></td></tr>
-				</table>			                                             
-			</div>	
-			<!-- footer -->	
-			<div id="menue_footer">	
-				<a href="javascript:window_extra('privacy')" class="footer">
-					Datenschutzinfo
-				</a>
-				l
-				<a href="javascript:window_extra('impressum')" class="footer">
-					Impressum
-				</a>
-			</div>
-			<!-- /footer -->	
-		</div>
-		<!-- /content left-->
-		<!-- container content_main -->
-		<div id="content_main">
-			<div id="textbox_content_big" >
-				<form action="mail-transfer" method="post"
-						enctype="application/x-www-form-urlencoded"
-						name="mailtransfer"
-						id="mailtransfer"
-						onsubmit="YY_checkform('mailtransfer','vorname','#q','0','Bitte das Feld \'Vorname\' ausfuellen.','name','#q','0','Bitte das Feld \'Name\' ausfuellen.','strasse','#q','0','Bitte das Feld \'Strasse\' ausfuellen.','plz','#q','0','Bitte das Feld \'PLZ\' ausfuellen.','ort','#q','0','Bitte das Feld \'Ort\' ausfuellen.');return document.MM_returnValue">
-					<input type="hidden" name="contract-id" value="$(contract-id)" />
-					<input type="hidden" name="donationcert-yearly" value="$(donationcert-yearly)" />
-					<table id="formTable" width="95%" border="0" cellspacing="0" cellpadding="0">
-						<tr>
-							<td colspan="3"><span class="headline">Ich möchte meine Spende überweisen.</span></td>
-						</tr>
-						<tr>
-							<td colspan="3" height="7"> </td>
-						</tr>
-						<tr>
-							<td colspan="3">
-Ich habe mich dazu entschieden einen Betrag von $(amount) Euro auf das Spendenkonto "Samboja Lestari" von BOS Deutschland e.V. zu überweisen.
-								<table border="0">
-									<tr><td>Kontonummer:</td><td>32 10 100</td></tr>
-									<tr><td>Bank:</td><td>Bank für Sozialwirtschaft</td></tr>
-									<tr><td>BLZ:</td><td>100 205 00</td></tr>
-								</table>
-								<strong>Bitte unbedingt den Verwendungszweck "SL ID $(contract-id)" auf dem Ãœberweisungsformular angeben!</strong>
-								<br /> <br />
-								Meine Überweisung muss ich bei meiner Bank eigenständig veranlassen!
-							</td>
-						</tr>						
-						<tr>
-							<td colspan="3" height="7"> </td>
-						</tr>
-						<tr>
-							<td colspan="3" height="7"> </td>
-						</tr>
-						<tr>
-							<td height="10">Vorname:</td>
-							<td width="10"></td>
-							<td><input name="vorname" type="text" size="25" maxlength="30" /></td>
-						</tr>
-						<tr>
-							<td height="10">Name:</td>
-							<td width="10"></td>
-							<td><input name="name" type="text" size="25" maxlength="30" /></td>
-						</tr>
-						<tr>
-							<td height="10">Straße/Nr.:</td>
-							<td width="10"></td>
-							<td><input name="strasse" type="text" size="25" maxlength="30" /></td>
-						</tr>
-						<tr>
-							<td height="10">PLZ/Ort</td>
-							<td width="10"></td>
-							<td>
-								<input name="plz" type="text" size="5" maxlength="5" />
-								<input name="ort" type="text" size="13" maxlength="30" />
-							</td>
-						</tr>
-						<tr>
-							<td height="10">E-Mail:</td>
-							<td width="10"></td>
-							<td><input name="email" type="text" size="25" maxlength="30" /></td>
-						</tr>
-						<tr>
-							<td height="10">Telefon:</td>
-							<td width="10"></td>
-							<td><input name="telefon" type="text" size="25" maxlength="30" /></td>
-						</tr>							
-						<tr>
-							<td colspan="3" height="5"> </td>
-						</tr>
-						<tr>
-							<td colspan="3">
-								<bos:urkunde-per-post contract-id="$(contract-id)"
-									min-amount="30"
-									message="Ich möchte meine Regenwald-Urkunde per Post erhalten" />
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="20"> </td>
-						</tr>
-						<tr>
-			                          	<td align="right" colspan="3">
-								<input type="submit" class="form_big" name="action" value="Angaben an BOS mailen" />
-							</td>
-						</tr>
-					</table>
-				</form>
-			</div>
-		</div>
-		<div id="content_right">
-			<div id="helpbox">		
-				<strong>[Persönliche Daten]</strong>
-				<br />
-Wir reservieren gerne die von Ihnen gewünschten m². Für die Zusendung
-der entsprechenden Informationen (Regenwaldurkunde, Sponsorenprofil,
-Geokoordinaten, Spendenbescheinigung) benötigen wir unbedingt die
-Angabe Ihrer Daten. Nach erfolgter Ãœberweisung erhalten Sie diese
-Informationen schriftlich oder per E-Mail von uns.
-				<br /><br /><br />
-				<strong>[Dieses Formular]</strong>
-				<br />
-				Bitte senden Sie dieses Formular per E-Mail direkt an uns. Sie können es auch
-				<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-				<a href="javascript:window.print();" class="more">
-					ausdrucken
-				</a>
-				und per Fax oder Post an unsere
-				Kontaktadresse schicken:
-				<br /><br />
-				BOS Deutschland e.V.
-				<br />
-				Schöneberger Ufer 69
-				<br />
-				10785 Berlin
-				<br /><br />
-				Fax: (030) 2636 7815
-		    	</div>		
-		</div>
-	</div>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/ueberweisung.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/ueberweisung.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/ueberweisung.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/versand_geschenk.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/versand_geschenk.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/versand_geschenk.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  suppress-xml-headers="1"
-  >
-	<head>
-		<base href="$(website-url)/de/versand_info" />
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-             <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />-->
-		<title>REGENWALD für SAMBOJA LESTARI</title>
-	</head>
-	<body>
-	
-		<!-- header and menu_top -->
-		<div id="header">
-			<div id="menue_banner">
-				<img src="../images/header_ganzneu.gif" border="0" />
-			</div>
-
-			<div id="menue_header_left">
-				BOS Deutschland e.V.
-			</div>
-		</div>
-		<!-- /header and menu_top -->
-		<!-- content 3teilig-->
-		<div id="content">
-			<div id="content_left"><!-- content left-->
-				<div id="textbox_left_form">		
-					<table border="0" cellpadding="1" cellspacing="0">
-						<tr>
-							<td></td>
-							<td colspan="2">
-								<img src="/images/step3.gif" width="120" height="20" border="0" alt="" />
-							</td>
-						</tr>
-						<tr><td colspan="4" height="40"></td></tr>
-						<tr>
-							<td> </td>
-							<td colspan="2"><span class="link_titlered">Herzlichen Dank</span><br /><br /></td>
-							<td> </td>				
-						</tr>
-						<tr>
-							<td></td>
-							<td colspan="2"> für Ihre Unterstützung und das Vertrauen, das Sie BOS damit entgegen bringen. <br /><br />Die von Ihnen gesponserten m² sind in guten Händen.
-							</td>
-							<td></td>				
-						</tr>
-					</table>			                                             
-				</div>	
-				<!-- footer -->	
-				<div id="menue_footer">	
-					<a href="javascript:window_extra('privacy')" class="footer">
-						Datenschutzinfo
-					</a>
-					l
-					<a href="javascript:window_extra('impressum')" class="footer">
-						Impressum
-					</a>
-				</div>
-				<!-- /footer -->	
-			</div>
-			<!-- /content left-->
-			<!-- container content_main -->
-			<bos:process-payment>
-				<div id="content_main">
-					<div id="textbox_content_big" >
-						<form name="formular" method="post" action="versand_quittung">
-							<input type="hidden" name="sponsor-id" value="$(sponsor-id)" />
-							<input type="hidden" name="contract-id" value="$(cartId)" />
-							<input type="hidden" name="email" value="$(email)" />
-							<input type="hidden" name="gift" value="$(MC_gift)" />
-							<input type="hidden" name="next-step-name" value="fertig" />
-							<table id="formTable" width="95%" border="0" cellspacing="0" cellpadding="0">
-								<tr>
-									<td colspan="3"><span class="headline">Ihre Zahlung war erfolgreich:</span></td>
-								</tr>
-								<tr>
-									<td colspan="3" height="140">
-										<bos:worldpay-receipt />
-									</td>							
-								</tr>
-								<tr>
-									<td colspan="3" height="8"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="1" bgcolor="#c0c0c0"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="8"> </td>
-								</tr>		
-								<tr>
-									<td colspan="3">
-										Bitte geben Sie den Namen des Beschenkten für die Urkunde ein:
-									</td>
-								</tr>	
-								<tr>
-									<td height="30">
-										Name:
-									</td>
-									<td></td>
-									<td>
-										<input type="text" class="form_big" size="35" name="name" value="" />
-									</td>
-								</tr>
-								<tr>
-									<td colspan="3" height="6"> </td>
-								</tr>	
-								<tr>
-									<td colspan="3">
-										Bitte geben Sie die Versandadresse für die Regenwaldurkunde ein.
-									</td>
-								</tr>
-								<tr>
-									<td colspan="3" height="10"> </td>
-								</tr>
-								<tr>
-									<td>Versandadresse<br />für die Urkunde:<br /><br /><br /></td>
-									<td></td>
-									<td>
-<!-- left-aligned in order to aid formatting -->
-<textarea cols="24" rows="3" name="address">$(name)
-$(address)
-$(postcode)
-$(country)</textarea>
-									</td>
-								</tr>
-								<tr>
-									<td colspan="3" height="10"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="1" bgcolor="#c0c0c0"> </td>
-								</tr>									
-								<tr>
-									<td height="12"></td>
-								</tr>
-								<tr>
-					                  	<td colspan="3" align="right">
-									<input type="submit" class="form_big" name="Button"
-										onclick="return check_versand_info();"
-										value="speichern und weiter" />
-								  	</td>
-								</tr>
-							</table>
-						 </form>
-					</div>
-				</div>
-			</bos:process-payment>
-			<div id="content_right">
-				<div id="helpbox">		
-					<br /><br />
-					[<strong>Zahlungsbestätigung</strong>]<br />
-					Diese Zahlungsbestätigung von WorldPay ist bereits per E-Mail unterwegs zu Ihnen. Sollten Sie wider Erwarten keine
-					Nachricht erhalten, wenden Sie sich bitte an
-					<br />
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="mailto:service at create-rainforest.org" class="more">
-						service at create-rainforest.org
-					</a>
-					<br /><br /><br /><br /><br /><br /><br /><br /><br />
-					[<strong>Regenwald-Urkunde</strong>]<br />
-					Sie oder der Beschenkte erhalten auf dem Postweg eine attraktive
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="javascript:window_extra('certificat')" class="more">
-						Urkunde
-					</a>
-					von uns. Sollte diese wider Erwarten nicht innerhalb der nächsten zwei Wochen eingetroffen sein, wenden Sie sich bitte an
-					<br />
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="mailto:service at create-rainforest.org" class="more">
-						service at create-rainforest.org
-					</a>
-					<br /><br /><br /><br /><br /><br />			
-			 	</div>			
-			</div>
-		</div>
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/versand_geschenk.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/versand_geschenk.xml)

Deleted: trunk/projects/bos/payment-website/templates/de/versand_info.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/versand_info.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/versand_info.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,187 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  suppress-xml-headers="1"
-  >
-	<head>
-		<base href="$(website-url)/de/versand_info" />
-		<link rel="stylesheet" href="/static/toplevel_style.css" />
-		<link rel="stylesheet" href="/static/content_style.css" />
-		<script src="/static/bos.js" type="text/javascript"><!-- x -->	
-		</script> 
-             <!--<meta http-equiv="content-type" content="text/html; charset=UTF-8" />-->
-		<title>REGENWALD für SAMBOJA LESTARI</title>
-	</head>
-	<body>
-	
-		<!-- header and menu_top -->
-		<div id="header">
-
-			<div id="menue_banner">
-				<img src="../images/header_ganzneu.gif" border="0" />
-			</div>
-
-			<div id="menue_header_left">
-				BOS Deutschland e.V.
-			</div>
-
-		</div>
-		<!-- /header and menu_top -->
-		<!-- content 3teilig-->
-		<div id="content">
-			<div id="content_left"><!-- content left-->
-				<div id="textbox_left_form">		
-					<table border="0" cellpadding="1" cellspacing="0">
-						<tr>
-							<td></td>
-							<td colspan="2">
-								<img src="/images/step3.gif" width="120" height="20" border="0" alt="" />
-							</td>
-						</tr>
-						<tr><td colspan="4" height="40"></td></tr>
-						<tr>
-							<td> </td>
-							<td colspan="2"><span class="link_titlered">Herzlichen Dank</span><br /><br /></td>
-							<td> </td>				
-						</tr>
-						<tr>
-							<td></td>
-							<td colspan="2"> für Ihre Unterstützung und das Vertrauen, das Sie BOS damit entgegen bringen. <br /><br />Die von Ihnen gesponserten m² sind in guten Händen.
-							</td>
-							<td></td>				
-						</tr>
-					</table>			                                             
-				</div>	
-				<!-- footer -->	
-				<div id="menue_footer">	
-					<a href="javascript:window_extra('privacy')" class="footer">
-						Datenschutzinfo
-					</a>
-					l
-					<a href="javascript:window_extra('impressum')" class="footer">
-						Impressum
-					</a>
-				</div>
-				<!-- /footer -->	
-			</div>
-			<!-- /content left-->
-			<!-- container content_main -->
-			<bos:process-payment>
-				<div id="content_main">
-					<div id="textbox_content_big" >
-						<form name="formular" method="post" action="versand_quittung">
-							<input type="hidden" name="sponsor-id" value="$(sponsor-id)" />
-							<input type="hidden" name="master-code" value="$(master-code)" />
-							<input type="hidden" name="contract-id" value="$(cartId)" />
-							<input type="hidden" name="email" value="$(email)" />
-							<input type="hidden" name="next-step-name" value="weiter" />
-							<table id="formTable" width="95%" border="0" cellspacing="0" cellpadding="0">
-								<tr>
-									<td colspan="3"><span class="headline">Ihre Zahlung war erfolgreich:</span></td>
-								</tr>
-								<tr>
-									<td colspan="3" height="140">
-										<bos:worldpay-receipt />
-									</td>							
-								</tr>
-								<tr>
-									<td colspan="3" height="8"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="1" bgcolor="#c0c0c0"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="8"> </td>
-								</tr>		
-								<tr>
-									<td colspan="3">
-										Ist das der Name, der auf der Regenwald-Urkunde als
-										Sponsor eingetragen werden soll?
-									</td>
-								</tr>	
-								<tr>
-									<td height="30">
-										Name:
-									</td>
-									<td></td>
-									<td>
-										<input type="text" class="form_big" size="35" name="name" value="$(name)" />
-									</td>
-								</tr>
-								<tr>
-									<td colspan="3" height="6"> </td>
-								</tr>	
-								<tr>
-									<td colspan="3">
-										Bitte überprüfen bzw. korrigieren Sie die angegebene Adresse für den Versand
-										Ihrer Regenwald-Urkunde:
-									</td>
-								</tr>
-								<tr>
-									<td colspan="3" height="10"> </td>
-								</tr>
-								<tr>
-									<td>Versandadresse<br />für die Urkunde:<br /><br /><br /></td>
-									<td></td>
-									<td>
-<!-- left-aligned in order to aid formatting -->
-<textarea cols="24" rows="3" name="address">$(name)
-$(address)
-$(country)</textarea>
-									</td>
-								</tr>
-								<tr>
-									<td colspan="3" height="10"> </td>
-								</tr>
-								<tr>
-									<td colspan="3" height="1" bgcolor="#c0c0c0"> </td>
-								</tr>									
-								<tr>
-									<td height="12"></td>
-								</tr>
-								<tr>
-					                  	<td colspan="3" align="right">
-									<input type="submit" class="form_big" name="Button"
-										onclick="return check_versand_info();"
-										value="speichern und weiter" />
-								  	</td>
-								</tr>
-							</table>
-						 </form>
-					</div>
-				</div>
-			</bos:process-payment>
-			<div id="content_right">
-				<div id="helpbox">		
-					<br /><br />
-					[<strong>Zahlungsbestätigung</strong>]<br />
-					Diese Zahlungsbestätigung von WorldPay ist bereits per E-Mail unterwegs zu Ihnen. Sollten Sie wider Erwarten keine
-					Nachricht erhalten, wenden Sie sich bitte an
-					<br />
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="mailto:service at create-rainforest.org" class="more">
-						service at create-rainforest.org
-					</a>
-					<br /><br /><br /><br /><br /><br /><br /><br /><br />
-					[<strong>Regenwald-Urkunde</strong>]<br />
-					Sie oder der Beschenkte erhalten auf dem Postweg eine attraktive
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="javascript:window_extra('certificat')" class="more">
-						Urkunde
-					</a>
-					von uns. Sollte diese wider Erwarten nicht innerhalb der nächsten zwei Wochen eingetroffen sein, wenden Sie sich bitte an
-					<br />
-					<img src="/images/pfeil_link_on.gif" width="10" height="9" alt="" />
-					<a href="mailto:service at create-rainforest.org" class="more">
-						service at create-rainforest.org
-					</a>
-					<br /><br /><br /><br /><br /><br />			
-			 	</div>			
-			</div>
-		</div>
-	</body>
-</html>

Copied: trunk/projects/bos/payment-website/templates/de/versand_info.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/versand_info.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/versand_info.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/versand_quittung.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/versand_quittung.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/versand_quittung.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  title="REGENWALD für SAMBOJA LESTARI"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<!-- content 3teilig-->
-	<div id="content">
-		<!-- content left-->
-		<div id="content_left">
-			<div id="textbox_left_form">
-				<table border="0" cellpadding="1" cellspacing="0">
-					<tr>
-						<td></td>
-						<td colspan="2">
-							<img src="/images/step4.gif" width="120" height="20" border="0" alt="" />
-						</td>
-					</tr>
-					<tr><td colspan="4" height="40"></td></tr>
-				</table>
-			</div>
-			<!-- footer -->
-			<div id="menue_footer">
-				<a href="javascript:window_extra('privacy')" class="footer">
-					Datenschutzinfo
-				</a>
-				l
-				<a href="javascript:window_extra('impressum')" class="footer">
-					Impressum
-				</a>
-			<!-- /footer -->
-			</div>
-		<!-- /content left-->
-		</div>
-		<!-- container content_main -->
-		<div id="content_main">
-			<div id="textbox_content_big" >
-				<form method="post" action="generate-cert">
-					<input type="hidden" name="sponsor-id" value="$(sponsor-id)" />
-					<input type="hidden" name="__sponsorid" value="$(sponsor-id)" />
-					<input type="hidden" name="__password" value="$(master-code)" />
-					<input type="hidden" name="contract-id" value="$(contract-id)" />
-					<input type="hidden" name="name" value="$(name)" />
-					<input type="hidden" name="address" value="$(address)" />
-					<input type="hidden" name="email" value="$(email)" />
-					<input type="hidden" name="gift" value="$(gift)" />
-					<table id="formTable" width="95%" border="0" cellspacing="0" cellpadding="0">
-						<tr>
-							<td colspan="3">
-								Wir werden Ihre Regenwald-Urkunde auf den folgenden Namen ausstellen und diese an
-								die unten angegebene Adresse versenden:
-								<br /><br /><br />
-								Name für Regenwald-Urkunde: $(name)
-								<br /><br />
-								Versandadresse für Urkunde: <br />
-<pre>
-$(address)
-$(postcode)
-$(country)
-</pre>
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="10">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3">
-								<span class="help_text">
-									Überprüfen Sie bitte die Richtigkeit der Angaben.
-								</span>
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="20">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="1" bgcolor="#c0c0c0">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="10">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="40">
-								Mit dieser Zahlung wurde ein neues Sponsoren-Profil mit der folgenden Sponsoren-ID angelegt:
-							</td>
-						</tr>
-						<tr>
-							<td height="20" width="40%">
-								<strong>Ihre Sponsoren-ID:</strong>
-							</td>
-							<td width="15">
-							</td>
-							<td>$(sponsor-id)
-							</td>
-						</tr>
-						<!--<tr>
-							<td height="20">   <strong> Ihr Kennwort:</strong></td>
-							<td></td>
-							<td>$(sponsor-password)</td>
-						</tr>-->
-						<tr>
-							<td colspan="3" height="20">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="1" bgcolor="#c0c0c0">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" height="10">
-							</td>
-						</tr>
-						<tr>
-							<td height="12">
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3" align="right">
-								<input class="form_big" type="button"
-										value="zurück"
-										onclick="javascript:history.back()"
-										id="back" name="back" />
-								<input type="submit" class="form_big" name="Button" value="$(next-step-name)" />
-						  	</td>
-						</tr>
-					</table>
-				</form>
-			</div>
-		</div>
-		<div id="content_right">
-			<div id="helpbox">
-				<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
-				[<strong>Sponsoren-ID</strong>]<br />
-				Mit Hilfe des Sponsoren-Profils können Sie Ihre gesponserten m² jederzeit wieder finden.
-				Diese ID dient der einwandfreien Zuordnung der m².
-				Besucher dieser Internetseite dürfen in alle m² und deren persönliche Profile einblicken.
-				Wenn Sie anonym bleiben wollen, können Sie dieses in Ihrem Profil mit Kennwortzugang veranlassen.
-				<br /><br /><br /><br /><br /><br />
-		 	</div>
-		</div>
-	</div>
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/versand_quittung.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/versand_quittung.xml)


Property changes on: trunk/projects/bos/payment-website/templates/de/versand_quittung.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Deleted: trunk/projects/bos/payment-website/templates/de/verschenken.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/de/verschenken.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/de/verschenken.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<bknr:toplevel
-  template="toplevel_extra"
-  title="REGENWALD für SAMBOJA LESTARI - Verschenken"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:bos="http://headcraft.de/bos"
-  >
-	<p class="text_content">
-
-		<p>Suchen Sie ein sinnvolles Geschenk?</p>
-
-		<p><b>Verschenken Sie Quadratmeter wiederentstehenden Regenwaldes!</b></p>
-
-<p>
-Der/Die Beschenkte erhält eine attraktive Urkunde und persönliche
-Zugangscodes, um "seine/ihre" Quadratmeter in Borneo leicht orten zu
-können. Zudem kann er/sie den Quadratmetern einen Grußtext anhängen,
-der für jeden Besucher einsehbar ist.
-</p>
-<p>
-Auch Sie erhalten die gleichen Zugangscodes und können z.B. einen
-Geburtstagsgruß "auf" den verschenkten Quadratmetern
-hinterlassen.
-</p>
-<p>
-Setzen Sie das Häckchen und fahren Sie wie gewünscht fort. 
-</p>
-<p>
-Unmittelbar nach erfolgter Zahlung (wenige Sekunden später) werden Sie
-nach Namen und Versandadresse der zu Beschenkenden Person gefragt.
-</p>
-<p> 
-Der Geschenkservice ist aus administrativen Gründen leider nur bei Online-Spenden ab 30 Euro möglich.
-</p>
-	</p>					
-</bknr:toplevel>

Copied: trunk/projects/bos/payment-website/templates/de/verschenken.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/de/verschenken.xml)

Copied: trunk/projects/bos/payment-website/templates/dk (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/dk)

Copied: trunk/projects/bos/payment-website/templates/en (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/en)

Copied: trunk/projects/bos/payment-website/templates/login.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/login.xml)

Deleted: trunk/projects/bos/payment-website/templates/user-error.bknr
===================================================================
--- trunk/projects/bos/payment-website/templates/user-error.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/payment-website/templates/user-error.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:lisp-ecoop05="http://lisp-ecoop05.bknr.net"
-  xmlns:menu="http://bknr.net/menu"
-  >
-Your request could not be processed because an error occured:
-<pre>
-$(error-message)
-</pre>
-</html>
\ No newline at end of file

Copied: trunk/projects/bos/payment-website/templates/user-error.xml (from rev 2044, branches/xml-class-rework/projects/bos/payment-website/templates/user-error.xml)


Property changes on: trunk/projects/bos/payment-website/templates/user-error.xml
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Modified: trunk/projects/bos/screenrc-sample
===================================================================
--- trunk/projects/bos/screenrc-sample	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/screenrc-sample	2006-10-24 21:07:42 UTC (rev 2045)
@@ -10,7 +10,7 @@
 msgminwait 0
 msgwait 0
 
-chdir /home/bknr/bos
+chdir bknr-svn/projects/bos
 
 screen -t webserver lisp -core bos.core
 #logfile screen.log

Copied: trunk/projects/bos/statistics (from rev 2044, branches/xml-class-rework/projects/bos/statistics)


Property changes on: trunk/projects/bos/statistics
___________________________________________________________________
Name: svn:ignore
   + all-contracts.xsl
contracts-by-week.xsl
contracts-by-week.xml
*.svg


Copied: trunk/projects/bos/tools (from rev 2044, branches/xml-class-rework/projects/bos/tools)

Modified: trunk/projects/bos/web/web.lisp
===================================================================
--- trunk/projects/bos/web/web.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/web/web.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -9,18 +9,33 @@
 
 (defvar *webserver* nil)
 
-(defun reinit (&key (port 8080) (listeners 1) (vhosts '("localhost")) website-directory website-url)
+(defvar *port*)
+(defvar *listeners*)
+(defvar *vhosts*)
+(defvar *website-directory*)
+(defvar *website-url*)
+
+(defun init (&key (port 8080) (listeners 1) (vhosts '("localhost")) website-directory website-url)
+  (setf *port* port)
+  (setf *listeners* listeners)
+  (setf *vhosts* vhosts)
+  (setf *website-url* website-url)
+  (setf *website-directory* website-directory)
+  (unless *website-directory*
+    (error ":website-directory not specified"))
+  (reinit))
+
+(defun reinit (&key debug)
   (format t "~&; Publishing BOS handlers.~%")
-  (cond 
-    (website-directory)
-    ((probe-file *default-wd*)
-     (setf website-directory *default-wd*))
-    (t
-     (error ":website-directory not specified")))
   (unpublish :all t)
-  (worldpay-test::publish-worldpay-test :website-directory website-directory
-					:vhosts vhosts
-					:website-url website-url)
-  (format t "~&; Starting aserve.~%")
+  (worldpay-test::publish-worldpay-test :website-directory *website-directory*
+					:vhosts *vhosts*
+					:website-url *website-url*)
+  (format t "~&; Starting aserve~@[ in debug mode~].~%" debug)
   (force-output)
-  (setq *webserver* (net.aserve:start :port port :listeners listeners)))
+  (setq *webserver*
+	(if debug
+	    (progn (net.aserve::debug-on :notrap)
+		   (net.aserve:start :port *port* :listeners 0))
+	    (progn (net.aserve::debug-off :all)
+		   (net.aserve:start :port *port* :listeners *listeners*)))))

Modified: trunk/projects/bos/worldpay-test/allocation-area-handlers.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/allocation-area-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/allocation-area-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -19,13 +19,13 @@
       (loop for allocation-area in (all-allocation-areas)
 	    do (html
 		(:tr
-		 (:td (cmslink (format nil "/allocation-area/~D" (store-object-id allocation-area))
+		 (:td (cmslink (format nil "allocation-area/~D" (store-object-id allocation-area))
 			(:princ-safe (store-object-id allocation-area))))
 		 (:td (if (allocation-area-active-p allocation-area) (html "yes") (html "no")))
 		 (:td (:princ-safe (allocation-area-total-m2s allocation-area)))
 		 (:td (:princ-safe (allocation-area-free-m2s allocation-area)))
 		 (:td (:princ-safe (round (allocation-area-percent-used allocation-area))) "%")))))
-     (:p (cmslink "/create-allocation-area" "Create new allocation area")))))
+     (:p (cmslink "create-allocation-area" "Create new allocation area")))))
 
 (defmethod handle-object-form ((handler allocation-area-handler) action allocation-area req)
   (with-bos-cms-page (req :title "Allocation Area")
@@ -115,18 +115,14 @@
 					  (t
 					   90))
 		       for source-x = (if (< tile-x left) (- 90 copy-width) 0)
-		       do (with-store-image (tile-image (image-tile-image (get-map-tile x y)))
-			    (cl-gd:copy-image tile-image
-					      cl-gd:*default-image*
-					      source-x source-y
-					      dest-x dest-y
-					      copy-width copy-height))
+		       do (cl-gd:copy-image (image-tile-image (get-map-tile x y))
+					    cl-gd:*default-image*
+					    source-x source-y
+					    dest-x dest-y
+					    copy-width copy-height)
 		       do (incf dest-x copy-width))
 	      do (incf dest-y copy-height))
 	(cl-gd:draw-polygon vertices :color (elt colors 1))
-	#+(or)
-	(draw-contracts cl-gd:*default-image* left top width height colors
-			(allocation-area-contracts allocation-area))
 	(emit-image-to-browser req cl-gd:*default-image* :png)))))
 
 (defclass create-allocation-area-handler (admin-only-handler form-handler)
@@ -158,8 +154,8 @@
 	 ((:form :method "POST" :enctype "multipart/form-data"))
 	 ((:table :border "0")
 	  (:tr ((:td :colspan "2")
-		(:h2 "Create from Adobe Illustrator path")))
-	  (:tr (:td "File: ") (:td ((:input :type "file" :name "ai-file" :value "*.ai"))))
+		(:h2 "Create from list of UTM coordinates")))
+	  (:tr (:td "File: ") (:td ((:input :type "file" :name "text-file" :value "*.txt"))))
 	  (:tr (:td (submit-button "upload" "upload")))
 	  (:tr ((:td :colspan "2")
 		(:h2 "Create by choosing rectangular area")))
@@ -176,42 +172,35 @@
 	      req)))
 
 (defmethod handle-form ((handler create-allocation-area-handler) (action (eql :upload)) req)
-  (let ((uploaded-ai-file (cdr (find "ai-file" (request-uploaded-files req) :test #'equal :key #'car))))
+  (let ((uploaded-text-file (cdr (find "text-file" (request-uploaded-files req) :test #'equal :key #'car))))
     (cond
-      ((not uploaded-ai-file)
-       (with-bos-cms-page (req :title "No Illustrator file uploaded")
+      ((not uploaded-text-file)
+       (with-bos-cms-page (req :title "No Text file uploaded")
 	 (:h2 "File not uploaded")
-	 (:p "Please upload your Adobe Illustrator file containing the allocation polygon")))
+	 (:p "Please upload your text file containing the allocation polygon UTM coordinates")))
       (t
-       (with-bos-cms-page (req :title #?"Importing allocation polygons from illustrator file $(uploaded-ai-file)")
+       (with-bos-cms-page (req :title #?"Importing allocation polygons from text file $(uploaded-text-file)")
 	 (handler-case
-	     (loop for vertices in (polygons-from-illustrator-file uploaded-ai-file)
-		   for i from 1
-		   while vertices
-		   do (handler-case
-			  (let ((existing-area (find (coerce vertices 'list)
+	     (let* ((vertices (polygon-from-text-file uploaded-text-file))
+		    (existing-area (find (coerce vertices 'list)
 						     (class-instances 'allocation-area)
 						     :key #'(lambda (area) (coerce (allocation-area-vertices area) 'list))
 						     :test #'equal)))
-			    (if existing-area
-				(html (:p (:h2 "Polygon already imported")
-					  "The polygon " (:princ-safe vertices) " has already been "
-					  "imported as "
-					  (cmslink (format nil "/allocation-area/~D" (store-object-id existing-area))
-					    "allocation area " (:princ-safe (store-object-id existing-area)))))
-				(let ((allocation-area (make-allocation-area vertices)))
-				  (html (:p (:h2 "Successfully imported polygon number " (:princ-safe i))
-					    "The polygon "
-					    (cmslink (format nil "/allocation-area/~D" (store-object-id allocation-area))
-					      (:princ-safe (store-object-id allocation-area)))
-					    " has been successfully imported")))))
-			(error (e)
-			  (html (:p (:h2 "Error importing polygon number " (:princ-safe i))
-				    "The polygon " (:princ-safe vertices) " could not be imported"
-				    (:pre (:princ-safe e)))))))
+	       (if existing-area
+		   (html (:p (:h2 "Polygon already imported")
+			     "The polygon " (:princ-safe vertices) " has already been "
+			     "imported as "
+			     (cmslink (format nil "allocation-area/~D" (store-object-id existing-area))
+			       "allocation area " (:princ-safe (store-object-id existing-area)))))
+		   (let ((allocation-area (make-allocation-area vertices)))
+		     (html (:p (:h2 "Successfully imported new allocation area")
+			       "The polygon "
+			       (cmslink (format nil "allocation-area/~D" (store-object-id allocation-area))
+				 (:princ-safe (store-object-id allocation-area)))
+			       " has been successfully imported")))))
 	   (error (e)
 	     (html
-	      (:h2 "Error reading the Illustrator file")
+	      (:h2 "Error reading the text file")
 	      (:p "Please make sure that the uploaded file only contains a simple path.")
 	      (:p "The error encountered is:")
 	      (:pre (:princ-safe e))))))))))
@@ -226,6 +215,35 @@
     (error (e)
 	(error "error ~A on file ~A while waiting for ~A" e file regex))))
 
+(defun ensure-float (x)
+  (typecase x
+    (float t)
+    (integer t)
+    (t (error "invalid number ~S" x))))
+
+(defun scale-coordinate (name min x)
+  (unless (and (>= x min)
+	       (<= x (+ min +width+)))
+    (error "invalid ~A coordinate ~A (must be between ~A and ~A)" name x min (+ min +width+)))
+  (round (- x min)))
+
+(defun parse-point (line)
+  (destructuring-bind (x y) (read-from-string (format nil "(~A)" line))
+    (cons (scale-coordinate 'x +nw-utm-x+ x)
+	  (scale-coordinate 'y +nw-utm-y+ y))))
+
+(defun polygon-from-text-file (filename)
+  (coerce (with-open-file (input-file filename)
+	    (loop
+	       for line-number from 1
+	       for line = (read-line input-file nil)
+	       while line
+	       collect (handler-case
+			   (parse-point line)
+			 (error (e)
+			   (error "~A in line ~A" e line-number)))))
+	  'vector))
+
 (defun parse-illustrator-point (line)
   (destructuring-bind (x y type &rest foo) (split " " line)
     (declare (ignore foo))

Modified: trunk/projects/bos/worldpay-test/boi-handlers.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/boi-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/boi-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -4,12 +4,16 @@
 (enable-interpol-syntax)
 
 (defmacro with-xml-response (req &body body)
-  `(with-http-response (req *ent* :content-type "text/xml")
-    (with-http-body (req *ent*)
-      (let ((*xml-sink* (make-character-stream-sink net.html.generator:*html-stream* :canonical nil)))
-	(with-xml-output *xml-sink*
-	  (with-element "response"
-	    , at body))))))
+  `(with-http-response (,req *ent* :content-type "text/xml")
+     (with-query-params (,req download)
+       (when download
+	 (setf (reply-header-slot-value ,req :content-disposition)
+	       (format nil "attachment; filename=~A" download))))
+     (with-http-body (,req *ent*)
+       (let ((*xml-sink* (make-character-stream-sink net.html.generator:*html-stream* :canonical nil)))
+	 (with-xml-output *xml-sink*
+	   (with-element "response"
+	     , at body))))))
 
 (defmacro with-xml-error-handler (req &body body)
   `(handler-case
@@ -82,7 +86,9 @@
 	(when (contract-paidp contract)
 	  (error "contract has already been paid for"))
 	(with-transaction (:contract-paid)
-	  (contract-set-paidp contract t)
+	  (contract-set-paidp contract (format nil "~A: manually set paid by ~A"
+					       (format-date-time)
+					       (user-login (bknr-request-user req))))
 	  (when name
 	    (setf (user-full-name (contract-sponsor contract)) name))))
       (with-xml-response ()

Modified: trunk/projects/bos/worldpay-test/cms-links.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/cms-links.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/cms-links.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,7 +5,7 @@
 
 (defmethod html-edit-link ((sponsor sponsor))
   (html
-   (cmslink (format nil "/edit-sponsor/~D" (store-object-id sponsor))
+   (cmslink (format nil "edit-sponsor/~D" (store-object-id sponsor))
      (:princ-safe (format nil "edit sponsor #~D" (store-object-id sponsor))))))
 
 (defmethod html-link ((sponsor sponsor))
@@ -13,7 +13,7 @@
 
 (defmethod html-link ((contract contract))
   (html
-   (cmslink (format nil "/contract/~D" (store-object-id contract))
+   (cmslink (format nil "contract/~D" (store-object-id contract))
      (:princ-safe (format nil "contract #~D" (store-object-id contract))))))
 
 (defmethod object-url ((poi poi))

Modified: trunk/projects/bos/worldpay-test/config.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/config.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/config.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -4,6 +4,9 @@
 (defparameter *worldpay-installation-id* 103530
   "Installation-ID für Worldpay")
 
+;; Worldpay Test Mode
+(defparameter *worldpay-test-mode* t)
+
 ;; URL für BASE HREFs
 (defparameter *website-url* "http://create-rainforest.org")
 

Copied: trunk/projects/bos/worldpay-test/contract-image-handler.lisp (from rev 2044, branches/xml-class-rework/projects/bos/worldpay-test/contract-image-handler.lisp)

Copied: trunk/projects/bos/worldpay-test/contract-rss.lisp (from rev 2044, branches/xml-class-rework/projects/bos/worldpay-test/contract-rss.lisp)

Modified: trunk/projects/bos/worldpay-test/news-handlers.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/news-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/news-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -19,7 +19,7 @@
 	  (:ul
 	   (dolist (news-item (all-news-items))
 	     (let ((id (store-object-id news-item)))
-	       (html (:li (cmslink #?"/edit-news/$(id)"
+	       (html (:li (cmslink #?"edit-news/$(id)"
 				   (:princ-safe (format-date-time (news-item-time news-item)))
 				   " - "
 				   (:princ-safe (or (news-item-title news-item language) "[no title in this language]")))))))))

Copied: trunk/projects/bos/worldpay-test/news-rss.lisp (from rev 2044, branches/xml-class-rework/projects/bos/worldpay-test/news-rss.lisp)

Modified: trunk/projects/bos/worldpay-test/packages.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/packages.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/packages.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -2,6 +2,7 @@
 
 (defpackage :worldpay-test
   (:use :cl
+	:date-calc
 	:extensions
 	:cl-user
 	:cl-interpol
@@ -11,7 +12,7 @@
 	:xhtml-generator
 	:cxml
 	:puri
-	:mime
+	#+(or) :mime
 	:acl-compat.socket
 	:acl-compat.mp
         :bknr.web
@@ -21,6 +22,7 @@
 	:bknr.user
 	:bknr.images
 	:bknr.cron
+	:bknr.rss
         :bos.m2
 	:bos.m2.config)
   (:shadowing-import-from :cl-interpol #:quote-meta-chars)

Modified: trunk/projects/bos/worldpay-test/poi-handlers.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/poi-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/poi-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -93,12 +93,12 @@
 	     (:td (cond
 		    ((poi-area poi)
 		     (html (:princ-safe (format nil "~D/~D " (first (poi-area poi)) (second (poi-area poi)))))
-		     (cmslink (format nil "/map-browser/~A/~A?chosen-url=~A"
+		     (cmslink (format nil "map-browser/~A/~A?chosen-url=~A"
 				      (first (poi-area poi)) (second (poi-area poi))
 				      (uriencode-string (format nil "~A?action=save&" (uri-path (request-uri req)))))
 		       "[relocate]"))
 		    (t
-		     (cmslink (format nil "/map-browser/?chosen-url=~A"
+		     (cmslink (format nil "map-browser/?chosen-url=~A"
 				      (uriencode-string (format nil "~A?action=save&" (uri-path (request-uri req)))))
 		       "[choose]")))))
 	(:tr (:td "icon")
@@ -127,7 +127,7 @@
 	      (unless (eql 6 (length (poi-images poi)))
 		(html
 		 :br
-		 (cmslink (format nil "/edit-poi-image/?poi=~A" (store-object-id poi)) "[new]")))))
+		 (cmslink (format nil "edit-poi-image/?poi=~A" (store-object-id poi)) "[new]")))))
 	(:tr (:td "airal view")
 	     (:td (if (poi-airals poi)
 		      (html ((:a :href (format nil "/image/~D" (store-object-id (first (poi-airals poi))))
@@ -213,7 +213,7 @@
       ; just open the image to make sure that gd can process it
       )
     (change-slot-values poi 'panoramas (list (import-image uploaded-file
-							:class-name 'store-image))))
+							   :class-name 'store-image))))
   (redirect (format nil "/edit-poi/~D"
 		    (store-object-id poi)) req))
 

Copied: trunk/projects/bos/worldpay-test/reports-xml-handler.lisp (from rev 2044, branches/xml-class-rework/projects/bos/worldpay-test/reports-xml-handler.lisp)

Copied: trunk/projects/bos/worldpay-test/rss.lisp (from rev 2044, branches/xml-class-rework/projects/bos/worldpay-test/rss.lisp)

Modified: trunk/projects/bos/worldpay-test/sponsor-handlers.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/sponsor-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/sponsor-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -30,20 +30,25 @@
 	(when count
 	  (setf count (parse-integer count)))
 	(with-bos-cms-page (req :title "Sponsor search results")
-	  (:table
-	   (:tr (:th "ID") (:th "Date") (:th "Email") (:th "Name"))
+	  ((:table :border "1")
+	   (:tr (:th "ID") (:th "Date") (:th "Email") (:th "Name") (:th "SQM") (:th "Country") (:th "Cert-Type") (:th "Paid by"))
 	   (dolist (sponsor (sort (remove-if-not #'sponsor-contracts (class-instances 'sponsor))
 				  #'> :key #'(lambda (sponsor) (contract-date (first (sponsor-contracts sponsor))))))
 	     (when (or count
 		       (or (ignore-errors (scan regex (user-full-name sponsor)))
 			   (ignore-errors (scan regex (user-email sponsor)))))
-	       (html (:tr (:td (cmslink #?"/edit-sponsor/$((store-object-id sponsor))" (:princ-safe (store-object-id sponsor))))
-			  (:td (:princ-safe (format-date-time (contract-date (first (sponsor-contracts sponsor))) :show-time nil)))
-			  (:td (:princ-safe (or (user-email sponsor) "<unknown>")))
-			  (:td (:princ-safe (or (user-full-name sponsor) "<unknown>")))))
+	       (let ((contract (first (sponsor-contracts sponsor))))
+		 (html (:tr (:td (cmslink #?"edit-sponsor/$((store-object-id sponsor))" (:princ-safe (store-object-id sponsor))))
+			    (:td (:princ-safe (format-date-time (contract-date contract) :show-time nil)))
+			    (:td (:princ-safe (or (user-email sponsor) "<unknown>")))
+			    (:td (:princ-safe (or (user-full-name sponsor) "<unknown>")))
+			    (:td (:princ-safe (length (contract-m2s contract))))
+			    (:td (:princ-safe (sponsor-country sponsor)))
+			    (:td (:princ-safe (if (contract-download-only-p contract) "Download" "Print")))
+			    (:td (:princ-safe (contract-paidp contract))))))
 	       (when (eql (incf found) count)
 		 (return))))
-	   (:tr ((:th :colspan "4") (:princ-safe (format nil "~A sponsor~:p ~A" found (if count "shown" "found"))))))))
+	   (:tr ((:th :colspan "7") (:princ-safe (format nil "~A sponsor~:p ~A" found (if count "shown" "found"))))))))
       (return-from handle-object-form)))
   (with-bos-cms-page (req :title "Find or Create Sponsor")
     (html
@@ -58,16 +63,24 @@
        (:tr (:td "Show new sponsors (enter count)")
 	    (:td (text-field "count" :size 4)))
        (:tr (:td (submit-button "search" "search")))
+       (:tr (:td "") (:td ((:a :class "cmslink"
+			       :href "/reports-xml/all-contracts?download=contracts.xls")
+			   "Download complete sponsor DB in XML format")))
        (:tr ((:th :colspan "2" :align "left")
 	     (:h2 "Create sponsor")))
        (:tr (:td "Date (DD.MM.YYYY)")
 	    (:td (text-field "date" :size 10 :value (format-date-time (get-universal-time) :show-time nil))))
        (:tr (:td "Number of square meters")
-	    (:td (text-field "numsqm" :size 5))
-	    (:tr (:td "Country code (2 chars)")
-		 (:td (text-field "country" :size 2 :value "DE"))))
+	    (:td (text-field "numsqm" :size 5)))
+       (:tr (:td "Country code (2 chars)")
+            (:td (text-field "country" :size 2 :value "DE")))
        (:tr (:td "Email-Address")
 	    (:td (text-field "email" :size 40)))
+       (:tr (:td "Language for certificate")
+            (:td ((:select :name "language")
+                  (loop
+                     for (language-symbol language-name) in (website-languages)
+                     do (html ((:option :value language-symbol) (:princ-safe language-name)))))))
        (:tr (:td "Name for certificate")
 	    (:td (text-field "name" :size 20)))
        (:tr (:td "Postal address for certificate"
@@ -78,10 +91,10 @@
   (apply #'encode-universal-time 0 0 0 (mapcar #'parse-integer (split #?r"\." date-string))))
 
 (defmethod handle-object-form ((handler edit-sponsor-handler) (action (eql :create)) (sponsor (eql nil)) req)
-  (with-query-params (req numsqm country email name postaladdress date)
+  (with-query-params (req numsqm country email name postaladdress date language)
     (let* ((sponsor (make-sponsor :email email :country country))
 	   (contract (make-contract sponsor (parse-integer numsqm) :paidp t :date (date-to-universal date))))
-      (contract-issue-cert contract name postaladdress)
+      (contract-issue-cert contract name :address postaladdress :language language)
       (redirect (format nil "/edit-sponsor/~D" (store-object-id sponsor)) req))))
 
 (defun contract-checkbox-name (contract)
@@ -121,9 +134,15 @@
 		    (:td (:princ-safe (format-date-time (contract-date contract) :show-time nil)))
 		    (:td (:princ-safe (length (contract-m2s contract))))
 		    (:td (:princ-safe (if (contract-paidp contract) "paid" "not paid")))
-		    (:td (cmslink (format nil "/cert-regen/~A" (store-object-id contract)) "Regenerate Certificate")
+		    (:td (cmslink (format nil "cert-regen/~A" (store-object-id contract)) "Regenerate Certificate")
 			 (when (probe-file (contract-pdf-pathname contract))
-			   (html :br (cmslink (contract-pdf-url contract) "Show Certificate"))))))))
+			   (html :br (cmslink (contract-pdf-url contract) "Show Certificate")))
+			 (when (contract-worldpay-trans-id contract)
+			   (html :br ((:a :class "cmslink"
+					  :target "_new"
+					  :href (format nil "https://select.worldpay.com/wcc/admin?op-transInfo-~A=1"
+							(contract-worldpay-trans-id contract)))
+				      "Show WorldPay transaction"))))))))
       (:p (submit-button "save" "save")
 	  (submit-button "delete" "delete" :confirm "Really delete this sponsor?"))))))
 
@@ -177,6 +196,11 @@
 		  (:td (:princ-safe (format-date-time (contract-date contract)))))
 	     (:tr (:td "Country code (2 chars)")
 		  (:td (text-field "country" :size 2 :value "DE")))
+             (:tr (:td "Language")
+                  (:td ((:select :name "language")
+                        (loop
+                           for (language-symbol language-name) in (website-languages)
+                           do (html ((:option :value language-symbol) (:princ-safe language-name)))))))
 	     (:tr (:td "Name for certificate")
 		  (:td (text-field "name" :size 50)))
 	     (:tr (:td "Email-Address")
@@ -186,19 +210,20 @@
 	     (:tr (:td (submit-button "process" "process" :formcheck "javascript:return check_complete_sale()"))))))))))
 
 (defmethod handle-object-form ((handler complete-transfer-handler) (action (eql :process)) contract req)
-  (with-query-params (req email name postaladdress country)
+  (with-query-params (req email name postaladdress country language)
     (with-bos-cms-page (req :title "Square meter sale completion")
       (if (contract-paidp contract)
 	  (html (:h2 "This sale has already been completed"))
 	  (progn
 	    (html (:h2 "Completing square meter sale"))
 	    (sponsor-set-country (contract-sponsor contract) country)
-	    (contract-set-paidp contract t)
-	    (contract-issue-cert contract name postaladdress)
+	    (contract-set-paidp contract (format nil "~A: wire transfer processed by ~A"
+						 (format-date-time) (user-login (bknr-request-user req))))
+	    (contract-issue-cert contract name :address postaladdress :language language)
 	    (when email
 	      (html (:p "Sending instruction email to " (:princ-safe email)))
 	      (mail-instructions-to-sponsor contract email))))
-    (:p (cmslink (format nil "/edit-sponsor/~D" (store-object-id (contract-sponsor contract)))
+    (:p (cmslink (format nil "edit-sponsor/~D" (store-object-id (contract-sponsor contract)))
 	  "click here") " to edit the sponsor's database entry"))))
 
 (defclass m2-javascript-handler (prefix-handler)
@@ -220,10 +245,10 @@
 	(with-http-body (req *ent*)
 	  (let ((*standard-output* *html-stream*))
 	    (princ "<script language=\"JavaScript\">") (terpri)
-	    (princ "var profil; var qms;") (terpri)
+	    (princ "var profil;") (terpri)
 	    (when (and sponsor (find-if #'contract-paidp (sponsor-contracts sponsor)))
 	      (princ (make-m2-javascript sponsor)) (terpri))
-	    (princ "parent.qm_fertig(profil, qms);") (terpri)
+	    (princ "parent.qm_fertig(profil);") (terpri)
 	    (princ "</script>") (terpri)))))))
 
 (defclass sponsor-login-handler (page-handler)
@@ -266,25 +291,24 @@
       ((:table)
        (:tr (:td "Name")
 	    (:td (text-field "name" :size 40)))
-       (if (contract-download-only-p contract)
-	 (html
-	  (:tr (:td (submit-button "make-download" "make-download"))))
-	 (html
+       (:tr (:td "Language")
+            (:td ((:select :name "language")
+                  (loop
+                     for (language-symbol language-name) in (website-languages)
+                     do (html ((:option :value language-symbol) (:princ-safe language-name)))))))
+       (unless (contract-download-only-p contract)
+         (html
 	  (:tr (:td "Address")
-	       (:td (textarea-field "address")))
-	  (:tr (:td (submit-button "make-print" "make-print"))))))))))
+	       (:td (textarea-field "address")))))
+       (html
+        (:tr (:td (submit-button "regenerate" "regenerate")))))))))
 
 (defun confirm-cert-regen (req)
   (with-bos-cms-page (req :title "Certificate generation request has been created")
     (html
      "Your certificate generation request has been created, please wait a few seconds before checking the PDF file")))
 
-(defmethod handle-object-form ((handler cert-regen-handler) (action (eql :make-print)) (contract contract) req)
-  (with-query-params (req name address)
-    (bos.m2::make-certificate contract name :address address))
-  (confirm-cert-regen req))
-
-(defmethod handle-object-form ((handler cert-regen-handler) (action (eql :make-download)) (contract contract) req)
-  (with-query-params (req name)
-    (bos.m2::make-certificate contract name))
+(defmethod handle-object-form ((handler cert-regen-handler) (action (eql :regenerate)) (contract contract) req)
+  (with-query-params (req name address language)
+    (bos.m2::make-certificate contract name :address address :language language))
   (confirm-cert-regen req))
\ No newline at end of file

Modified: trunk/projects/bos/worldpay-test/tags.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/tags.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/tags.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -25,12 +25,13 @@
   (emit-without-quoting "<WPDISPLAY ITEM=banner>"))
 
 (define-bknr-tag process-payment (&key children)
-  (with-template-vars (cartId email country)
+  (with-template-vars (cartId transId email country)
     (let* ((contract (get-contract (parse-integer cartId)))
 	   (sponsor (contract-sponsor contract)))
       (change-slot-values sponsor 'bknr.web::email email)
+      (change-slot-values contract 'bos.m2::worldpay-trans-id transId)
       (sponsor-set-country sponsor country)
-      (contract-set-paidp contract t)
+      (contract-set-paidp contract (format nil "~A: paid via worldpay" (format-date-time)))
       (setf (get-template-var :master-code) (sponsor-master-code sponsor))
       (setf (get-template-var :sponsor-id) (sponsor-id sponsor))))
   (mapc #'emit-template-node children))
@@ -38,7 +39,7 @@
 (define-bknr-tag generate-cert ()
   (with-template-vars (gift email name address)
     (let ((contract (find-store-object (parse-integer (get-template-var :contract-id)))))
-      (contract-issue-cert contract name address)
+      (contract-issue-cert contract name :address address :language (session-variable :language))
       (bknr.web::redirect-request :target (if gift "index"
 					      (format nil "profil_setup?name=~A&email=~A&sponsor-id=~A"
 						      (uriencode-string name) (uriencode-string email)
@@ -55,7 +56,7 @@
     (html ((:base "href" href)))))
 
 (define-bknr-tag buy-sqm (&key children)
-  (with-template-vars (numsqm numsqm1 action gift donationcert-yearly)
+  (with-template-vars (numsqm numsqm1 action gift donationcert-yearly download-only)
     (let* ((numsqm (parse-integer (or numsqm numsqm1)))
 	   ;; Wer ueber dieses Formular bestellt, ist ein neuer Sponsor,
 	   ;; also ein neues Sponsorenobjekt anlegen.  Eine Profil-ID
@@ -69,38 +70,43 @@
 				(scan #?r"rweisung" action)))
            (sponsor (make-sponsor))
            (price (* numsqm 3))
-           (contract (make-contract sponsor numsqm :expires (+ (if manual-transfer
-								   bos.m2::*manual-contract-expiry-time*
-								   bos.m2::*online-contract-expiry-time*)
-							       (get-universal-time))))
+           (contract (make-contract sponsor numsqm
+                                    :download-only download-only
+                                    :expires (+ (if manual-transfer
+                                                    bos.m2::*manual-contract-expiry-time*
+                                                    bos.m2::*online-contract-expiry-time*)
+                                                (get-universal-time))))
 	   (language (session-variable :language)))
       (setf (get-template-var :worldpay-url)
             (if manual-transfer
-                (format nil "ueberweisung?contract-id=~a&amount=~a&numsqm=~a~@[&donationcert-yearly=1~]"
+                (format nil "ueberweisung?contract-id=~A&amount=~A&numsqm=~A~@[&donationcert-yearly=1~]"
                         (store-object-id contract)
                         price
                         numsqm
 			donationcert-yearly)
-                (format nil "https://select.worldpay.com/wcc/purchase?instId=~a&cartId=~a&amount=~a&currency=EUR&lang=~a&desc=~a&MC_sponsorid=~a&MC_password=~a&MC_donationcert-yearly=~A&MC_gift=~A" ; &testMode=100 für test
+                (format nil "https://select.worldpay.com/wcc/purchase?instId=~A&cartId=~A&amount=~A&currency=EUR&lang=~A&desc=~A&MC_sponsorid=~A&MC_password=~A&MC_donationcert-yearly=~A&MC_gift=~A~@[~A~]"
 			*worldpay-installation-id*
                         (store-object-id contract)
                         price
 			language
-                        (encode-urlencoded (format nil "~a qm Regenwald in Samboja Lestari" numsqm))
+                        (encode-urlencoded (format nil "~A ~A in Samboja Lestari"
+                                                   numsqm
+                                                   (if (string-equal language "de") "qm Regenwald" "sqm rain forest")))
 			(store-object-id sponsor)
 			(sponsor-master-code sponsor)
 			(if donationcert-yearly "1" "0")
-			(if gift "1" "0"))))))
+			(if gift "1" "0")
+			(when *worldpay-test-mode* "&testMode=100"))))))
   (mapc #'emit-template-node children))
 
 (define-bknr-tag mail-transfer ()
-  (with-query-params ((get-template-var :request) contract-id vorname name strasse plz ort email telefon mail-certificate donationcert-yearly)
-    (mail-transfer-indication contract-id vorname name strasse plz ort email telefon mail-certificate donationcert-yearly)))
+  (mail-manual-sponsor-data (get-template-var :request)))
 
 (define-bknr-tag when-certificate (&key children)
   (let ((sponsor (bknr-request-user (get-template-var :request))))
     (when (some #'(lambda (contract)
-		    (contract-pdf-pathname contract))
+		    (and (contract-download-only-p contract)
+			 (contract-pdf-pathname contract)))
 		(sponsor-contracts sponsor))
       (mapc #'emit-template-node children))))
 
@@ -134,3 +140,8 @@
 	  (format nil "~D"
 		  (apply #'+ (mapcar #'(lambda (contract) (length (contract-m2s contract))) (sponsor-contracts sponsor))))))
   (mapc #'emit-template-node children))
+
+(define-bknr-tag admin-login-page (&key children)
+  (if (admin-p (bknr-request-user (get-template-var :request)))
+      (html (:head ((:meta :http-equiv "refresh" :content "0; url=/admin"))))
+      (mapc #'emit-template-node children)))
\ No newline at end of file

Modified: trunk/projects/bos/worldpay-test/web-utils.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/web-utils.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/web-utils.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -16,7 +16,7 @@
 	     (html "logged in as " (html-link (bknr-request-user *req*)))
 	     (html "not logged in"))
 	 " - current content language is "
-	(cmslink "/change-language"
+	(cmslink "change-language"
 	  (:princ-safe (current-website-language))
 	  " ("
 	  (:princ-safe (language-name (current-website-language)))

Modified: trunk/projects/bos/worldpay-test/worldpay-test.asd
===================================================================
--- trunk/projects/bos/worldpay-test/worldpay-test.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/worldpay-test.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -28,12 +28,16 @@
 	       (:file "poi-handlers" :depends-on ("web-utils"))
 	       (:file "boi-handlers" :depends-on ("web-utils"))
 	       (:file "contract-handlers" :depends-on ("web-utils"))
+	       (:file "contract-image-handler" :depends-on ("web-utils"))
+	       (:file "reports-xml-handler" :depends-on ("boi-handlers"))
 	       (:file "sponsor-handlers" :depends-on ("web-utils"))
 	       (:file "news-handlers" :depends-on ("web-utils"))
 	       (:file "allocation-area-handlers" :depends-on ("web-utils"))
 	       (:file "languages-handler" :depends-on ("web-utils"))
 	       (:file "tags" :depends-on ("web-utils"))
 	       (:file "news-tags" :depends-on ("web-utils"))
+	       (:file "news-rss" :depends-on ("web-utils"))
+	       (:file "contract-rss" :depends-on ("web-utils"))
 	       (:file "worldpay-test" :depends-on ("news-tags" "tags" "map-handlers" "map-browser-handler" "poi-handlers"
 							       "boi-handlers" "contract-handlers" "sponsor-handlers" "news-handlers"
 							       "allocation-area-handlers"))

Modified: trunk/projects/bos/worldpay-test/worldpay-test.lisp
===================================================================
--- trunk/projects/bos/worldpay-test/worldpay-test.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/bos/worldpay-test/worldpay-test.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -24,7 +24,7 @@
 
 (defmethod find-template-pathname ((handler worldpay-template-handler) template-name &key request)
   (when (scan #?r"(^|.*/)handle-sale" template-name)
-    (with-query-params (request cartId email name address country transStatus lang MC_gift MC_donationcert-yearly testMode)
+    (with-query-params (request cartId name address country transStatus lang MC_gift)      
       (unless (website-supports-language lang)
 	(setf lang *default-language*))
       (let ((contract (get-contract (parse-integer cartId))))
@@ -36,14 +36,10 @@
 	  ((equal "C" transStatus)
 	   (setf template-name #?"/$(lang)/sponsor_canceled"))
 	  ((< (contract-price contract) *mail-certificate-threshold*)
-	   (mail-request-parameters request (format nil "Spenderdaten - Sponsor-ID ~D Contract-ID ~D"
-						    (store-object-id (contract-sponsor contract))
-						    (store-object-id contract)))
+	   (mail-worldpay-sponsor-data request)
 	   (setf template-name #?"/$(lang)/quittung"))
 	  (t
-	   (mail-request-parameters request (format nil "Spenderdaten - Sponsor-ID ~D Contract-ID ~D"
-						    (store-object-id (contract-sponsor contract))
-						    (store-object-id contract)))
+	   (mail-worldpay-sponsor-data request)
 	   (when (<= *mail-fiscal-certificate-threshold* (contract-price contract))
 	     (mail-fiscal-certificate-to-office contract name address country))
 	   (setf template-name (if (and MC_gift (equal MC_gift "1")) #?"/$(lang)/versand_geschenk" #?"/$(lang)/versand_info")))))))
@@ -96,7 +92,7 @@
   ())
 
 (defmethod handle ((handler index-handler) req)
-  (redirect (format nil "/~a/index" (or (find-browser-prefered-language req)
+  (redirect (format nil "/~A/index" (or (find-browser-prefered-language req)
 					*default-language*))
 	    req))
 
@@ -108,8 +104,8 @@
   (with-query-params (req logout)
     (when logout
       (bknr.web::drop-session (bknr-request-session req))))
-  (redirect "/infosystem/satellitenkarte.htm"
-	    req))
+  (let ((language (session-variable :language)))
+    (redirect #?"/infosystem/$(language)/satellitenkarte.htm" req)))
 
 (defclass certificate-handler (object-handler)
   ()
@@ -120,6 +116,24 @@
     (setf contract (find-if #'contract-pdf-pathname (sponsor-contracts (bknr-request-user req)))))
   (redirect (format nil "/certificates/~D.pdf" (store-object-id contract)) req))
 
+(defclass statistics-handler (admin-only-handler prefix-handler)
+  ())
+
+(defmethod handle ((handler statistics-handler) req)
+  (let ((stats-name (parse-url req)))
+    (cond
+      (stats-name
+       (redirect (format nil "~A.svg" stats-name) req))
+      (t
+       (with-bos-cms-page (req :title "Statistics browser")
+	 (:p
+	  ((:select :id "selector" :onchange "return statistic_selected()")
+	   (dolist (file (directory (merge-pathnames #p"images/statistics/*.svg" *website-directory*)))
+	     (html ((:option :value (pathname-name file))
+		    (:princ-safe (pathname-name file)))))))
+	 ((:p :id "stats"))
+	 ((:script :type "text/javascript") "statistic_selected()"))))))
+
 (defclass print-certificate-handler (admin-only-handler object-handler)
   ()
   (:default-initargs :class 'contract))
@@ -173,13 +187,13 @@
 		(find-browser-prefered-language req)
 		*default-language*)))))
 
-(defun publish-worldpay-test (&key website-directory website-url (vhosts :wild))
+(defun publish-worldpay-test (&key website-directory website-url (worldpay-test-mode t) (vhosts :wild))
   (setf *website-directory* website-directory)
 
   (when website-url
     (setf *website-url* website-url))
 
-  (setf bknr.web::*login-default-url* "/admin")
+  (setf *worldpay-test-mode* worldpay-test-mode)
 
   (make-instance 'bos-website
 		 :name "BOS Website"
@@ -187,6 +201,7 @@
 					("/edit-poi-image" edit-poi-image-handler)
 					("/edit-sponsor" edit-sponsor-handler)
 					("/contract" contract-handler)
+					("/reports-xml" reports-xml-handler)
 					("/complete-transfer" complete-transfer-handler)
 					("/edit-news" edit-news-handler)
 					("/make-poi" make-poi-handler)
@@ -198,6 +213,7 @@
 					("/create-allocation-area" create-allocation-area-handler)
 					("/allocation-area" allocation-area-handler)
 					("/allocation-area-gfx" allocation-area-gfx-handler)
+					("/contract-image" contract-image-handler)
 					("/certificate" certificate-handler)
 					("/cert-regen" cert-regen-handler)
 					("/admin" admin-handler)
@@ -209,6 +225,8 @@
 					("/create-contract" create-contract-handler)
 					("/pay-contract" pay-contract-handler)
 					("/cancel-contract" cancel-contract-handler)
+					("/statistics" statistics-handler)
+					("/rss" rss-handler)
 					("/" redirect-handler
 					 :to "/index")
 					("/index" index-handler)
@@ -217,13 +235,14 @@
 					 :command-packages ((:bos . :worldpay-test)
 							    (:bknr . :bknr.web))))
 		 :modules '(user images stats)
-		 :admin-navigation '(("user" . "/user/")
-				     ("sponsor" . "/edit-sponsor/")
-				     ("news" . "/edit-news/")
-				     ("poi" . "/edit-poi/")
-				     ("languages" . "/languages")
-				     ("allocation area" . "/allocation-area/")
-				     ("logout" . "/logout"))
+		 :admin-navigation '(("user" . "user/")
+				     ("sponsor" . "edit-sponsor/")
+				     ("statistics" . "statistics/")
+				     ("news" . "edit-news/")
+				     ("poi" . "edit-poi/")
+				     ("languages" . "languages")
+				     ("allocation area" . "allocation-area/")
+				     ("logout" . "logout"))
 		 :authorizer (make-instance 'bos-authorizer)
 		 :site-logo-url "/images/bos-logo.gif"
 		 :style-sheet-urls '("/static/cms.css")

Modified: trunk/projects/eboy/eboy-static/catalog.css
===================================================================
--- trunk/projects/eboy/eboy-static/catalog.css	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/eboy-static/catalog.css	2006-10-24 21:07:42 UTC (rev 2045)
@@ -138,3 +138,9 @@
 .selected-keyword {
         background-color: #88f;
 }
+
+iframe#execute-frame {
+        width: 0px;
+        height: 0px;
+        visibilty: hidden;
+}
\ No newline at end of file

Modified: trunk/projects/eboy/eboy-static/catalog.html
===================================================================
--- trunk/projects/eboy/eboy-static/catalog.html	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/eboy-static/catalog.html	2006-10-24 21:07:42 UTC (rev 2045)
@@ -68,6 +68,6 @@
   </div>
   <div id="debugger">
   </div>
-  <iframe src="about:blank" name="execute" id="execute"></iframe>
+  <iframe src="about:blank" name="execute-frame" id="execute-frame"></iframe>
  </body>
 </html>
\ No newline at end of file

Modified: trunk/projects/eboy/eboy-static/catalog.js
===================================================================
--- trunk/projects/eboy/eboy-static/catalog.js	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/eboy-static/catalog.js	2006-10-24 21:07:42 UTC (rev 2045)
@@ -19,7 +19,7 @@
 
 function init()
 {
-    document.debug = true;
+    document.debug = false;
 
     var url = document.location.href;
 
@@ -230,7 +230,7 @@
 
     debug(operation + ' keyword "' + keyword + '" for image ' + image_description.id);
 
-    document.frames['execute'].window.location.replace('/edit-image/' + image_description.id + '?image-id=' + image_description.id + '&action=edit&' + operation + '=' + keyword);
+    document.getElementById('execute-frame').window.location.replace('/edit-image/' + image_description.id + '?batch=1&image-id=' + image_description.id + '&action=edit&' + operation + '=' + keyword);
 
     refresh_image_info();
 

Modified: trunk/projects/eboy/eboy-templates/toplevel.bknr
===================================================================
--- trunk/projects/eboy/eboy-templates/toplevel.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/eboy-templates/toplevel.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,7 +1,10 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
-<html lang="en" xml:lang="en">
+<html
+  lang="en" xml:lang="en"
+  xmlns:bknr="http://bknr.net/"
+  xmlns:eboy="http://eboy.com/">
  <head>
   <link rel="SHORTCUT ICON" href="/image/favicon" />
   <link rel="stylesheet" href="/adm/$(mycolor).css" />

Modified: trunk/projects/eboy/src/breadcrumb.lisp
===================================================================
--- trunk/projects/eboy/src/breadcrumb.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/breadcrumb.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -43,6 +43,6 @@
 
 (in-package :eboy-commands)
 
-(define-bknr-tag breadcrumb (&key (depth 2))
+(define-bknr-tag breadcrumb ()
   (html ((:div :class "breadcrumb")
 	 (:princ (caar (form-urlencoded-to-query (uri-path (request-uri *req*))))))))
\ No newline at end of file

Modified: trunk/projects/eboy/src/dynasite-tags.lisp
===================================================================
--- trunk/projects/eboy/src/dynasite-tags.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/dynasite-tags.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -37,7 +37,7 @@
 		       (let ((host (http-session-host *session*)))
 			 (make-object 'mail
 				      :subject (format nil "feedback from ~A (~A)"
-						       (user-login *user*)
+						       (bknr.user:user-login *user*)
 						       (when host
 							 (host-name host)))
 				      :body feedback)))

Modified: trunk/projects/eboy/src/eboy-web.lisp
===================================================================
--- trunk/projects/eboy/src/eboy-web.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/eboy-web.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -29,7 +29,7 @@
 					(:template-/ template-handler
 						     :prefix "/"
 						     :command-packages
-						     ((:bknr . :bknr.web.commands)
+						     ((:bknr . :bknr.web)
 						      (:eboy . :eboy-commands))
 						     :destination ,+templates-directory+))
 		 :modules '(user mailinglist mailinglist-registration images stats)))

Modified: trunk/projects/eboy/src/item-handlers.lisp
===================================================================
--- trunk/projects/eboy/src/item-handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/item-handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -4,10 +4,10 @@
 
 ;;; links
 (defmethod edit-object-url ((item item))
-  (format nil "~a/~a" (handler-url :edit-item) (store-object-id item)))
+  (format nil "/edit-item/~a" (store-object-id item)))
 
 (defmethod object-url ((item item))
-  (format nil "~a/~a" (handler-url :item) (store-object-id item)))
+  (format nil "/item/~a" (store-object-id item)))
 
 (defmethod html-link ((item item))
   (html
@@ -27,7 +27,7 @@
     (if item
 	(html (:h1 "editing item " (:princ-safe (article-subject item))))
 	(html (:h1 "edit existing item:")
-	      (:ul (dolist (item (store-objects (current-store) 'item))
+	      (:ul (dolist (item (class-instances 'item))
 		     (html (:li ((:a :href (edit-object-url item))
 				 (:princ-safe (string-downcase (item-name item)))
 				 ": "
@@ -74,7 +74,7 @@
 		  (image-collection (item-images item :include-poster nil) :url "/edit-image/"))))
 	   (:p (submit-button "save" "save")
 	       (when item (submit-button "delete" "delete"
-							:onClick "javascript:return confirm('Really delete item?');")))))))
+                                         :confirm "Really delete item?")))))))
 
 (defmethod authorized-p ((handler edit-item-handler) req)
   (admin-p (bknr-request-user req)))
@@ -106,6 +106,6 @@
 
 (defmethod handle-object-form ((handler edit-item-handler)
 			       (action (eql :delete)) item req)
-  (delete-store-object item)
+  (delete-object item)
   (with-bknr-page (req :title "item has been deleted")
     (html "item has been deleted")))
\ No newline at end of file

Modified: trunk/projects/eboy/src/item.lisp
===================================================================
--- trunk/projects/eboy/src/item.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/item.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -25,11 +25,11 @@
 	   (random-elt (item-images item)))))
 
 (defun item-with-name (keyword)
-  (find keyword (store-objects (current-store) 'item) :key #'item-name))
+  (find keyword (class-instances 'item) :key #'item-name))
 
 (defun all-items ()
   "return all items which have matching images"
-  (remove nil (store-objects (current-store) 'item) :key #'item-images))
+  (remove nil (class-instances 'item) :key #'item-images))
 
 (defun find-item-keywords ()
   (reduce #'union (all-items) :key #'item-keywords))

Modified: trunk/projects/eboy/src/jerks.lisp
===================================================================
--- trunk/projects/eboy/src/jerks.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/jerks.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -54,8 +54,7 @@
 		  (pop bottom)) res))))
 
 (defun autojerk-img-url (autojerk &key (proc ""))
-  (format nil "~a/~a,~a,~a~a"
-	  (handler-url :autojerk-image)
+  (format nil "/autojerk-image/~a,~a,~a~a"
 	  (store-object-id (first autojerk))
 	  (store-object-id (second autojerk))
 	  (store-object-id (third autojerk))

Modified: trunk/projects/eboy/src/layout.lisp
===================================================================
--- trunk/projects/eboy/src/layout.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/layout.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -76,23 +76,22 @@
   (store-image-name (cell-image cell)))
 
 (defmethod cell-as-html ((cell image-cell) &key background type detail-url)
-  (let ((image (cell-image cell)))
-    (html ((:div :class "item_box" :style (format nil "height: ~apx; width: ~apx" (cell-height cell) (cell-width cell)))
-	   ((:a :href (format nil "~a/~a" detail-url (cell-name cell)))
-	    ((:img :src (format nil "/image/~a/cell,~a,~a,~a,~a"
-				(store-image-name (cell-image cell))
-				background
-				(cell-width cell)
-				(cell-image-height cell)
-				type)
-		   :width (format nil "~a" (cell-width cell))
-		   :height (format nil "~a" (cell-image-height cell))
-		   :alt (or (cell-caption cell) (cell-name cell)))))
-	   (when (and (image-layout-captions (cell-layout cell))
-		      (cell-caption cell))
-	      (html ((:div :class "item_text")
-		     ((:a :href (format nil "~a/~a" detail-url (cell-name cell)))
-		      (:princ (cell-caption cell))))))))))
+  (html ((:div :class "item_box" :style (format nil "height: ~apx; width: ~apx" (cell-height cell) (cell-width cell)))
+         ((:a :href (format nil "~a/~a" detail-url (cell-name cell)))
+          ((:img :src (format nil "/image/~a/cell,~a,~a,~a,~a"
+                              (store-image-name (cell-image cell))
+                              background
+                              (cell-width cell)
+                              (cell-image-height cell)
+                              type)
+                 :width (format nil "~a" (cell-width cell))
+                 :height (format nil "~a" (cell-image-height cell))
+                 :alt (or (cell-caption cell) (cell-name cell)))))
+         (when (and (image-layout-captions (cell-layout cell))
+                    (cell-caption cell))
+           (html ((:div :class "item_text")
+                  ((:a :href (format nil "~a/~a" detail-url (cell-name cell)))
+                   (:princ (cell-caption cell)))))))))
 
 (defmethod cell-object ((cell image-cell))
   (cell-image cell))

Modified: trunk/projects/eboy/src/load.lisp
===================================================================
--- trunk/projects/eboy/src/load.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/load.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -2,6 +2,6 @@
 
 (asdf:oos 'asdf:load-op :swank)
 
-(swank::create-swank-server 4005 :spawn #'swank::simple-announce-function t)
+(swank::create-swank-server 4008 :spawn #'swank::simple-announce-function t)
 
 (mp::startup-idle-and-top-level-loops)

Modified: trunk/projects/eboy/src/navi.lisp
===================================================================
--- trunk/projects/eboy/src/navi.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/navi.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -41,7 +41,7 @@
 (define-bknr-tag secondlevelmenu ()
   "Erzeugt das Second-Level-Menü"
   (destructuring-bind
-	(empty first-level &optional second-level &rest rest)
+	(empty first-level &rest rest)
       (split "/" (uri-path (request-uri *req*)))
     (declare (ignore empty rest))
     (dolist (choice (website-menu *current-website*))

Modified: trunk/projects/eboy/src/packages.lisp
===================================================================
--- trunk/projects/eboy/src/packages.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/eboy/src/packages.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -17,7 +17,13 @@
 	:bknr.images
 	:bknr.user
 	:puri)
-  (:shadowing-import-from :cl-interpol quote-meta-chars))
+  (:shadowing-import-from :cl-interpol quote-meta-chars)
+  (:export #:find-item
+           #:item-images
+           #:item-poster-image
+           #:all-items
+           #:item-image-keywords
+           #:item-keywords))
 
 (defpackage :eboy.tests
   (:use :cl :eboy :unit-test))
@@ -33,7 +39,11 @@
 	:bknr.web
 	:bknr.datastore
 	:bknr.utils
-	:bknr.rss)
+	:bknr.rss
+        :bknr.images
+        :bknr.mail
+        :bknr.sysparams
+        :bknr.text)
   (:shadowing-import-from :cl-interpol quote-meta-chars)
   (:export
    ;; tags


Property changes on: trunk/projects/hello-web
___________________________________________________________________
Name: svn:ignore
   + datastore


Modified: trunk/projects/hello-web/src/config.lisp
===================================================================
--- trunk/projects/hello-web/src/config.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/src/config.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -3,13 +3,10 @@
 ;; URL für BASE HREFs
 (defparameter *website-url* "http://hello-web.bknr.net")
 
-#-sbcl
 (defparameter *root-directory* #p"home:bknr-svn/projects/hello-web/")
-#+sbcl
-(defparameter *root-directory* (merge-pathnames #p"bknr-svn/projects/hello-web/" (user-homedir-pathname)))
 
 (defparameter *store-directory* (merge-pathnames #p"datastore/" *root-directory*))
 
 (defparameter *website-directory* (merge-pathnames #p"website/" *root-directory*))
 
-(defparameter *webserver-port* 8080)
+(defparameter *webserver-port* 8080)
\ No newline at end of file

Modified: trunk/projects/hello-web/src/handlers.lisp
===================================================================
--- trunk/projects/hello-web/src/handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/src/handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -14,4 +14,5 @@
   (with-bknr-page (req :title "demo handler")
     (html (:p "This is the demo handler, the object id of user "
 	      (:b (:princ-safe (first (decoded-handler-path handler req)))) " is "
-	      (:b (:princ-safe (store-object-id object)))))))
\ No newline at end of file
+	      (:b (:princ-safe (store-object-id object)))))))
+

Modified: trunk/projects/hello-web/src/hello-web.asd
===================================================================
--- trunk/projects/hello-web/src/hello-web.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/src/hello-web.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -20,7 +20,6 @@
 	       :cl-ppcre
 	       :aserve
 	       :cxml
-;	       :cl-typesetting
 	       :mime
 	       :bknr-modules)
 
@@ -30,4 +29,5 @@
 	       (:file "tags" :depends-on ("config"))
 	       (:file "handlers" :depends-on ("config"))
 	       (:file "webserver" :depends-on ("handlers"))
+	       (:file "news" :depends-on ("config"))
 	       (:file "init" :depends-on ("webserver"))))

Modified: trunk/projects/hello-web/src/init.lisp
===================================================================
--- trunk/projects/hello-web/src/init.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/src/init.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -11,6 +11,7 @@
   (unless (find-user "anonymous")
     (make-user "anonymous")		; used for all anonymous sessions
     (make-user "admin" :password "admin" :full-name "Administrator" :flags '(:admin))
-    (import-image "bknr-logo.png" :keywords '(:banner :bknr)))
+    (import-image "bknr-logo.png" :keywords '(:banner :bknr))
+    (make-rss-channel "default" "BKNR Hello Web" "default RSS channel of the BKNR hello web site" *website-url*))
   
   (publish-hello-web))

Modified: trunk/projects/hello-web/src/load.lisp
===================================================================
--- trunk/projects/hello-web/src/load.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/src/load.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,5 +6,4 @@
 (swank::create-swank-server 4005 :spawn #'swank::simple-announce-function t)
 (hello-web::startup)
 
-#-sbcl
 (mp::startup-idle-and-top-level-loops)

Copied: trunk/projects/hello-web/src/news.lisp (from rev 2044, branches/xml-class-rework/projects/hello-web/src/news.lisp)

Modified: trunk/projects/hello-web/src/packages.lisp
===================================================================
--- trunk/projects/hello-web/src/packages.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/src/packages.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -11,10 +11,7 @@
 (defpackage :hello-web.tags
   (:use :cl
 	:cl-user
-	#-sbcl
 	:ext
-	#+sbcl
-	:sb-ext
 	:bknr.web
 	:xhtml-generator
 	:hello-web.config)
@@ -35,10 +32,7 @@
 (defpackage :hello-web
   (:use :cl
 	:cl-user
-	#-sbcl
 	:ext
-	#+sbcl
-	:sb-ext
 	:cl-interpol
 	:cl-ppcre
 	:bknr.utils
@@ -47,6 +41,7 @@
 	:bknr.images
 	:bknr.datastore
 	:bknr.indices
+	:bknr.rss
 	:hello-web.config
 	:net.aserve
 	:xhtml-generator)

Modified: trunk/projects/hello-web/src/webserver.lisp
===================================================================
--- trunk/projects/hello-web/src/webserver.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/src/webserver.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -9,24 +9,20 @@
 
 (defun publish-hello-web (&key (port *webserver-port*) (listeners 20))
 
-  (setf bknr.web::*login-default-url* "/admin")
-
   (make-instance 'website
 		 :name "Hello Web CMS"
 		 :handler-definitions `(("/hello-object" hello-object-handler)
 					("/" redirect-handler
 					 :prefix "/" :to "/index")
+					("/rss" rss-handler)
 					("/" template-handler
-
 					 :prefix "/"
 					 :destination ,(namestring (merge-pathnames #p"templates/" *website-directory*))
 					 :command-packages ((:hello-web . :hello-web.tags)
 							    (:bknr . :bknr.web)
 							    (:menu . :bknr.site-menu)))
 					("/static" directory-handler
-					 :destination ,(#-sbcl unix-namestring #+sbcl native-namestring 
-							       (merge-pathnames #p"static/" *website-directory*))
-					 ))
+					 :destination ,(unix-namestring (merge-pathnames #p"static/" *website-directory*))))
 		 :modules '(images user)
 		 :admin-navigation '(("user" . "/user/")
 				     ("images" . "/edit-images")

Deleted: trunk/projects/hello-web/website/templates/index.bknr
===================================================================
--- trunk/projects/hello-web/website/templates/index.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/website/templates/index.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:hello-web="http://hello-web.bknr.net"
-  >
-	<head>
-		<link rel="stylesheet" href="/static/styles.css" />
-		<script src="/static/javascript.js" type="text/javascript"><!-- x -->	
-		</script> 
-		<title>Hello Web</title>
-	</head>
-
-	<body id="hello-web">
-		<h2>Hello Web!</h2>
-		<hello-web:test-tag arg="blub" />
-		<h2>Handler demo</h2>
-		<a href="/hello-object/anonymous">see the output of a user-defined handler</a>
-	</body>
-</html>

Copied: trunk/projects/hello-web/website/templates/index.xml (from rev 2044, branches/xml-class-rework/projects/hello-web/website/templates/index.xml)

Deleted: trunk/projects/hello-web/website/templates/user-error.bknr
===================================================================
--- trunk/projects/hello-web/website/templates/user-error.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/hello-web/website/templates/user-error.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:lisp-ecoop05="http://lisp-ecoop05.bknr.net"
-  xmlns:menu="http://bknr.net/menu"
-  >
-Your request could not be processed because an error occured:
-<pre>
-$(error-message)
-</pre>
-</html>
\ No newline at end of file

Copied: trunk/projects/hello-web/website/templates/user-error.xml (from rev 2044, branches/xml-class-rework/projects/hello-web/website/templates/user-error.xml)

Copied: trunk/projects/lisp-ecoop (from rev 2044, branches/xml-class-rework/projects/lisp-ecoop)

Copied: trunk/projects/mah-jongg (from rev 2044, branches/xml-class-rework/projects/mah-jongg)


Property changes on: trunk/projects/mah-jongg
___________________________________________________________________
Name: svn:ignore
   + datastore



Property changes on: trunk/projects/quickhoney
___________________________________________________________________
Name: svn:ignore
   - datastore


Modified: trunk/projects/quickhoney/src/handlers.lisp
===================================================================
--- trunk/projects/quickhoney/src/handlers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/src/handlers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -28,9 +28,10 @@
   ())
 
 (defmethod handle-object ((handler animation-handler) animation req)
-  (with-bknr-http-response (req :content-type "application/x-shockwave-flash")
-    (with-http-body (req *ent*)
-      (blob-to-stream (quickhoney-animation-image-animation animation) *html-stream*))))
+  (let ((content-type (blob-type (quickhoney-animation-image-animation animation))))
+    (with-bknr-http-response (req :content-type content-type)
+      (with-http-body (req *ent*)
+	(blob-to-stream (quickhoney-animation-image-animation animation) *html-stream*)))))
 
 (defclass image-query-js-handler (javascript-handler object-handler)
   ())
@@ -44,7 +45,7 @@
   (format nil " new parent.ServerImage(~S, ~D, ~S, ~D, ~D, ~S)"
 	  (store-image-name image)
 	  (store-object-id image)
-	  (image-content-type (blob-type image))
+	  (image-content-type (blob-mime-type image))
 	  (store-image-width image)
 	  (store-image-height image)
 	  (or (quickhoney-image-client image) "")))
@@ -150,7 +151,7 @@
       (handler-case
 	  (progn
 	    (unless uploaded-file
-	      (error "no file uploaded in upload handler"))
+	      (error "no file uploaded"))
 	    (cl-gd:with-image-from-file* (uploaded-file)
 	      (let* ((color-table (make-hash-table :test #'eql))
 		     (width (cl-gd:image-width))
@@ -186,7 +187,7 @@
 		     (:body
 		      (:h2 "Error during upload")
 		      (:p "Error during upload:")
-		      (:pre (:princ-safe e))
+		      (:p (:princ-safe (apply #'format nil (simple-condition-format-control e) (simple-condition-format-arguments e))))
 		      (:p ((:a :href "javascript:window.close()") "ok"))))))))))))
 
 (defclass upload-animation-handler (admin-only-handler page-handler)
@@ -194,15 +195,19 @@
 
 (defmethod handle ((handler upload-animation-handler) req)
   (with-query-params (req client)
-    (let ((uploaded-image-file (cdr (find "image-file" (request-uploaded-files req) :test #'equal :key #'car)))
-	  (uploaded-animation-file (cdr (find "animation-file" (request-uploaded-files req) :test #'equal :key #'car))))
+    (let* ((uploaded-files (request-uploaded-files req :all-info t))
+	   (uploaded-image (find "image-file" uploaded-files :test #'equal :key #'upload-name))
+	   (uploaded-animation (find "animation-file" uploaded-files :test #'equal :key #'upload-name)))
       (handler-case
 	  (progn
-	    (unless (and uploaded-image-file uploaded-animation-file)
+	    (unless (and uploaded-image uploaded-animation)
 	      (error "files not uploaded"))
-	    (cl-gd:with-image-from-file* (uploaded-image-file)
-	      (let* ((animation-blob (make-blob-from-file uploaded-animation-file 'blob))
-		     (image (make-store-image :name (pathname-name uploaded-image-file)
+	    (unless (find (upload-content-type uploaded-animation) '("application/x-shockwave-flash" "video/quicktime" "application/x-director") :test #'equal)
+	      (error "Invalid content type ~A - Please upload a Flash, Shockwave or Quicktime file" (upload-content-type uploaded-animation)))
+	    (cl-gd:with-image-from-file* ((upload-pathname uploaded-image))
+	      (let* ((animation-blob (make-blob-from-file (upload-pathname uploaded-animation) 'blob
+							  :type (upload-content-type uploaded-animation)))
+		     (image (make-store-image :name (pathname-name (upload-pathname uploaded-image))
 					      :class-name 'quickhoney-animation-image
 					      :keywords (list :upload :pixel :animation)
 					      :initargs `(:client ,client :animation ,animation-blob))))
@@ -226,7 +231,7 @@
 		     (:body
 		      (:h2 "Error during upload")
 		      (:p "Error during upload:")
-		      (:pre (:princ-safe e))
+		      (:p (:princ-safe (apply #'format nil (simple-condition-format-control e) (simple-condition-format-arguments e))))
 		      (:p ((:a :href "javascript:window.close()") "ok"))))))))))))
 
 (defclass upload-button-handler (admin-only-handler page-handler)
@@ -244,7 +249,7 @@
 			 (not (equal "" subdirectory)))
 	      (error "no subcategory selected, upload not accepted"))
 	    (unless uploaded-file
-	      (error "no file uploaded in upload handler"))
+	      (error "no file uploaded"))
 	    (cl-gd:with-image-from-file* (uploaded-file)
 	      (unless (and (eql 208 (cl-gd:image-width))
 			   (eql 208 (cl-gd:image-height)))
@@ -273,5 +278,5 @@
 		     (:body
 		      (:h2 "Error during upload")
 		      (:p "Error during upload:")
-		      (:pre (:princ-safe e))
+		      (:p (:princ-safe (apply #'format nil (simple-condition-format-control e) (simple-condition-format-arguments e))))
 		      (:p ((:a :href "javascript:window.close()") "ok"))))))))))))

Modified: trunk/projects/quickhoney/src/image.lisp
===================================================================
--- trunk/projects/quickhoney/src/image.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/src/image.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,6 +1,6 @@
 (in-package :quickhoney)
 
-(define-persistent-class quickhoney-image (store-image)
+(define-persistent-class quickhoney-image (store-image rss-item)
   ((client :update :initform ""
 	   :index-type hash-index :index-initargs (:test #'equal)
 	   :index-reader images-for-client
@@ -20,5 +20,34 @@
 	    (store-object-remove-keywords image 'bknr.web::keywords '(:import)))
 	(get-keywords-intersection-store-images '(:import))))
 
+(defmethod rss-item-channel ((item quickhoney-image))
+  "quickhoney")
+
+(defmethod rss-item-title ((image quickhoney-image))
+  (store-image-name image))
+
+(defmethod rss-item-description ((image quickhoney-image))
+  (format nil "~A~@[ (Client: ~A)~]" (store-image-name image) (quickhoney-image-client image)))
+
+(defmethod rss-item-link ((image quickhoney-image))
+  (make-image-link image))
+
+(defmethod rss-item-guid ((image quickhoney-image))
+  (make-image-link image))
+
+(defmethod quickhoney-image-category ((image quickhoney-image))
+  (first (intersection (store-image-keywords image) '(:pixel :vector :photo :contact))))
+
+(defmethod quickhoney-image-subcategory ((image quickhoney-image))
+  (first (set-difference (store-image-keywords image) '(:pixel :vector :photo :button :contact :published :upload))))
+
+(defmethod make-image-link ((image quickhoney-image))
+  (format nil "http://quickhoney.com/index?jumpto=~(~A/~A~)/~A"
+	  (quickhoney-image-category image) (quickhoney-image-subcategory image) (store-image-name image)))
+
 (define-persistent-class quickhoney-animation-image (quickhoney-image)
-  ((animation :update)))
\ No newline at end of file
+  ((animation :update)))
+
+(defmethod destroy-object :before ((image quickhoney-animation-image))
+  (delete-object (quickhoney-animation-image-animation image)))
+

Modified: trunk/projects/quickhoney/src/load.lisp
===================================================================
--- trunk/projects/quickhoney/src/load.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/src/load.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -3,6 +3,6 @@
 (asdf:oos 'asdf:load-op :quickhoney)
 (asdf:oos 'asdf:load-op :swank)
 
-(swank::create-swank-server 4008 :spawn #'swank::simple-announce-function t)
+(swank::create-swank-server 4085 :spawn #'swank::simple-announce-function t)
 
 (mp::startup-idle-and-top-level-loops)

Deleted: trunk/projects/quickhoney/src/mods.lisp
===================================================================
--- trunk/projects/quickhoney/src/mods.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/src/mods.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,17 +0,0 @@
-(in-package :quickhoney)
-
-(setq *images* (get-keywords-intersection-store-images '(:city)))
-
-(with-transaction (:korrektur)
-  (dolist (image *images*)
-    (setf (store-image-keywords image) (remove :city (store-image-keywords image)))
-    (pushnew :landscape (store-image-keywords image))))
-
-(import-image "/home/hans/type-t-shirt.png" :keywords '(:type) :keywords-from-dir nil)
-
-(with-transaction (:korrektur)
-  (dolist (image (remove-if-not #'(lambda (image) (scan "shirt" (store-image-name image))) (class-instances 'quickhoney-image)))
-    (setf (store-image-keywords image) (remove :special (store-image-keywords image)))
-    (push :t-shirt (store-image-keywords image))))
-
-(import-image "/home/hans/contact-peter-nana.png" :keywords '(:type) :keywords-from-dir nil)
\ No newline at end of file

Modified: trunk/projects/quickhoney/src/packages.lisp
===================================================================
--- trunk/projects/quickhoney/src/packages.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/src/packages.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -29,6 +29,7 @@
 	:bknr.datastore
 	:bknr.indices
 	:bknr.images
+	:bknr.rss
 	:quickhoney.config
 	:net.aserve
 	:xhtml-generator)

Deleted: trunk/projects/quickhoney/src/screenrc
===================================================================
--- trunk/projects/quickhoney/src/screenrc	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/src/screenrc	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1 +0,0 @@
-screen -t lisp lisp -core cmucl.core -load load.lisp

Deleted: trunk/projects/quickhoney/src/start-quickhoney-screen.sh
===================================================================
--- trunk/projects/quickhoney/src/start-quickhoney-screen.sh	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/src/start-quickhoney-screen.sh	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-
-TERM=xterm
-SHELL=/bin/tcsh
-HOME=/home/hans
-PATH=/home/hans/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
-
-export TERM SHELL HOME PATH
-dir=$HOME/bknr-svn/projects/quickhoney/src
-
-cd $dir
-sudo -u hans screen -m -d -c $dir/screenrc

Modified: trunk/projects/quickhoney/src/webserver.lisp
===================================================================
--- trunk/projects/quickhoney/src/webserver.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/src/webserver.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -10,6 +10,7 @@
 
   (unpublish :all t)
 
+  (setf bknr.web::*upload-file-size-limit* (* 30 1024 1024))
   (make-instance 'website
 		 :name "Quickhoney CMS"
 		 :handler-definitions `(("/random-image" random-image-handler)
@@ -33,7 +34,7 @@
 					("/favicon.ico" file-handler
 					 :destination ,(unix-namestring (merge-pathnames #p"static/favicon.ico" *website-directory*))
 					 :content-type "application/x-icon"))
-		 :modules '(user images stats)
+		 :modules '(user images)
 		 :admin-navigation '(("user" . "/user/")
 				     ("images" . "/edit-images")
 				     ("import" . "/import")

Modified: trunk/projects/quickhoney/website/static/javascript.js
===================================================================
--- trunk/projects/quickhoney/website/static/javascript.js	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/website/static/javascript.js	2006-10-24 21:07:42 UTC (rev 2045)
@@ -152,9 +152,10 @@
 
     show_cms_window("image_deleted_form");
     current_image = null;
+    document.getElementById("image_detail").innerHTML = '';
     if (current_directory == 'quickhoney') {
 	load_button_images();
-	setTimeout("if (current_directory == 'quickhoney') { show_cms_window('edit_quickhoney_form'); }", 2000);
+	setTimeout("if (current_directory == 'quickhoney') { show_cms_window('edit_quickhoney_form'); } else if (current_directory == 'contact') { show_cms_window('edit_contact_form'); }", 2000);
     } else {
 	setTimeout("if (!current_image) { show_cms_window('upload_form'); }", 2000);
 	do_query();
@@ -230,7 +231,20 @@
     document.getElementById("browse").style.visibility = 'hidden';
     document.getElementById("results").style.visibility = 'visible';
 
-    display_thumbnail_page();
+    if (document.show_picture) {
+	debug('directly jump to ' + document.show_picture);
+	for (var i = 0; i < query_result.length; i++) {
+	    debug('got: ' + query_result[i].name + ' want ' + document.show_picture);
+	    if (query_result[i].name == document.show_picture) {
+		debug('name: ' + query_result[i].name);
+		display_image(i);
+		break;
+	    }
+	}
+	document.show_picture = null;
+    } else {
+	display_thumbnail_page();
+    }
 
     display_path();
 }
@@ -365,6 +379,12 @@
 	       ['000000', 'ffffff', '9900ff'],
 	       function() {
 		   footer_hide();
+
+		   if (button_images['contact/contact']) {
+		       document.getElementById("contactimage").src = button_images['contact/contact'];
+		   }
+
+		   current_directory = 'contact';
 	       });
 
 function preload_menu_images() {
@@ -424,6 +444,8 @@
     if (logged_in) {
 	if (current_directory == "quickhoney") {
 	    show_cms_window("edit_quickhoney_form");
+	} else if (current_directory == "contact") {
+	    show_cms_window("edit_contact_form");
 	} else if (current_directory && current_subdirectory) {
 	    if (current_image) {
 		show_cms_window('edit_form');
@@ -456,6 +478,7 @@
     current_directory = pagename;
     current_subdirectory = null;
     current_image = null;
+    document.getElementById("image_detail").innerHTML = '';
 
     // Update path display
     display_path();
@@ -546,6 +569,22 @@
     }
 }
 
+/* contact image */
+
+function contact_loaded(image) {
+
+    debug('contact_loaded - image is ' + image + ' width: ' + image.width);
+
+    reveal_image(image);
+
+    if (logged_in) {
+	var current_contact_image = image.src.substring(image.src.indexOf('/image/') + 7);
+	if (current_contact_image != 'trans') {
+	    document.getElementById("delete_contactimage_form_element").setAttribute("action", "/edit-image-js/" + current_contact_image);
+	}
+    }
+}
+
 /* directory - first level category */
 
 var button_images = [];
@@ -555,11 +594,22 @@
     button_images = _button_images;
 
     if (current_directory == 'quickhoney'
+	|| current_directory == 'contact'
 	|| (document.getElementById("homeimage").src.indexOf("trans") != -1)) {
 
 	document.getElementById("homeimage").style.visibility = 'hidden';
 	document.getElementById("homeimage").src = button_images['home/home'];
+
+	document.getElementById("contactimage").src = button_images['contact/contact'];
     }
+
+    if (document.jump_to) {
+	var components = document.jump_to.split("/");
+	document.jump_to = null;
+	show_page(components[0]);
+	subdirectory(components[1]);
+	document.show_picture = components[2];
+    }
 }
 
 function load_button_images() {
@@ -568,7 +618,8 @@
 							       + '/home/home'
 							       + '/pixel/' + directory_button['pixel'].join(',')
 							       + '/vector/' + directory_button['vector'].join(',')
-							       + '/photo,000000/' + directory_button['photo'].join(','));
+							       + '/photo,000000/' + directory_button['photo'].join(',')
+							       + '/contact/contact');
 }
 
 function directory(directory_name) {
@@ -580,6 +631,7 @@
     current_directory = directory_name;
     current_subdirectory = false;
     current_image = false;
+    document.getElementById("image_detail").innerHTML = '';
     
     footer_up();
 
@@ -621,6 +673,7 @@
     footer_down();
 
     current_image = false;
+    document.getElementById("image_detail").innerHTML = '';
 
     query_imagedb(current_directory, subdirectory);
 
@@ -884,6 +937,7 @@
 
     current_directory = 'clients';
     current_image = null;
+    document.getElementById("image_detail").innerHTML = '';
     subdirectory('nicejobs');
 }
 
@@ -984,6 +1038,12 @@
 	show_cms_window("login_form");
     }
 
+    if (document.location.href.indexOf("jumpto=") != -1) {
+	var jump_to = document.location.href.replace(/.*jumpto=/, "");
+	jump_to = jump_to.replace(/[&#].*/, "");
+	document.jump_to = jump_to;
+    }
+
     buttons = document.getElementById("directory").getElementsByTagName('img');
     button_links = document.getElementById("directory").getElementsByTagName('a');
 

Deleted: trunk/projects/quickhoney/website/templates/frontpage.bknr
===================================================================
--- trunk/projects/quickhoney/website/templates/frontpage.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/website/templates/frontpage.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:quickhoney="http://quickhoney.com"
-  >
-	<head>
-		<link rel="stylesheet" href="/static/styles.css" />
-		<script src="/static/javascript.js" type="text/javascript"><!-- x -->	
-		</script> 
-		<title>QuickHoney - Nana Rausch + Peter Stemmler</title>
-	</head>
-
-	<body id="quickhoney">
-               <div id="hidden-vcard">
-                       <h1>QuickHoney Illustrations</h1><br />
-                       <h1>Peter Stemmler</h1>Phone: 646.270.5562<br />
-                       <h1>Nana Rausch</h1>Phone 646.270.5592<br />
-                       Studio for Illustration, New York, Portfolio, Email<br />
-                </div>
-
-		<table border="0" width="100%">
-			<tr height="200">
-				<td height="200" colspan="2">
-					<img src="/image/trans" />
-				</td>
-			</tr>
-			<tr>
-				<td align="center">
-					<a href="#" onclick="frontpage()">
-						<img border="0" src="/image/Startscreen" width="438" height="67" />
-					</a>
-				</td>
-			</tr>
-			<tr>
-				<td align="center">
-					<a href="#" onclick="frontpage()">
-						<img border="0" src="/image/EnterSite" width="116" height="18" />
-						<img border="0" src="/image/trans" width="70" height="1"/>
-					</a>
-				</td>
-			</tr>
-			<tr height="200">
-				<td height="200">
-					<img src="/image/trans" />
-				</td>
-			</tr>
-		</table>
-		<br />
-		<div align="center">
-			Site requires Firefox, Safari or Internet Explorer and Javascript.
-		</div>
-	</body>
-</html>

Copied: trunk/projects/quickhoney/website/templates/frontpage.xml (from rev 2044, branches/xml-class-rework/projects/quickhoney/website/templates/frontpage.xml)

Deleted: trunk/projects/quickhoney/website/templates/image-detail.bknr
===================================================================
--- trunk/projects/quickhoney/website/templates/image-detail.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/website/templates/image-detail.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  >
-	<head>
-		<link rel="stylesheet" href="/static/styles.css" />
-		<script src="/static/javascript.js" type="text/javascript"><!-- x -->	
-		</script> 
-		<title>QuickHoney image</title>
-	</head>
-	<body id="imagedetail">
-		<div id="logo">
-			<a href="javascript:window.close()">
-				<img src="/image/quickhoney" id="the_logo" name="logo" border="0" />
-			</a>
-		</div>
-
-		<div id="image">
-			<a href="javascript:window.close()">
-				<img src="/image/trans" id="the_image" name="image" border="0" />
-			</a>
-		</div>
-	</body>
-	<script language="javascript">
-		load_image();
-	</script>
-</html>
\ No newline at end of file

Copied: trunk/projects/quickhoney/website/templates/image-detail.xml (from rev 2044, branches/xml-class-rework/projects/quickhoney/website/templates/image-detail.xml)

Deleted: trunk/projects/quickhoney/website/templates/index.bknr
===================================================================
--- trunk/projects/quickhoney/website/templates/index.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/website/templates/index.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,321 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:quickhoney="http://quickhoney.com"
-  >
-	<head>
-		<link rel="stylesheet" href="/static/styles.css" />
-		<script src="/static/javascript.js" type="text/javascript"><!-- x -->	
-		</script> 
-		<title>QuickHoney</title>
-	</head>
-
-	<body id="quickhoney">
-
-		<a onclick="show_page('quickhoney')" href="#">
-			<img alt="quickhoney" class="menu" id="m_quickhoney" src="/image/quickhoney" />
-		</a>
-		<a onclick="show_page('pixel')" href="#">
-			<img alt="pixel" class="menu" id="m_pixel" src="/image/pixel" />
-		</a>
-		<a onclick="show_page('vector')" href="#">
-			<img alt="vector" class="menu" id="m_vector" src="/image/vector" />
-		</a>
-		<a onclick="show_page('photo')" href="#">
-			<img alt="photo" class="menu" id="m_photo" src="/image/photo" />
-		</a>
-		<a onclick="show_page('clients')" href="#">
-			<img alt="clients" class="menu" id="m_clients" src="/image/clients" />
-		</a>
-		<a onclick="show_page('contact')" href="#">
-			<img alt="contact" class="menu" id="m_contact" src="/image/contact" />
-		</a>
-
-		<p id="path" class="text"> </p>
-		<p id="version" class="text"><quickhoney:version-and-last-change /></p>
-
-		<div id="elements">
-			<div id="quickhoney">
-				<img alt="quickhoney" class="inherited_image" id="homeimage" src="/image/trans" onload="home_loaded(this);" />
-			</div>
-	
-			<div id="directory">
-				<a href="#">
-					<img alt="button" class="button" id="button0" onload="reveal_image(this);" src="/image/trans" />
-				</a>
-				<a href="#">
-					<img alt="button" class="button" id="button1" onload="reveal_image(this);" src="/image/trans" />
-				</a>
-				<a href="#">
-					<img alt="button" class="button" id="button2" onload="reveal_image(this);" src="/image/trans" />
-				</a>
-				<a href="#">
-					<img alt="button" class="button" id="button3" onload="reveal_image(this);" src="/image/trans" />
-				</a>
-				<a href="#">
-					<img alt="button" class="button" id="button4" onload="reveal_image(this);" src="/image/trans" />
-				</a>
-				<a href="#">
-					<img alt="button" class="button" id="button5" onload="reveal_image(this);" src="/image/trans" />
-				</a>
-			</div>
-	
-			<div id="results">
-				<p id="page_navbar" class="text">
-				</p>
-	
-				<p id="result_page_count" class="text">
-				</p>
-	
-				<div id="thumbnails">
-				</div>
-			</div>
-	
-			<div id="browse">
-				<span id="image_navbar" class="text">
-				</span>
-				<span id="full_click" class="text">
-				</span>
-	
-				<span id="results_navbar" class="text">
-					<span id="back_to_results"><a onclick="back_to_results()" href="#">back to results</a></span>
-					<span id="result_image_count"> <!-- may not be empty -->
-					</span>
-				</span>
-	
-				<div id="image_detail">
-				</div>
-	
-				<div id="metadata" class="text">
-					(not available)
-				</div>
-			</div>
-	
-			<div id="clients">
-				<a href="#" onclick="return nice_jobs();">
-					<img id="jobs-banner" src="/random-image/button/jobs" border="0" />
-				</a>
-				<img id="clients-type" src="/image/type-niceclients" />
-				<p id="client_names">
-				</p>
-			</div>
-	
-			<div id="contact">
-				<div id="contact-bigimage">
-					<img src="/image/contact-peter-nana" />
-				</div>
-				<img class="contact" src="/image/type_contact_email" />
-				<p class="contact">
-					Peter Stemmler: <a href="mailto:p at quickhoney.com">p at quickhoney.com</a><br />
-					Nana Rausch: <a href="mailto:n at quickhoney.com">n at quickhoney.com</a>
-				</p>
-				<img class="contact" src="/image/type_contact_phone" />
-				<p class="contact">
-					Peter Stemmler: 646.270.5562<br />
-					Nana Rausch: 646.270.5592
-				</p>
-				<img class="contact" src="/image/type_contact_address" />
-				<p class="contact">
-					QuickHoney - New York<br />
-					536 Sixth Avenue, 2nd&3rd Floor<br />
-					New York, NY 10011<br />
-					USA <br />
-				</p>
-			</div>
-	
-			<div id="footer" class="text">
-				©1998-2006 QuickHoney Nana Rausch & Peter Stemmler. No part of
-				this website may be reproduced in any manner without permission.
-				Programming by Hübner/Odendahl <a href="http://headcraft.de/" target="_new">
-				headcraft</a>
-			</div>
-		</div>
-
-		<!-- CMS elements -->
-
-		<div id="cms">
-			<div id="upload_form" class="cms_form">
-				<form id="upload_form_element" action="/upload-image" method="post"
-						enctype="multipart/form-data" target="upload_result" onsubmit="do_upload(this.target);">
-					<div class="cms_title">Upload new image</div>
-					<p class="cms">
-						Category: <b><span id="upload_category"> </span></b><br /><br />
-						<input type="file" name="image-file" /><br />
-					</p>
-					<p class="cms">
-						Client:<br />
-						<input type="text" id="upload_client" name="upload_client" value="" /><br />
-						<div id="upload_client_select">
-						</div>
-					</p>
-					<p class="cms">
-						<input type="submit" name="upload" value="upload" />
-					</p>
-				</form>
-			</div>
-	
-			<div id="pixel_button_upload_form" class="cms_form">
-				<form action="/upload-button" method="post"
-						enctype="multipart/form-data" target="upload_result" onsubmit="do_button_upload(this.target);">
-					<input type="hidden" name="directory" value="pixel" />
-					<div class="cms_title">Upload new button</div>
-					<p class="cms">
-						Category:
-						<select name="subdirectory" size="1">
-							<option selected="selected"></option>
-							<option>birdview</option>
-							<option>parts</option>
-							<option>icons</option>
-							<option>editorial</option>
-							<option>animation</option>
-							<option>smallworld</option>
-						</select>
-						<br /><br />
-						<input type="file" name="image-file" /><br />
-					</p>
-					<p class="cms">
-						<input type="submit" name="upload" value="upload" />
-					</p>
-				</form>
-			</div>
-	
-			<div id="upload_animation_form" class="cms_form">
-				<form id="upload_form_element" action="/upload-animation" method="post"
-						enctype="multipart/form-data" target="upload_result" onsubmit="do_upload(this.target);">
-					<div class="cms_title">Upload new animatoin</div>
-					<p class="cms">
-						Image:<br />
-						<input type="file" name="image-file" /><br />
-						Animation (Flash File):<br />
-						<input type="file" name="animation-file" /><br />
-					</p>
-					<p class="cms">
-						Client:<br />
-						<input type="text" id="upload_client" name="upload_client" value="" /><br />
-						<div id="upload_animation_client_select">
-						</div>
-					</p>
-					<p class="cms">
-						<input type="submit" name="upload" value="upload" />
-					</p>
-				</form>
-			</div>
-	
-			<div id="edit_form" class="cms_form">
-				<form id="edit_form_element" action="/edit-image-js" target="edit_iframe" method="post"
-					onsubmit="return do_edit();">
-					<div class="cms_title">Edit image</div>
-					<p class="cms">
-						Client:<br />
-						<input type="text" id="edit_client" name="client" value="" /><br />
-						<div id="edit_client_select">
-						</div>
-					</p>
-					<p class="cms">
-						<input type="submit" name="action" value="edit" />
-						<input type="submit" name="action" value="delete" onclick="return confirm('Really delete this image?');" />
-					</p>
-				</form>
-			</div>
-	
-			<div id="edit_quickhoney_form" class="cms_form">
-				<div class="cms_title">Upload home image</div>
-				<form action="/upload-image/home/button" method="post"
-						enctype="multipart/form-data" target="upload_result" onsubmit="do_upload(this.target);">
-					<p class="cms">
-						<input type="file" name="image-file" /><br />
-					</p>
-					<p class="cms">
-						<input type="submit" name="action" value="upload" />
-					</p>
-				</form>
-				<div class="cms_title">Delete this home image</div>
-				<form id="delete_homeimage_form_element" action="/edit-image-js" target="edit_iframe" method="post">
-					<input type="submit" name="action" value="delete" onclick="return confirm('Really delete this home image?');" />
-				</form>
-			</div>
-	
-			<div id="saving_edits_form" class="cms_form">
-				<div class="cms_title">Saving Edits</div>
-				<p class="cms">
-					Your request is being processed.
-				</p>
-			</div>
-	
-			<div id="image_edited_form" class="cms_form">
-				<div class="cms_title">Edits saved</div>
-				<p class="cms">
-					Your image edits have been saved.
-				</p>
-			</div>
-	
-			<div id="image_deleted_form" class="cms_form">
-				<div class="cms_title">Image deleted</div>
-				<p class="cms">
-					The image has been deleted.
-				</p>
-			</div>
-	
-			<div id="login_form" class="cms_form">
-				<form method="post" name="login_form" onsubmit="return send_login();">
-					<b>Login</b> <br />
-					Username<br />
-					<input type="text" name="username" /><br />
-					Password<br />
-					<input type="password" name="password" /><br /><br />
-					<a href="#" onclick="send_login();" class="cmslink">login</a>
-					<input class="invisibleSubmit" type="submit" />
-				</form>
-			</div>
-
-			<div id="login_failure" class="cms_form">
-				<b>Login failed</b> <br />
-				Please check your user name and password.
-			</div>
-		
-			<div id="login_status" class="cms_form">
-				<p>You are logged in as <b id="username"> </b></p>
-				<p><a href="#" onclick="send_logout();" class="cmslink">logout</a></p>
-			</div>
-	
-		</div>
-	
-		<div id="debugger" class="debugger">
-			<b>Debugger</b> <br /> <br />
-			<a id="clear_debug_window" href="#" onclick="clear_debug_window()" class="debugger">clear debug window</a><br /> <br />
-			<p id="debugger_text" class="debugger">
-			</p>
-		</div>
-
-		<p id="cue">
-			query database
-		</p>
-
-		<div id="query_frame" class="hidden_iframe">
-			<iframe src="about:blank" height="0" width="0" name="query_iframe"> </iframe>
-		</div>
-
-		<div id="buttonload_frame" class="hidden_iframe">
-			<iframe src="about:blank" height="0" width="0" name="buttonload_iframe"> </iframe>
-		</div>
-
-		<div id="clients_frame" class="hidden_iframe">
-			<iframe src="/clients-js" height="0" width="0" name="clients_iframe"> </iframe>
-		</div>
-
-		<div id="login_frame" class="hidden_iframe">
-			<iframe src="/login-js" height="0" width="0" name="login_iframe"> </iframe>
-		</div>
-
-		<div id="edit_frame" class="hidden_iframe">
-			<iframe src="about:blank" height="0" width="0" name="edit_iframe"> </iframe>
-		</div>
-
-		<script language="javascript" type="text/javascript">
-			init();
-		</script>
-	</body>
-</html>

Copied: trunk/projects/quickhoney/website/templates/index.xml (from rev 2044, branches/xml-class-rework/projects/quickhoney/website/templates/index.xml)

Deleted: trunk/projects/quickhoney/website/templates/user-error.bknr
===================================================================
--- trunk/projects/quickhoney/website/templates/user-error.bknr	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/quickhoney/website/templates/user-error.bknr	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:bknr="http://bknr.net"
-  xmlns:lisp-ecoop05="http://lisp-ecoop05.bknr.net"
-  xmlns:menu="http://bknr.net/menu"
-  >
-Your request could not be processed because an error occured:
-<pre>
-$(error-message)
-</pre>
-</html>
\ No newline at end of file

Copied: trunk/projects/quickhoney/website/templates/user-error.xml (from rev 2044, branches/xml-class-rework/projects/quickhoney/website/templates/user-error.xml)

Deleted: trunk/projects/raw-data/btscanner/btscanner.ncb
===================================================================
(Binary files differ)

Modified: trunk/projects/raw-data/mcp/hameg-server.pl
===================================================================
--- trunk/projects/raw-data/mcp/hameg-server.pl	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/projects/raw-data/mcp/hameg-server.pl	2006-10-24 21:07:42 UTC (rev 2045)
@@ -13,6 +13,8 @@
 die "can't open hameg port $comPort: $!\n" unless ($hameg);
 $hameg->autoflush(1);
 
+system("stty 38400 icanon cread cs8 -parenb < $comPort");
+
 while (1) {
     my $mcp = IO::Socket::INET->new($mcpAddress);
 

Deleted: trunk/projects/raw-data/playwnd/playwnd.ncb
===================================================================
(Binary files differ)

Deleted: trunk/projects/raw-data/streamcapture/streamcapture.ncb
===================================================================
(Binary files differ)

Copied: trunk/thirdparty/cffi (from rev 2044, branches/xml-class-rework/thirdparty/cffi)

Copied: trunk/thirdparty/cl-base64 (from rev 2044, branches/xml-class-rework/thirdparty/cl-base64)

Modified: trunk/thirdparty/cl-gd/Makefile
===================================================================
--- trunk/thirdparty/cl-gd/Makefile	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cl-gd/Makefile	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,7 +1,7 @@
 # this should work for FreeBSD and most Linux distros
 
 cl-gd-glue.so:
-	gcc -fPIC -c cl-gd-glue.c
+	gcc -I/usr/local/include -fPIC -c cl-gd-glue.c
 	ld -shared -lgd -lz -lpng -ljpeg -lfreetype -lm -lc cl-gd-glue.o -o cl-gd-glue.so -L/usr/local/lib
 	rm cl-gd-glue.o
 

Copied: trunk/thirdparty/cl-mime/README (from rev 2044, branches/xml-class-rework/thirdparty/cl-mime/README)

Copied: trunk/thirdparty/cl-mime/cl-mime.asd (from rev 2044, branches/xml-class-rework/thirdparty/cl-mime/cl-mime.asd)

Modified: trunk/thirdparty/cl-mime/classes.lisp
===================================================================
--- trunk/thirdparty/cl-mime/classes.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cl-mime/classes.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -47,7 +47,16 @@
    (content-transfer-encoding
     :accessor content-transfer-encoding
     :initarg :encoding
-    :initform "7bit")
+    :initform :7bit
+    :documentation
+    "Encoding to use when printing the MIME content.
+May be :7BIT :BASE64 or :QUOTED-PRINTABLE")
+   (content-encoding
+    :accessor content-encoding
+    :initarg :content-encoding
+    :initform :7bit
+    :documentation "Encoding the MIME content is currently in.
+May be :7BIT :BASE64 or :QUOTED-PRINTABLE")
    (content-disposition
     :accessor content-disposition
     :initarg :disposition
@@ -98,13 +107,11 @@
    (prologue
     :accessor prologue
     :initform nil
-    :initarg :prologue
-    :type string)
+    :initarg :prologue)
    (epilogue
     :accessor epilogue
     :initform nil
-    :initarg :epilogue
-    :type string))
+    :initarg :epilogue))
   (:documentation "Multipart Mime Object Representation"))
     
 ;;; This boundary contains text which should never appear in the

Copied: trunk/thirdparty/cl-mime/encoding.lisp (from rev 2044, branches/xml-class-rework/thirdparty/cl-mime/encoding.lisp)

Deleted: trunk/thirdparty/cl-mime/fundamentals.lisp
===================================================================
--- trunk/thirdparty/cl-mime/fundamentals.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cl-mime/fundamentals.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,58 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;; fundamentals.lisp: Package definition and any globals
-;;;; Copyright (C) 2004 Robert Marlow <bobstopper at bobturf.org>
-;;;;
-;;;; This library is free software; you can redistribute it and/or
-;;;; modify it under the terms of the GNU Library General Public
-;;;; License as published by the Free Software Foundation; either
-;;;; version 2 of the License, or (at your option) any later version.
-;;;;
-;;;; This library 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
-;;;; Library General Public License for more details.
-;;;;
-;;;; You should have received a copy of the GNU Library General Public
-;;;; License along with this library; if not, write to the
-;;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;;; Boston, MA  02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
-(defpackage :mime
-  (:documentation "A package for constructing MIME objects for printing and
-parsing MIME formatted strings or streams.")
-  (:nicknames :cl-mime)
-  (:use :cl :kmrcl :cl-ppcre)
-  (:shadow :read-stream-to-string)
-  (:export :text-mime
-	   :multipart-mime
-	   :mime
-	   :make-content-id
-	   :content-type
-	   :content-subtype
-	   :content-type-parameters
-	   :content-id
-	   :content-description
-	   :content-transfer-encoding
-	   :content-disposition
-	   :content-disposition-parameters
-	   :mime-version
-	   :charset
-	   :boundary
-	   :prologue
-	   :epilogue
-	   :content
-	   :get-header
-	   :get-mime-headers
-	   :get-content-type-parameter
-	   :get-content-disposition-parameter
-	   :print-headers
-	   :header-value
-	   :header-parms
-	   :header-comments
-	   :print-mime
-	   :parse-mime))
-
-(in-package :mime)

Modified: trunk/thirdparty/cl-mime/headers.lisp
===================================================================
--- trunk/thirdparty/cl-mime/headers.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cl-mime/headers.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -51,16 +51,16 @@
 
 
 (defmethod get-header ((mime-obj mime) (header (eql :content-disposition)))
-  (aif (slot-value mime-obj (intern (string header) :mime))
-       (cons header
-	     (format nil "~A~A"
-		     (content-disposition mime-obj)
-		     (format nil "~{~{;~%~5,5T~A=\"~A\"~}~}"
-			     (mapcar
-			      (lambda (parm-pair)
-				(cons (string-downcase (symbol-name (car parm-pair)))
-				 (cdr parm-pair)))
-			      (content-disposition-parameters mime-obj)))))))
+  (when (content-disposition mime-obj)
+    (cons header
+	  (format nil "~A~A"
+		  (content-disposition mime-obj)
+		  (format nil "~{~{;~%~5,5T~A=\"~A\"~}~}"
+			  (mapcar
+			   (lambda (parm-pair)
+			     (cons (string-downcase (symbol-name (car parm-pair)))
+				   (cdr parm-pair)))
+			   (content-disposition-parameters mime-obj)))))))
 
 
 (defmethod get-header ((mime-obj mime) (header symbol))

Deleted: trunk/thirdparty/cl-mime/mime.asd
===================================================================
--- trunk/thirdparty/cl-mime/mime.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cl-mime/mime.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,41 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;; mime.asd: System Definition
-;;;; Copyright (C) 2004 Robert Marlow <bobstopper at bobturf.org>
-;;;;
-;;;; This library is free software; you can redistribute it and/or
-;;;; modify it under the terms of the GNU Library General Public
-;;;; License as published by the Free Software Foundation; either
-;;;; version 2 of the License, or (at your option) any later version.
-;;;;
-;;;; This library 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
-;;;; Library General Public License for more details.
-;;;;
-;;;; You should have received a copy of the GNU Library General Public
-;;;; License along with this library; if not, write to the
-;;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;;; Boston, MA  02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
-(defpackage :mime-system
-  (:use :asdf :cl))
-
-(in-package :mime-system)
-
-(defsystem :mime
-  :name "MIME"
-  :author "Robert Marlow <rob at bobturf.org>"
-  :version "0.3.0"
-  :maintainer "Robert Marlow <rob at bobturf.org>"
-  :depends-on (:kmrcl :cl-ppcre)
-  :serial t
-  :components
-  ((:file "fundamentals")
-   (:file "utilities")
-   (:file "classes")
-   (:file "headers")
-   (:file "parse-mime")
-   (:file "print-mime")))

Copied: trunk/thirdparty/cl-mime/package.lisp (from rev 2044, branches/xml-class-rework/thirdparty/cl-mime/package.lisp)

Modified: trunk/thirdparty/cl-mime/parse-mime.lisp
===================================================================
--- trunk/thirdparty/cl-mime/parse-mime.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cl-mime/parse-mime.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -29,8 +29,7 @@
 
 
 (defmethod parse-mime ((mime string) &optional headers)
-  (declare (ignore headers))
-  (parse-mime (make-string-input-stream mime)))
+  (parse-mime (make-string-input-stream mime) headers))
 
 
 (defmethod parse-mime ((mime stream) &optional headers)
@@ -56,19 +55,23 @@
 
       (if (equal mime-version "1.0")
 	
-	  (let ((mime-obj-gen
-		 (list
-		  mime-type
-		  :type content-type
-		  :subtype content-subtype
-					;		:parameters content-parm
-		  :encoding (cdr (assoc :content-transfer-encoding
-					headers))
-		  :description (cdr (assoc :content-description
-					   headers))
-		  :id (remove #\< (remove #\> (cdr (assoc :content-id headers))))
-		  :disposition content-disposition
-		  :disposition-parameters content-disposition-parm)))
+	  (let* ((encoding (intern (or (string-upcase 
+					(cdr (assoc :content-transfer-encoding
+						    headers)))
+				       "7BIT")
+				   :keyword))
+		 (mime-obj-gen
+		  (list
+		   mime-type
+		   :type content-type
+		   :subtype content-subtype
+		   :encoding encoding
+		   :content-encoding encoding
+		   :description (cdr (assoc :content-description
+					    headers))
+		   :id (remove #\< (remove #\> (cdr (assoc :content-id headers))))
+		   :disposition content-disposition
+		   :disposition-parameters content-disposition-parm)))
 	      
 	    (case mime-type
 	      ((text-mime)
@@ -289,3 +292,31 @@
 	       (setq end-type 'end-mime))))
      end-type)))
  
+
+(defparameter *mime-types-file* 
+  (make-pathname :directory '(:absolute "etc")
+		 :name "mime"
+		 :type "types"))
+
+
+(defun lookup-mime (pathname &optional mime-types-file)
+  "Takes a PATHNAME argument and uses MIME-TYPES-FILE (or the system 
+default) to determine the mime type of PATHNAME. Returns two values:
+the content type and the the content subtype"
+  (let ((extension (pathname-type pathname)))
+    (with-open-file
+	(mime (or mime-types-file *mime-types-file*) :direction :input)
+      (read-lines
+	  (line mime)
+	  ((register-groups-bind
+	       (extensions)
+	       ("^[^#\\s]+\\s+([^#]+)" line)
+	     (find extension (split "\\s+" extensions)
+		   :test #'string-equal))
+	   (if (eq line 'eof)
+	       (values "application" "octet-stream")
+	       (register-groups-bind
+		   (content-type content-subtype)
+		   ("^([^\/]+)\/([^\\s]+)" line)
+		 (values (or content-type "application")
+			 (or content-subtype "octet-stream")))))))))

Modified: trunk/thirdparty/cl-mime/print-mime.lisp
===================================================================
--- trunk/thirdparty/cl-mime/print-mime.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cl-mime/print-mime.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -30,10 +30,14 @@
 		    (format nil "~A: ~A~%"
 			    (if (eql :mime-version (car it))
 				"MIME-Version"
-			      (string-capitalize (symbol-name (car it))))
-			    (if (eql :content-id (car it))
-				(format nil "<~A>" (cdr it))
-			      (cdr it))))
+				(string-capitalize (symbol-name (car it))))
+			    (cond
+			      ((eql :content-id (car it))
+			       (format nil "<~A>" (cdr it)))
+			      ((eql :content-transfer-encoding (car it))
+			       (string-downcase (symbol-name (cdr it))))
+			      (t
+			       (cdr it)))))
        headers-out))
 
 
@@ -68,6 +72,7 @@
   (:documentation
    "Prints a mime object's contents, optionally with headers"))
 
+
 (defmethod print-mime (stream (mime-obj mime) headers-p version-p)
   (format stream "~A~A"
 	  (if headers-p
@@ -75,8 +80,8 @@
 			   (print-headers nil (get-mime-headers mime-obj)
 					  version-p)
 			   (string #\newline))
-	    "")
-	  (content mime-obj)))
+	      "")
+	  (encode-content mime-obj)))
 
 
 (defmethod print-mime (stream (mime-obj multipart-mime) headers-p version-p)

Modified: trunk/thirdparty/cl-mime/utilities.lisp
===================================================================
--- trunk/thirdparty/cl-mime/utilities.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cl-mime/utilities.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -47,3 +47,18 @@
 		   (,exit-clause t)
 		   (princ ,line-var ,string-stream)
 		   (terpri ,string-stream)))))
+
+
+;;; These macros stolen from KMRCL
+(defmacro aif (test then &optional else)
+  `(let ((it ,test))
+    (if it ,then ,else)))
+
+
+(defun ensure-keyword (name)
+  "Returns keyword for a name"
+  (etypecase name
+    (keyword name)
+    (string (nth-value 0 (intern (string-upcase name) :keyword)))
+    (symbol (nth-value 0 (intern (symbol-name name) :keyword)))))
+

Copied: trunk/thirdparty/cl-qprint (from rev 2044, branches/xml-class-rework/thirdparty/cl-qprint)

Modified: trunk/thirdparty/cxml/xml/unparse.lisp
===================================================================
--- trunk/thirdparty/cxml/xml/unparse.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/cxml/xml/unparse.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -482,6 +482,7 @@
   value)
 
 (defun cdata (data)
+  (maybe-emit-start-tag)
   (sax:start-cdata *sink*)
   (sax:characters *sink* (rod data))
   (sax:end-cdata *sink*)

Copied: trunk/thirdparty/iconv (from rev 2044, branches/xml-class-rework/thirdparty/iconv)

Modified: trunk/thirdparty/net.post-office/packages.lisp
===================================================================
--- trunk/thirdparty/net.post-office/packages.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/net.post-office/packages.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,6 +1,6 @@
 
 (defpackage :net.post-office
-  (:use #:cl #+allegro #:excl #-allegro #:acl-compat.excl)
+  (:use #:lisp #+allegro #:excl #-allegro #:acl-compat.excl)
   (:export
    ;; smtp
    #:send-letter

Modified: trunk/thirdparty/portableaserve/aserve/main.cl
===================================================================
--- trunk/thirdparty/portableaserve/aserve/main.cl	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/portableaserve/aserve/main.cl	2006-10-24 21:07:42 UTC (rev 2045)
@@ -23,7 +23,7 @@
 ;; Suite 330, Boston, MA  02111-1307  USA
 ;;
 ;;
-;; $Id: main.cl,v 1.2 2004/10/19 17:04:50 hans Exp $
+;; $Id$
 
 ;; Description:
 ;;   aserve's main loop
@@ -2258,6 +2258,8 @@
   ;; 2. name  - name of the item
   ;; 3. filename - if type is :file then this is the filename
   ;; 4. content-type - if type is :file this this is the content-type
+
+  ;; WHAT IS THIS IF IT IS NOT SHITTY CODE?  I MUST BE DREAMING!
   (if* (and (consp header) (consp (car header)))
      then (let ((cd (assoc :content-disposition header :test #'eq))
 		(ct (assoc :content-type header :test #'eq))

Modified: trunk/thirdparty/portableaserve/aserve/publish.cl
===================================================================
--- trunk/thirdparty/portableaserve/aserve/publish.cl	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/portableaserve/aserve/publish.cl	2006-10-24 21:07:42 UTC (rev 2045)
@@ -427,6 +427,7 @@
       ("text/vnd.flatland.3dml") ("text/vnd.fmi.flexstor") ("text/vnd.in3d.3dml")
       ("text/vnd.in3d.spot") ("text/vnd.latex-z") ("text/x-setext" "etx")
       ("text/xml" "xml" "xsl") ("video/mpeg" "mpeg" "mpg" "mpe")
+      ("image/svg+xml" "svg")
       ("video/quicktime" "qt" "mov") ("video/vnd.motorola.video")
       ("video/vnd.motorola.videop") ("video/vnd.vivo") ("video/x-msvideo" "avi")
       ("video/x-sgi-movie" "movie") ("x-conference/x-cooltalk" "ice")

Modified: trunk/thirdparty/uffi/ChangeLog
===================================================================
--- trunk/thirdparty/uffi/ChangeLog	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/ChangeLog	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,3 +1,116 @@
+2006-10-10 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.17
+	* src/functions.lisp: Patch from Edi Weitz for Lispworks 5/Linux
+	
+2006-09-02 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.16
+	* src/libraries.lisp: Add cygwin support
+	
+2006-08-13 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.15
+	* src/{objects,strings}.lisp: Add support for Lispworks 5 
+	thanks to patches from Bill Atkins 
+
+2006-07-04 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.14
+	* src/{objects,strings}.lisp: Apply patch from Edi Weitz
+
+2006-05-17 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.13 
+	* src/libraries.lisp: Revert buggy patch from Yaroslav Kavenchuk.
+
+2006-05-17 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.12 
+	* src/libraries.lisp: Patch from Yaroslav Kavenchuk to set
+	default drive letters on MS Windows.
+
+2006-05-11 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.11: Export new macro DEF-POINTER-VAR based on patch from
+	James Bielman to support defining variables on platforms which
+	support saving objects, such as openmcl
+
+2006-04-17 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.10: Commit patch from Gary King for openmcl's
+	feature list change
+
+2005-11-14 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.7
+	* src/strings.lisp: Add with-foreign-strings by James Biel
+	
+2005-11-14 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.6
+	* src/os.lisp: Remove getenv setter
+
+2005-11-07 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.5
+	* src/os.lisp: Add support for getenv getter and setter
+	
+2005-09-17 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.4
+	* src/objects.lisp: prepend _ character for entry
+	point on Allegro macosx, patch by Luis Oliveira
+	
+2005-07-05 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.5.0
+	* Remove vestigial LLGPL license notices as UFFI as been
+	BSD-licensed for several years.
+	
+2005-06-09 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.4.39
+	* tests/objects.lisp: Rename from pointers.lisp. 
+	Fix test CHPTR.4 as noted by Jorg Hohle
+	* src/objects.lisp: Remove default from ensure-char-integer
+	
+2005-06-09 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.4.38
+	* src/libraries.lisp: Commit patch from Edi Weitz to
+	allow plain filename library names to allow underlying
+	lisp implementation to find foreign libraries in the
+	locations known to the operating system.
+	* tests/cast.lisp: Add :module keyword as noted by Jorg Hohle.
+	* src/strings.lisp: Avoid multiple evaluation of input
+	parameters for macros as noted by Jorg Hohle.
+	
+2005-04-12 Kevin Rosenberg (kevin at rosenberg.net)
+	* Version 1.4.37
+	* src/strings.lisp: Fix variable name
+	
+2005-04-04 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/strings.lisp, src/aggregates.lisp: Support change in SBCL copy
+	function [Thanks for Nathan Froyd and Zach Beane]
+	
+2005-04-03 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/objects.lisp: Commit patch from James Bielman to add
+	def-foreign-var support for OpenMCL
+	
+2005-03-03 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/primitives.lisp: Add support for :union types
+	[patch from Cyrus Harmon]
+	* tests/union.lisp, tests/structs.lisp: Tests for
+	union and structure types [from Cyrus Harmon]
+	
+2005-02-22 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/primitives.lisp, src/strings.lisp: Better support 
+	for sb-unicode [from Yoshinori Tahara and R. Mattes]
+
+2005-01-22 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/primitives.lisp: Better support SBCL-AMD64
+	
+2004-11-08 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/strings.lisp: Better support sb-unicode
+	* tests/compress.lisp: Support sb-unicode
+	
+2004-10-07 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/objects.lisp: Add new function:
+	convert-from-foreign-usb8
+	
+2004-04-15 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/objects.lisp: Add new functions:
+	MAKE-POINTER and POINTER-ADDRESS
+
+2004-04-13 Kevin Rosenberg (kevin at rosenberg.net)
+	* src/string.lisp: Add new FOREIGN-STRING-LENGTH
+
 2003-08-15 Kevin Rosenberg (kevin at rosenberg.net)
 	* Added with-cast-pointer and def-foreign-var (patches submitted
 	by Edi Weitz). 

Modified: trunk/thirdparty/uffi/Makefile
===================================================================
--- trunk/thirdparty/uffi/Makefile	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/Makefile	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,13 +5,9 @@
 #  Programer:    Kevin M. Rosenberg, M.D.
 #  Date Started: Mar 2002
 #
-#  CVS Id:   $Id: Makefile,v 1.1 2004/06/23 08:27:10 hans Exp $
+#  CVS Id:   $Id$
 #
-# This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
-#
-# UFFI users are granted the rights to distribute and use this software
-# as governed by the terms of the Lisp Lesser GNU Public License
-# (http://opensource.franz.com/preamble.html), also known as the LLGPL.
+# This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 
 PKG:=uffi
 DEBPKG=cl-uffi

Modified: trunk/thirdparty/uffi/NEWS
===================================================================
--- trunk/thirdparty/uffi/NEWS	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/NEWS	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,3 +1 @@
-UFFI now passes all tests with SCL, SBCL, & OpenMCL in Debian.
-
-UFFI now uses ASDF system definition files.
+UFFI now supports AllegroCL AMD64

Modified: trunk/thirdparty/uffi/README
===================================================================
--- trunk/thirdparty/uffi/README	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/README	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,5 +1,5 @@
 Package:  UFFI (Universal Foreign Language Interface)
-Web site: http://uffi.med-info.com
+Web site: http://uffi.b9.com
 Author:   Kevin M. Rosenberg
 
 
@@ -14,7 +14,7 @@
 uffi features into the specific syntax of supported Common Lisp
 implementations.
 
-Currently, AllegroCL v6.1 (Linux and Microsoft Windows), Lispworks
-v4.2 (Linux and Microsoft Windows), and CMUCL are supported.
+Currently, AllegroCL (Linux and Microsoft Windows), Lispworks (Linux
+and Microsoft Windows), CMUCL, SBCL, and OpenMCL are supported.
 
 

Modified: trunk/thirdparty/uffi/TODO
===================================================================
--- trunk/thirdparty/uffi/TODO	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/TODO	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,5 +1,7 @@
 - Run test-suite on MCL port
 
+- Add OpenMCL support for with-cast-pointer and def-foreign-var
+
 - Add support for direct vector passing to and from foreign functions
    to avoid copying elements in and out of vector.
-b
+

Modified: trunk/thirdparty/uffi/benchmarks/allocation.lisp
===================================================================
--- trunk/thirdparty/uffi/benchmarks/allocation.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/benchmarks/allocation.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: allocation.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))

Modified: trunk/thirdparty/uffi/doc/Makefile
===================================================================
--- trunk/thirdparty/uffi/doc/Makefile	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/Makefile	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,13 +6,9 @@
 #  Programer:    Kevin M. Rosenberg
 #  Date Started: Mar 2002
 #
-#  CVS Id:   $Id: Makefile,v 1.1 2004/06/23 08:27:10 hans Exp $
+#  CVS Id:   $Id$
 #
-# This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
-#
-# UFFI users are granted the rights to distribute and use this software
-# as governed by the terms of the Lisp Lesser GNU Public License
-# (http://opensource.franz.com/preamble.html), also known as the LLGPL.
+# This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ##############################################################################
 
 DOCFILE_BASE_DEFAULT:=uffi
@@ -21,24 +17,42 @@
 
 # Standard docfile processing
 
-DEBIAN=$(shell expr "`cat /etc/issue`" : '.*Debian.*')
-SUSE=$(shell expr "`cat /etc/issue`" : '.*SuSE.*')
-REDHAT=$(shell expr "`cat /etc/issue`" : '.*RedHat.*')
+DEBIAN=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*Debian.*')
+UBUNTU=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*Ubuntu.*')
+SUSE=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*SuSE.*')
+SUSE91=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*SuSE Linux 9.1.*')
+REDHAT=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*Red Hat.*')
+MANDRAKE=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*Mandrake.*')
+DARWIN=$(shell expr "`uname -a`" : '.*Darwin.*')
 
-
 ifneq (${DEBIAN},0)
 OS:=debian
 else
-  ifneq (${SUSE},0)
-    OS=suse
-  else   
-    ifneq (${REDHAT},0)
-      OS=redhat
+  ifneq (${SUSE91},0)
+    OS=suse91
+  else
+    ifneq (${SUSE},0)
+      OS=suse
+    else   
+      ifneq (${REDHAT},0)
+        OS=redhat
+      else   
+        ifneq (${MANDRAKE},0)
+          OS=mandrake
+        else   
+          ifneq (${DARWIN},0)
+            OS=darwin
+          else  
+            ifneq (${UBUNTU},0)
+              OS=ubuntu
+            endif 
+          endif 
+        endif
+      endif
     endif
   endif
 endif
 
-
 ifndef DOCFILE_BASE
 DOCFILE_BASE=${DOCFILE_BASE_DEFAULT}
 endif

Modified: trunk/thirdparty/uffi/doc/bookinfo.xml
===================================================================
--- trunk/thirdparty/uffi/doc/bookinfo.xml	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/bookinfo.xml	2006-10-24 21:07:42 UTC (rev 2045)
@@ -24,8 +24,8 @@
   </author>
   
   <printhistory>
-    <simpara>$Id: bookinfo.xml,v 1.1 2004/06/23 08:27:10 hans Exp $</simpara>
-    <simpara>File $Date: 2004/06/23 08:27:10 $</simpara>
+    <simpara>$Id$</simpara>
+    <simpara>File $Date$</simpara>
   </printhistory>
   <copyright>
     <year>2002-2003</year>

Copied: trunk/thirdparty/uffi/doc/catalog-darwin.xml (from rev 2044, branches/xml-class-rework/thirdparty/uffi/doc/catalog-darwin.xml)

Copied: trunk/thirdparty/uffi/doc/catalog-mandrake.xml (from rev 2044, branches/xml-class-rework/thirdparty/uffi/doc/catalog-mandrake.xml)

Modified: trunk/thirdparty/uffi/doc/catalog-suse.xml
===================================================================
--- trunk/thirdparty/uffi/doc/catalog-suse.xml	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/catalog-suse.xml	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,7 +6,7 @@
 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
 
   <!-- The directory DTD and stylesheet files are installed under -->
-  <group  xml:base="file:///usr/share/sgml/" >
+  <group  xml:base="file:///usr/share/xml/" >
 
     <!-- Resolve DTD URL system ID to local file -->
     <rewriteSystem
@@ -30,13 +30,13 @@
     <!-- To resolve short stylesheet references -->
     <uri
         name="docbook_html.xsl"
-        uri="docbook/docbook-xsl/xhtml/docbook.xsl" />
+        uri="docbook/stylesheet/nwalsh/current/xhtml/docbook.xsl" />
     <uri 
         name="docbook_chunk.xsl"
-        uri="docbook/docbook-xsl/xhtml/chunk.xsl" />
+        uri="docbook/stylesheet/nwalsh/current/xhtml/chunk.xsl" />
     <uri
         name="docbook_fo.xsl"
-        uri="docbook/docbook-xsl/fo/docbook.xsl" />
+        uri="docbook/stylesheet/nwalsh/current/fo/docbook.xsl" />
 
   </group>
 

Copied: trunk/thirdparty/uffi/doc/catalog-suse90.xml (from rev 2044, branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse90.xml)

Copied: trunk/thirdparty/uffi/doc/catalog-suse91.xml (from rev 2044, branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse91.xml)

Copied: trunk/thirdparty/uffi/doc/catalog-ubuntu.xml (from rev 2044, branches/xml-class-rework/thirdparty/uffi/doc/catalog-ubuntu.xml)

Deleted: trunk/thirdparty/uffi/doc/html.tar.gz
===================================================================
--- trunk/thirdparty/uffi/doc/html.tar.gz	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/html.tar.gz	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,85 +0,0 @@
-‹ qZÃ?ì]ërÛ8²Î_û)p4u&ö–u¿ÙŽ­­Ä™ì¤*·Z;;s~‚HȆ"9¼HÖyš<êé@¤(‰ºYÊFžÊX¦ÈF£Ñ úë8FVõÅnjµV£ÛnÃïZ½Û®é¿£Ÿµn·Së´ÛõNýE­^¯µ»/HûÅ3ü„~@=B^|ccn/¸oÙ÷?èÏÇßõØ€¬‚ìbüëµZ§Õš7þ­v£•Œ»	÷7›ð‹ÔŽã¿óŸ›¿?,2fžÏû¶T¯ÔJ„Ù†crûñ¶ôþþsùò²}U®—ÈÉ6©åØì¶d;¥¿÷Noþëí织ÿùòAÅ!_¾¾ùðþŽ”ÊÕêÍ»jõíÃ[òçï? J<jû<€V¨U­þö©DJà p¯«ÕÉdR™4+Ž÷X}øgõ	iÕñaõ±hOVÌÀ,AË¢AàÜöosÈÔ¯®®äÓ¥Þ͐Q³w3b%xg™ýòñméαf凩ËJĐÝ–öTñÉWÄRÏgÁ­.„jï&àÅz_䔹©Ê?%}›Ž@8Ìf
O#ûÖ1Þ8Î7òçýrL-æ|ò¯z¥Ó¨´a‹Û߈Ç,è‘3ž†ÐÄm‰Û&{3³DD[·¥¯ïÞ½'ÿdæÁH1ò›,C!t7{V„1wB3*63¡xŽ8ŽiBwCêÌû^¯|¯Ý$hUåèõsÚ»1ù˜õaÌm:Æo˜оÅÈ„›Á¸VûoÐÕp4¢Þô¶ô‰Žù#Er$¹ßƒCËw)è|³D¨Åá“c…·$ƒ;ÄýøÏŒi`ê‹
 J	5æûß´š'|$:¾©ÒÞw h
-µŽF-âà»l;¿I?¼'Õ¨=_Ò½O0ضlZô¨*ÄÓÃrÙ¦¬¶„±(.¨Ãt»ŽÿJÝ,Ò¥L^Vÿ6Rß!q3!ÝCŽbQÕ„„~Áí=¹ŠiÜ#j1™ox¼Ï|	}à‚ÀBEŒ¡—Á)!78Ô;Ôu-n­ &ôoØÈRŸûp™z¨á7UøpSÅ›¢_B ©÷ü 	T^âzÎØñ¡mâÀr:ælBG0—aÜvÂÈ;Dzœ	¬ÕÐM¸áR‰¬|&ԁ´ÈFBî“êÃqþB[Ü‚Û2—(- Âl“?Á´ÃÍÙ&¸
»ŠeÉ	Š£ÆG®ÅF0	Ä¥²ï2ƒ}0·ËŽHÕÍÑX`Ž#梚"—™ø©ô’ÑÚÆ’‘»DKFš^˜Gï«›,ù¬meiYÒs2VŽ[êåm#kôw˜×ßßa-Öã4OßçlI9˧Z¡ä%‡Þégÿ÷©ñíÑsBÛÜ	Xbÿ·»NÆþoÕº£ý´ÿ×þOØBp9|°Žý½lFOÇ~躎0³ŒûšÚ}ôyŸ²
ü=âƒÙÁß'Ìì«+Á…ùûÕº "oHÖ€hwÖ·	"`š¢Z£Þ5é;Á0É6&±ÅÌ0ÀâNB~ƒqJîœÑ4ã÷ÝŒeJÀ¶$”Àl:¦°ª9Ž@a‹;ŠÌ]û"&1œ‘¢*Z¼ïQ3_˜Æ>Sd€ ÇÀÂ…•‚ ­3JX¶ï!ºx§ìwà©OÉ{ÅÓí^Eñ,mDžcOG¥ž0’Å}çòÕ†n¡MfM/Ð`×8c Uð¡ £G?P¤ÓròñÁÐ'¸zÀ5	T`2z\|sžÔ31E¡yE€\§^ÀÐ‚íä({UQ#éjcµM@@`1">¡8`8ø~؇M 9L `Jú,˜0)©#Š•MAÞ*ƒºŸ âe9TL¤ùœpX:xð°Óî[Ojňu„ã	÷Z…Ç Ëá`À5d:.­Äe܈èÅmÇËÆ‚¹ãç
â[ÐËqQô“¡ƒèt»bÆ£ʤLî’y&“-œ´c .Â43ì1÷@Úf‚’aÔFBñÆ]ÏŸZ§	l.ÝwÖÃœ3d7†žE7¤•Àçœ}sïøs®Ñ³u*ð_ŽlŸÿuêíFÿu›õ#þ;â¿ÃÅ‹fèO†3Þ£˜Zb~ÿúK½ö
-·¿P:ÉÓÞŠk{z‹FyCÈ—•Ú¾Ÿ.ÿCzéýJ‚½CU(´ÄÀ æ¨+€½|$ƒ6rbκ`ùìmÕ4ÔwMëP“؈ÿ3-î£"…	`µº-lÜ3DPÍ⑨ð¶²ø\Æû®I|Û›ÏñkËb ˆw"~ƝJƒÀ<yËúžùǧ¯ÕÜŸ”]ûÎcìÍý[Òª´/Ƚð È¸Q¹¼"ûÈMø€bÉ°P9Ÿüù¥"Í^‹oÎ-≉ã}ócn[ùÜ>3w¿&b«_šy|\¤†\EB™m—û7	+µJ·r™ÇÌ›Ó:^ÿvÛÚgPøzÿêÍÜ1ǹùÅ™0ïË]Òx5´’‰þweå8âYÃ
-MfJ@¸ÕI
œìoJgÄ…:7ÿfíF!†Ôø|ÿg®ø¸.Ý=¶.ÛVW‚«‡æÞaª´Ïþ£¢?ϏÀÿš’î$ÿw1þﶻõlþg£Ñ:âÿ#þ?\ü/}?Ø_?T›ûm°ü|Æ•ï_<çÑ££ÆŠ>á{ôÄ#¾!ðÏudïük£pèØ_îUóGC²àg˜mlÄl3?­•›«V«]oHÞ>«$Pஹ<ê|²Ý!õUÒ)ú1D0`°_ÎÄ°OO´ ô*!æÜÐråôäCÕlkM/NOƒÃË⨴Úg§'*iVÈþM¸Ï.¨%a"ï¸ÜDã$V‘îJã@äéI¦oqtSÒO<9òǐa4Ú#®#s_×`脏ËüüSn¤Ú—qzno at .
-Bçöv©l——ÝËÚe”EÍ©3¿ º=èiÉÛE¾€«Mn€ A÷úS.v<Xd±!™DàÆÜ^ëÒ+€’MîË^ˆÄò¡;ÄV»1Ð`@::ìy0” Ï˜§lY²éÄ;8ë=‰4Bz?vè7F¨9¦pï#f{S¹
-yo2ŒH_I³˜ˆ[‹Y3¡Tý‰ø
-ú;‡²$°,DÒ†™cŸÙÄÑ-€ ÈuzBp{ËiÙ9òû"g´è*vL‹ç_f’? ”APØvÒ?÷#ݝ¢šƒ! ?}½N¸*ÙBãißëŠ.z$Èu2#jómƒÙâ*ƒû13E$ø3 %”\Gt^xv¨çÑ)ô?Jö‡g`ådÌT‡>‚¨Ã`–¢13Ëðnƒ
>™% À$ßCz+eYª*’a¶z¬Œ¶±ø5">ôo»GT…|œ’!ŒtɈå[ÖF¨qCgœc™Í…UiŸØ|†Éb¢ìk Š„U„;„_OÆ옼-/Ùð2:6ãå:_W!ƒñPü]K,É•Ü]sñÄÁÔäA”Ë&ü?3Šð¼ùÿÍöLþ«{¬ÿ=úØÿ3ƒÿõÀú‰1/QÍè\oϪ©"ûñô,ô¯lâúIIíù
-‚g‚e«»xTaé.ʁõÍG¢Ù¹ò_ÅÏ8†Œ’ö{BCÀRTs¶è~OBN0úÌ 
¤7¹›c%ý↞˜FP~¢ThÉ-#93 3•
-+Ì5dĬH>ÄŒœnYæ|q6òiý¢¹ÌwYÞЋ¼"ºG$C±j
-Sߌ?íӝë’pãDúT¼PeIMü6!ð…¨É0¾¡ßB€¬¤æ]1“¹˜>ðœQª. ÐiR!ÑÈ«“ÉæÎ8[¼¤ï½`»ÈÒ¿&S{üÞØl	Þ1amüçôÿ
k^Ùc Í>Û:\†ÿÿÁ}õv­u¬ÿ>â¿ÆQL쳘:€žäÔ	’£L^‹¥ïðá:øùÀp3j:VTn]¸5Mîs|]Æ~¾ŠØvyquØCêÖµ²æø,×—Ùa:ôüÌ^'
ïâÃWÀ2Ç¢nÀÁ¿`âå6ä9Ô2O"Ë7â Àx6¶.Éž-âw*Š"ŒíøvqÄ5MøKÞFläxS«¡
"·|'Ês Úe.†Á$1y4“ÏgîŠN“ò§~ÀF" žD›X‹òeQ1˜úŽ7dd`JêŒH-vBd
- ŽVRìárŒ1( á"*.d8ª¢KÄMS-ÿâh-œ–(@µŒÊã¾|XN™<ôJq/žž×ÏX¶^j¨/°yP?H¸N\HAŹ܂P^1«Ü†ÅŽ©@•,ºÎ“e…¼=ñ^ÈøyÔkBO
ì'Çbý‘\>aÌI¬Ü7e×Mî'½WéB"Ð}ªBʶˆi[Óèo9$ªè;4oM¸V:›D#²ÖyѹNÓémŒÓŠ¬¢kU6ç­ö{oó·ð#ŽÛþKkßóæ× v3ø¯UoÕŽøïˆÿÿ-\Â~*Ä—ç<Šé5¬à@øßÿš¬O¥ÂeJÄ“oöˆÿªÃ†ˆ/WÀýò‡æà`<V*S{ÁØNfy£Ó¾ÊkV(Ù—œž< £2‚ç™|  ,ÌÚü¯	Û>J¨;=9òÔ2¢•ó¥FÖ~ed$0PL*Æ»'’Ôé‰Âˆ| IE͏ÓÁŒ?¹šp_à•×Ši¸*ùR’‹ðŠHÝý‹íækx\ID±UäBý¤““!7†Ät엁:v
-{«»Ô±Ydéág©âtQ2Oú˜e:A˜÷1ícè&óKMÝQ!¿;L”¿ç‡¥m2šj0"œÔcô9"DGüô@iù¨Ñ@•zr1a"õTEG0úRÒO©‡›k©wôe
-kÔ‚'e…|ò›ø|JÔGϹO\·¥Å_ü„‚ä[¤¶‚5ÓkýXX¹aӁɋ©à¦t+P{*‰H[N›6r¤*+u¡ÆZÁ…phðÏוEÖŽÏø—öPqUë\]vU&‰H§ÓÈg-u½h¹„«	ž-„ŠXwr,È…Øc{B1r©ó§'º[Fô™Hæ–ÀTÎ6îJƒU])âŒH¬M‘Gþ¥ê`DÍY®¿ì ƒYWÕ6×Bè§Vo$\›èÔc’åì2¦Ë`2Ò=IZ¾ø=ƒ9c^ݾþ/$çƒH,SÔ
(žå`ëYërnãyñÒ+*úÂ|U‘Ù}ü8Õ%Y‘	â’6Ör?YxðKvÎè•-¨B¿cÛ\8oÙÂWuµ':]³ÏP!„£ݐÐÇ'>
-GùùºJ\ŸžÈ¡­hªÃ9uz†ç^Ã,.K§Þ•¥ Äßeø"{íüôÌb9;£e%4õ-9£–å@ÏYü…Z[^fIœŸƒ ÎÔº>óµh5K]<ñÈ‚²o9AyL­ÍÜ3C‰¼„eß2˸%@›(é‡„bòH1Ë~ïÎÉâfþJ.Ê¢Ø𠎹HúþŸæ þ¿D[vÒƲó»zÆÿׄ'Žþ¿£ÿïðóÿçxT~Š"€%G6ÎIëØš»p¿Åó]i›øúR™ÖÏV o‡T•€Ø¢Òåù#°—dý­ó¸ÔºÔË`Ïû¨º[q»f½Þ:›Ín=…òVL¢ÏÐëÂŽ}•‚4›Ñ«]]""WþŠ¹éøˤœ¯¦ÅswV¬z˜‰É/r¯9™6~Ñ\½º›wEñçQU^‘‘C.—ÈÌ.dvÉ+ZJ‘=‚b·Þ|9a…¬;mŠž$óü7µ^,îNÖAr¸ÝQËÕâîèÎ×Õ»rhžˆ…vÇÞ«X
-Û'+ù¤©ºwïÂ
-©Ã;ð<¨ó¥SpG.€eø¿Õjfñ«Ó9âÿ#þ?\üM™ÃÇú+æÏ̇ûkÒá?²c9Î& }‰®}|md7ósüæ+ÁúŒïy]„Ÿûà£tvàMX]Ñ	R€Ê‚ZdŠ-‡èÐ*N*¸‚S¹ÑûDGª>ڍGŠüúËe£ÞxEÞ²·±9]eŒ;[œ/!ÐþGßÆ?ׄ†ý©í¸>÷ãÆïÅÛÎTóZˆMÝWBoNA9IR¸áI®E
†bGÕzØUßySåZøÊcs¸\‚¿’W«¶èÂkï1©‚“üãl
-/i
Œ©Ç‘?u_¦ÅwÂWq¯\ÐWX
åt“}Š»3’ÝÞkâOG}ÇÂÅ3z? ;Ç/°¤Á”ürÄXt|Nã8­PÆcU
-‰,’Øî;èPÕé{qç4P½Ñè^Õ›õv'Ý·â 798ÃíÍŸ¤O1ØŒöæ.º¼èˆÌ•úج×;¤¿É@º?;#ã w¼FˆséÜÀ#/ÏþF®ñ¯óóÓJ¥"n	‚"gðýùi­>K?ˆ_ÊG¶7'±G]mNÞãñ
¿
˜˜0;l6›,Jòøtÿ^ÙÔlGøW5mù\Šsù"N?q¸–µº>ÌsUØ}tÌ¥?¯ÑÃÕ÷ÿuàõÒ#í"vŠ ;arïP;cd‹þÏÕ¦ç;ÿ¡ÖÊÖÿ´íãûŽøÿ ßÿÂe?E¼Íæ½ïQó9Ƥbì¸Ï÷<d÷FÅ;Ù â³õÓ^ðåXj³e÷È_aêùA˜|zéÖçF\æôG¼Oó[7*ìšxÞÀ'˜Ål£3o—XßÔ'
-k¢#(¹|»yRÚ‘¨k:yöñð†¨HE^!w¡‡ÕCx(½HE/,;=Q§ú©Üî
-ùlo¯4b¶‚A¾z€=atÅ’ÀÔs	ôâÚ"±j«W¿S?ÿÌô‡¤:e¦])¯„æÏ×ÄgD{¤\ȵ¥‡ë1ȸt-Ü{ qùš¹ø™¿1î
-i.Éã?ûù¨Ñ÷üç¿wºÍlþw«Ù<ƏøïÀã¿Ñ”9|ü·JÔuÑ¡ïëPÉ‚¾¨+üéßî9¬
ïÆç¾g¼ª+ÀY¯å&pVü»Ž'¦ó3ă£Æâ˜ð.ÊÇ£ # |%ÚëöÖt¬@dXÖBþJGî+X3 £v*¾ª7.ÛÝÃ
‹HmT·ÛÇéè:!¢™ ëŠ|"±µ°q*š¬˜JP‰Ú”™Ì(çpóžè° «^ļˆx÷“z+€8Ž] ‰ã£ÃÝÕ‘²ÜŸÈ%ýéýÅÓö#ٍ«Fsa$[ic15–˜Ûñ›Ë¨H—Ÿ–ƒ>Ù*ä}"P
-äÛ0¹Åä	¨èŽŠ:ZÑ\‹ÂJË/’ÛöâÜ æÕÊqîxísyƒœý4àÃùyæ»høËúMäZ^&¢øz‹«ÈU»±8¸}ç1)ÜÉìQµ”T¶Mnw¯ºÍg‰[CK—­?n½Ô\YÇO3Ct+ΚbÖÌŠo8H™[á©Ñ»¹]MŒÿg$ù|ø¿‰˜?ÿ­×øÿˆÿÿgfåOá˜q¦Ð{lÎwØ¡eɗĺéçµ/öü3ãºqIwVbû‚ÿ3¢ß5òO9sžýë
æd…£‰©Ç0×ÃÿÅÍÁKØÉ4ów?AF%÷˜EŽ½j¶~ˆ,ò™áÞ¹[ íÀÓø2Ùå¦ÒEÅždˆ,ærk¸F®{Y0C|Vv[·À†žG\ܦ¦öhZV¡úrô*ôkõ¡<v¸yžó-›N:XXŒÄµþWÞýqÞ·–/¾ÕiT¯µVIüÞÙh€­ý,è¸Õ¾ª×~|t\`??|\h»_	ë]ß;.ÖºwLbØðü·Œ¦<oýw·Ykgãÿµnýˆÿøÿpñzõùi ÿŠÁû| }|ôØ#y	ÅëèúÞkÀÓ£»@ŽŸzON€¬ðwéÐ]:»†ÿZ[1ò`>âR1“©(AœáœÎüúAÆ3£ò.`	·¶àHkébŸ ÞCWrûëcð*>í± ôlÑùRûe$>s”õæ°ºÞyþÄ‚Tïs{¢" !ê›úb).j¸ï8’‹>BæHaÇ—.O2Ê]Lewå7huÀ"[è78=yM at 9óŒÀÚuæ
-v~RAÔ%yûé	íû>.=&ÑKqâ{úôèxwöM"•ZOÍŒï‡À‰ð»Ô‹Y“ý'â=’ÅWQã‹/–9Ó	…;õl"#åÄØ"¾‡Ák­^2/Þ=ûVJ®C[žï/œødøOÎä»-‚rà致c÷ý+t‚W´/ŸÇ”3¡°ð¨¾hŸ	ÑÉ–	Ð}	­Ö’G–ÝÚ8Gúja[”°rš~+ÈüÂŽ-,v¸`gžGø9¶:Úúq»ôætj—ÿoNãì0<:El·•:zï÷îÔÉ@€£cçYü?M}ÞóÿêøºÏ™÷6GÿÏÑÿs¸þŸY@þ“ù¿´j~åGÁ¼‘ý¸|r=,›º}Öu÷lZ÷Ÿ‰Oí²ö?Ù;6­úÏRš‘]—ü/äNÄJ[—QB‡V€_/vÀ8!I‡D½|Ë#%Xl©Ê…¨NÛ†šL=ãCÿ‚Øá¨/> Z^'Rö§¢¶ŸZ–J…ˆß(_ÆZ2q<3­ž=õœ_yf*WKh	VA©¸%íeíyèé:ö±2  ñ*¸ËrŸã{$_£kB{Ï›)êû
-o‹w£Å]­Dçec›‹ÚMÓˆ¯êbÂB¦ýÔSÈÞVxéOV\xw^»‰ûiE	ü{_Úܶ‘µû9ü]vÕDJD™;)eÆuÙžq]ÇNÙÎäN•«R 	I“_€´ÂLÍÉ×ûåþÆ{Noè	ÔŒCaéåôú<}5û¨¢Ð>,¢$þ0U	б䮍–˜¬NÞäœU¸@ýK!gq”„daò%{§ÛHY
&ƒÁ×öŠ†ëÜ®]ÌVD˜Ì[\53¥¼gGµgD6L„ÞÃDi‡Ê˜ÓÆ)û§4cä“H
-{ýUŠD®³¢jZœºÁi¨JJåÁtËFþÌÈü‚3DÕšè¾ .qÖ.ŒMjuÐ<ËšútÓæ"ÇÊø_òwëÂYd`Ò’1b%Á)˜ãlQU¬D~Æ{>³«ä:Y<&l¶öúNvR•9e±ä„„i‹¸ÓAšÏ¶‹"]¯„¶Lºq&uÁ’Í’Th±’¦¨VgÈÏK¼²j$‹¨¦v4D6Ÿ…áxÕÝ‹Lʾº>dÒ÷ß¹iºZÐs!“军{<þ_l •Äÿèv†ãŽÂÿ
iüAcÿÕð5·ÿÂ!Sâ/¶U<ñ·_*aìŽòì~Åf_¼9¤ý"gt¹ˆ¿èù×!4 *îcÛz¡ôJ±ñÂŒ¶]é¸?´™·ID<GvùBbÝPˆŽ–Áˆ‹Æ´÷/¾*F0³´K
¼¾)(A§ÎB(žÅ·™:Þ šE~e-&êäb`PÒw™-÷]úҚݱt¡"3Èwj·$X¨eÉÏ7÷.±™ê|ú“µ·6`uŸ5™Ó·ïì–ðÐ2s·ßß9î\°m6I¿Ãz4`ËYÍ<–+™î’¾ér¢JmcÅüíÔ‡eKÀêC§`(’`§êjXÑ3þ܃:¯]_>U¨XÜSôOŠ~‹I a6•Štª#ŠðQq]#s‹k*,Ú-ø,©‚ßsÞýȨÚst Ø±iîÑŒf¢=úÖ…ý׊Uz†þPPÐòi1z¿ç‘G¯ÓµzÊþÃtéŽaJ8˜¨ž]Œ*„0ÇÃ{LÏؽø.
-¾–r`›P"äJdØKélÀG3zze¿	>`'-"ñO©'ÚTkŠ2Mäðrl+4kÀ«’1¬Î"Ó6;¼acGôæ«…ïòŒ}˜7Tæ‡U[úpÊ6ÒÒÀÇ­dZü<.ÂjÞî0éçV2¤+¹5‘“K‹\NÉåìô”´~ø§@AÃÃ[O-rÒ==£?§ä¤ÇÂ×ýS*On[‹	ЩG• ÐDœ±8«Lm‚Rh)e±i K»‹ÿôH·ƒŽ‘ õËpòôÚ\±Ñ\fL­ia©Ù=ø£#ÿêÃ_Ýô²ÓR).f©.:¬¾™0_­PgÒ’9˜¤
-éGÝnê‹“~gÜ®šRÑÆ>th$ÑB8Ñ40’‹
á¤Z£¬‚Œ•üŸÒ<åòÑ¨?ñƒÜjø¿†ÿ«5ÿ'üWÁ j‡{G©Ÿxâ0YÛ_¸›6ZÚçú³Š	@Ùžhþ’ªŠ 4‰ýØ$ çqË YV{ìÓ­gWKÊ¤  é
	ñTÅ ÜOƆøS°ÚOT”ë^fc %F’Ã,"©¶NÔQKíÆ],Ü{F;8ßäêæÐö“~?—ˆŸ\I—½ªb¥¿X΂JË¢ïÂÔrVA5)·C…#Õ{°qׁªâfc&èOm±¥äûzó­/³LVVòíÅ
§:Šà:P\Ãnn®ƒOW”`P­)¡Œ§B±'¸N¦Š×)ÃcJ™PëGŠÌ»ã[¸M§§±£Î$-lqÀh¹ – 2Ÿ”ã²
-rº?#Ç„
I=8‚¬û•ÜšSXóÊ	½võ!	(þ7ˆ¾Tüßí†ñÿ¨;nðƒÿë‹ÿ#ãù«á 2èð¤ð ÂÉ…™	àO+ä"m[  ±ßU3Z“Ñ;Çæôì$7ðÞÞxŽý…îEÙº…ŽÉª§"½.™p§ÿf ˆ¢ªì®xê<oA`@óRy H†íŠùˆ@ šmcþ”¸áöÐÛ=µsÛw<[h8«CŠ”©sJôQjõ±ˆÂ¤±:…)®Œ`¿ÙI%;®èìi#4k¨sE³3Îç )4Í¡.ú©þÈÂÁŸ(Ü6öâPg’ÅŸQ1R¹(ãw;ã'n2j†òS÷ ¹q>«}}>¯a½tü¯6JyþŸ;Aÿ»£Nƒÿüÿ ð0Ê¿
- ça~¼)æa2Ê&hëÀí| `ä¹+424D)”€hÛÒHM´€xVkb è‚Ç¡dúÅ’ÝQC4ä@¸{Õ•詁—cè~Úw–΢(+¥‡ª˜|M]Ì ÛhÅÚ‰Í98ûè*L¤´Û÷cäÃ7,wm3«8¡7š”E8ôÆ%½‹G+Ó>¦>æ·9¹X]µ0BЪٸhi®¬öÑñQšþGwáúÆÿsÃÿÔÜþ#<×~]Pv-Ž8HÆðÓ?òAÅ!á.ŠùÑw!•q?!ùÛ8D§ôÊ°Ñ£ØDMET“„éSs«ùj-CÂý.w¸ï¢ÐWЩ¡QˆÊ\ÄÄø>"wó1lŸÏKÂúôërLƒI?%Ž73ØÝœ–rc…9jjéõHLúÝ#N¡CêЭpª‚Ÿ&ƒNï0Ü…Hk W;¦ËƒÉ 7|D¼Cò*Zæ!Ã"»çÀ«_ÖAV±á*þ×{i¹þÆÃAÄÿCwØØ4ø¿Öø_õ¾ãÜZñ
- Ûzf‹$AoWŠûÕ†-ÀòÃtðP¡º‡"öãþ€Ä9>Ô¢Á* Ÿ
rª„ôj—Jó¬±Q˜Ü·`E¦ˆ´SÑr(€@T±€€a¢i«ý‡g/\Ÿ&ÖY†cb>nvÂ}„tœ
-ÞãJMT“©µG·íðaÙ³¥Ú†,\ŠÄ
-dG†ÃqvDÂòɉšÒÅXé´NQÉpÜ) $÷¡‘¸÷Ã]r,î¢&±á…¢‚öÖÝHac	°çÒ]¬Åg7äÉ@v´£³Øë7‘Xó.tê¹#ì]-ö­ç^¿9'¯oÈÎÝ’{¨ŽÆ™åo”ÿ'‘­þ~}ýñíë«Û?¿{ýöãË÷ð ||‹:~}ñòýËWâÙ3ö×Õû÷Wÿ:—RH§©f0GTµÁ¬º“’(¯QïâqØödÙFÖGÛ&e—™Û¶G«}-mh
>á%õ?‚+9þOgÔ†ùŸþhÐØÿ4üOÍõ?Äð•°?Õ5ÌŒ‹Þ*Á;v³b-ÑŒs=ᣞŠXMÔÇVê`t]Ê4'ƒ‡€åìyõÊ¢;UïÕóbt1썀‡ÖteÇñ‘CØè˜Æ%îOÕÛ0÷ì.†“ü
-¼Ð[ÙO Ÿ'e7VèÑ’z¥<=m	nbã¥Hb‚ÍRäÛ AJ2œÀŠ{CÂ..¶ê{ä[–Ë)9ùžŒ†è)s4"½áˆÑ'kϽí2w˜'öÊßz6ã*‚È·iÉ3
ÆyœÜ€Â¥ÞüÆÓOWō֋q…ª(P€QgRŽ	ÌŨ×y¸<mɯ"OÝäÄã²Ö•#q¾ƒlOÂÿ¡W2þöHüaÿ£Áÿ5ÆÿQ¸Vs`¿ïÃ,€rò£§¥<HÑûH‰!R
`D߇°Aåcþ<PËCñö½@»Dê^.X82P ôŸ»®ö<6¥HƒÜu#û?ñ3¦ 7 <7¡AR‰¥Ã=kw"=Ò½ƒùò‹cß'–Šý‹˜.¨îÔyˆIw¹öô  èæTŒ»„ý<»K˜ì¾ð—ÅÝÿªÒugOž3–ã#
ŸÒ|Éxðn™{F‹ØzNÚ
-ð¼ÇJfè9”’æmN
hIM÷˜NËhHv@ÓÌëÈ5>+ý-êa%’]61F9™NîV>!©%Û&2
-CMëH$nЉ2–Y=¿SH­Pc
-L,BšÔµ¥OÍû 6Îr„š<…çBlJkqvÊ 7­.øÏLÎSý?FìÿGƒ~·Á
þ«/þ‹2õǁ©±ñà/ǧ*è3èz†*„‚ñ-{ $ÔYØ\p0 9÷…±pÌâQý¸8î°I_ñç~8Ø\°¥å"ªì$9¾&Ÿ+³h÷x®ìŠßùÃÎárS¬HÔuž”ïE ‹B¿Pä×Ûœ"..ýsæêO¦šÁ6
-
-žÍ?«ÖZƬò¯µ¢R4Q+
ê3à ǞŸÉ*09³&Æß-‰%³ÉNæ”­dicŒLŸÀFᶠñeè«i>>U7›rhí 8f	2‘y™²ÃÕ
-fªÃÏe¡àãþ¾±-­)
mÉNæ§ärînaŸž¶âÿ­©<FÿËbó´'þQÐy:TF
yL瑐•ztÄ“óá@;£¨'çÉ{¡}ø=Ń˜\û¥\dßËUNÄjØp2_'ÿ×ÙK:ÿuUþg„þ‡£QÃÿ4üO}ùóìùx¹Ÿ$ŠX&‡÷ã¹!4pLLÒðB…ܐ¹Õä…E[6OÛ Çä‰Là±9"“Z¯à‡^Á3‘¬ëíþ½·|‰¨™Qp Ò¦nµT‘¹S&ÓD9kl0¸õË76P+’…Ð1Äú  I€„FƒTZ€u>,+ï€4NÄt§ŸûS0Ñ•‡CL(æ¸$ÜYMÊÁ͐ÓÅ#ÀÍùÖŠàè\ëI.#ŠÊqµ¡Æ5ÆÕÿÅ5RIþÿFƒQÿzÿ¿ÿÕÿ™GùãÅ{â›qžµÝùÕÔÒ3½Q!ò3·÷È/žd.õÅ7Ç1aŸ	Ûöò”°ïWÏZû¶ÙÄòÜ-€‹`'Ä7`¾¬ÐêÜÜ7“àÉ‹9¡:eÚ´&øOvMÈqÙfw
-	;‚ò5 …4…‘	3`Ä8…¹烥é*ähz¶¿]Píxž½ðS+ ­ßÕ<î“8¢[äÞ0%œÑf‡JÑ9·Ùùw,&·Ò‘µ^/–Ô“ç×?ýrý†“kÅ¿úÆñ×÷®÷ٯÐÞ`«øŠ 
K¹±fŸCt•}sãÌØ#ìÎɏðŸ;X?ëwî=c¸âó•îíd¾¶G³m-·³;2µ7áªÎGÿx3EV9,û¹lW½è¹þGkœ =?óøžëR ØÄì	úØ‚¨.MëÄ	ößž\2= s@À\87ääÛs×ädÖV
-ÁÓ¦šøÌúcãJŽøÂ)Oåþ"÷çˆF'aŽôuxÑö<h^Vz%«“Src9ùÒåcaA9ÇãAYA9ÇãaIA9Çãñ#ðH}GYn(ß®39dCåĐ©º•3C”ÿ‰mˆrüÿõ†Ý0ÿ3î7ñþ§ÆüOÌ`~¼ÐÞ'õfˆïzÚÖ|x!T¢ÐÃ
-iŸ˜f>÷‰?)™÷1¶Â1)#«wlÎÇ”©$}T,°Ú¢î:¢¸¹#ƒÐùòø5ÂUëj0¦g&³>7Ç	øEùtÍMkr¥l¦^^ž¤0ò¡3êwÓÃ6ØYåæ.¼¸r7ÄYÍÛ9üïò48,âÂ’ó`1 ªÖïÅtX¯1#Pwc^— [c¥…‘@7öýo—»6Løôíö¸ãztDÈ/;ïìÔçQnó±æƒ‹rÀ0d¥Z•CNãîÃÃٗـáÌKq.lAå88TÓÆè rýSß+Ñÿ߸7ãØS4ø¿ÁÿõÅÿÑIìñBÿ”5âÜ ¢kª˜(’Ê£
-´}Äü	dwÉ ß ýcBþ0™sl´ÊÏôÅ3z^+$Q”öµìÊû©Z2Ñ"54`9ï
j­ëo¥›ûç
J©´NzˆFh4xdi¤eû֝ï¸TÃ`”j#ÂâÞX-Âã£h9P½/.º%áåa§÷ðñrŽ%ª€9ã2–.›$P‰JE‹FË<þ[X”eú÷Fþ»ƒÿ5ø¯ÎñßôAùxÑ_î“Z3æ3FâÑ3¾Rip8½D€f†·dð—ÐÇ
§Âú㇋SrSCƉ€ß5 }áΕ
-ùˆî–-
÷©áÚB}Ýþ¤óµ¡¾œ§Ì<”?•œÚˆþXùæP¾´ðÕfµRàÑë•’ÜßAwSq(ûïQA(t—Ñ0
ŒîïœÙâëN–¶ ´åOö:¬fÑì $ëø€v,ôÊNŸŒèÇÌG^·„«czãq¯Æ¢Ãw‚Xt]õ» Q](® Þ¾äDö6ºÿ³øT€ºP:(#³:¸~C.>c(˜¸4°ýæΠ‚Ò´€z¯Ü¹[ro­h˜Yþ&aÅ?Åq¶õmøü××ÿѾ¾úð±ýó»×o?¾|0GxñòýËWâÙ3ö×Õû÷Wÿ:/R Û¿èvË¡4 «^¯Jrê÷>¥‘mÏU6#ç¾,«B儆±®@uçÿñ¯þ§;ëÿº½NÃÿ4üO}ùŸ¸9ìñò@¹íÓ9 ~ÄÏ ñ*äâÚø@ÈtpQ!¤5Ä19 3½wl.È\pB/éSŸ™@[„6
Hs•¶‘‹ÓH”ï2ºFâ4¿e‘`Ù¬ŒQŠë®ÉÌ’â/"¯Äê_,­tQý@¨Þ.å¥C‘¤Ò¶„ú}‡ãÌ¢`‡ú÷r(Ñ£ÈÙH;©îxΠÓO§pôA$¸7€úӍ嬘µB0²P^¤•6¸°íÍïhV÷ôå‰,²¦Ehè 
Èð0†¤>€4ºñɉ0ç߸ac~f£oIS}ÉFý˜'±_YPž&ðE7~À=ýdM
:ã^ILÈ 3”Ä:ìLÈ{mSß d»Æ˜wvˆ £û>Ùá†öÄ^®ï,:ñÿÕ^>ÇÍÞ_ŸÁ}j öïk”òäËÑ—²´v‡
-’c~"œ›¯4Òg¸–ØÔ’Ðɲyª“ºÁÊEæh¨•ÃëÙ9šÿQ{kIú?Ý^ÄÿèÑÿiøŸ‡ÂÿßãeRß1³AKë³Ý¦¡©¤RäqM˜  µ䁒Ž|Jæƒbš¢,6HP}erAÅÍIåùzAAo-–‚t‹vúy¡Ò7,PH̉æ&Çõ™yq1Ø“J €¬t(VDV¸û›À¦´tŽèG’9£‚¹Po\’—ÇI§?)ÇËã¤3ì4\NM¸œ< p:96I¹£*gv"µmxGËÿ˜{vYö_£Î¸æúÝaÃÿ4üO}ùÓôøu°?¹wÌ̏*·öZOIV!çcjáýT¨d¾ÇÔ Ç${¢\Þ±©žHŽ’è¹ölkƒjFøùö—7o4ôYcê€É$N>1jXU(…3évË·K·Ð–Yaó"ÕŠRþáöb)Öjh1“­ßQ.,x¶Š•štG£Tˆ+?óÀbÎE„[Ö¹t§[Êï–åc²ºè•D]ô:À 'ûXÄŸu™Üîs	TöõŠ6Hÿ+Ãÿ†~^¢ÿ—áxöÿ9
»
þoð}ñdÆ|¼à/=à?c§dæÔ¾7½ò}…4@¤¡ä âNª` Œ-qL Dî›г“ÀGÛß(>`¨§‚ÌB!suT@¤è Ôñiw,–
-衽Dý\Å„"fÏÁzšc€ÿÔu6$p³°n‰×AøƒtïŸWÚyŽÕ6ÜN•:Š¿O<Q¾³2ày96¹PòÑ äY‡¥ wÈi2zøÈ=ëÂUÜžyqË…Þ#R¨»›wLY1|€ÿLò*ÿ
zÁ‚ÿÆèÿ¡Óà¿ÿÕÿÅŽºÇ‹sžÚš 
H„νÌð/ò¸BäÛÄ"@#«\2ü‹i†£c¿4Ž Ím(‘àÚ´M.O"r*|ÍßMGƒ9ö‹CÕÉ[ìö=g‰YdÀà©Í‚"îå;ÿÝù‹O´‘a9E@œ§ê³uÍ4âj°oÍ1*smZõúW¾cT³9pªöüÇÜïJ:ÿévšÿÿ1Õÿ썛ý³ÿ¯ïþß4‡=ò­ÿ¾ç6q1à‚0+_¬ˆC9ía… ÀÔÎEìÿÍìTé‘àmpL…wÇ ‘åÞÿWÏZ#»
-uÑÐb“¹(pê…šú•_Ù÷|7õDØæŸ$œMj¿ÖFéBà”üÅZ®`õÆ*) `g2nb
-41²v—QÚÑ!/·g[TEýñÝ‹±!-üË=µuçòTи•AGôÄ¯ß¾xýöïí·W?½DÜ»öÜ/°¶Îiui"âã{g±Àä¦îv5§I¡Õ&¡; 2ßz"þŸM…«HF]Þ‡óAN‘$"Š½„]*+3MVÉ+>ÓiöïÜí€;ºÇÇrrØO?35T™ ¼ðy´Ä-êó}üãĹrÛîš8«À‹?™n7,—{˜\™øá¹EÞ¼üˆ}zIœ$áé3£Wüaóx ‚³€ä`+õoAIDÝü£Õ+!ª¯òZ`¥™e6Výb…¶f›­µXìÈÆúrŹò“©hÉrð9öõ‚š=ºÉÝٝœ`üº dÄ?WïÞ±Æ3Š$sØÀ,ñ/yÕÚÿ|÷ú~É­Ü—öÒõvääÆu	&}Ê­Ñáü+r²Ü.a>•Ñ0KkC‡ ëSäÞ&ŸWî=åš|ØÌB¾–O­©á½Ÿ^þôîý¿ø´¡%Bã=Ëó,º6Ÿdºƒq¼y]ÞE¡?‘øRDŒ³ánœ%Ì'NØì> ö~ÒÆâCÍ`=Å\µÇ2v+1/·'—ìïPYˆsÊ®V!Kè`ÜK
-©y1¼¸(éÐ|4é<üCó{ýZ„Ô̈r±fhXƒ°šZe¿R’ÇÿŒ¶{iúßÝÎpØñ0¥õþ¯áÿêÿ3<{<^öo¯3{3ëǁP)>°›•Fú·æ_ÜI^ÉŸ&îãÆ÷Ô	ÛãGøÔò“¤^ë…}㬨ª¿[N݇’ˆ'¨|à K
-X„ä_…¡@ý/Y½›‚yÊX,ÝùvpI…qrã~ùV´yãY1
-³ZW„ë( žÄ¼„ñl'ˆµÝ¿eÌ¥Zê#Ëb¸%rÆ`(¾ÂPŠî jsN®ÈŒ&@EŽêÔÈyΙî]›Už~úé7ìgO?µ© à)÷GKæ’ízm{8)pVP†Æn;+ߦÜ›e
-™¨–žÖùŒ•Õñü
KÆÙØKö˜GqJhª«’1=(
-;—Ùp!úV5LDÊ¡*4Ò8‡3ŸbüÄQŸL6W1be_“Ú§¬?§Æ‚²T<Û‡õÙ‡¶?''ïqâ1
ì½ë}öOJœŽUän"Nc¦NÆ+ªzCÁdzrkoh?‚}­{KÅñólQ¦“xŽÑD{™•ªúýç×´¼dßLÂtJI¦Öäo¤ÿ²—Ø_a:dzmÈhÓãK¿ÿ@ÎÝ-Jd‡ýÙ…ßØ›ôãàO¥øù7ò2蝑þyü—¾‡é!%wrÊ3`}BÓM£•2Ë"XúÏéðOÇÉöæƹÄõŒŠÉ27–¿«mwä’Éãô´¥},IÊFÏB*œ§…_’‚d?."“f÷øÈ}ÎEÙ?ðŒ@‚<£ïàçw§4Éh2)©'ƒ;\f C[4cȁÅõ[­g5»áå‘÷pŸËBÜÐýà±¥úâ=®ÎdÔ)‰QœŒ»ŸQÌŠ,j@'¦¢\4b¤â•3ˆ·>hæòj»!´øñ0ÄÿõFÿ¯áÿjÌÿÜLÍy¿ý¾½ioWÐQ==z;ò³ŒC‡ÕzB1/UH	jäÛaá^5Ñå£ ÿ<€üKüžd í1©Û-¾žd`é?w]í¹9ÙwÝȦLüŒ)øÚBfã¹	’J,ÕÕ¸wõï`âüâØ÷‰¥bÿ
-2ðŠÐX•ÐÊ0±‰°	ˆ±E£ÍϘKBáíéNèèøg¸[cX€ùyK’ª¬ÝÙ“çŒÑüHG€r>éù’Ý<•©ÏÄ<EI6êØЧ<Z®3ND4è8É¢älpÀs5<á9¾‚'¾Ð¶ "¼G‡B„Té$È|êÆfnP¦á™žðÌ™þ(ò=<C®)®-44Õ·Ò5MÅ@퓶`JªpÊÊazÄòž`V”Õv9e®ç,HT]†‘6Ì”K/™t¹.ˆ°²æsæ^†Ð]Cöü	ƒb*ÉÀÆQ»Ç!æ?%Á¤X1‘iIah Ž„0ω…НCòìQ =J8ÿ8
O²4oé
--øÅk´ {¥¡išœëÐä7!ÆÄÍJ2q6¸lÂ	¬7iMóH7Àgƒvµ2Ê÷Ñ7ôy“vMäð‡f{à9Í;Â×)ŠkòžhòB…ôS¹÷N9c¸òêWNaÄ®èAæWdÿ)"YÝxîRL¶åùuúQÿ/ƒNÃÿ4üO}ùӐ©?”ª~Ï åøTe” yêÄ"Sˆ>¯ó‰iÔ	 ý$ýœ0ìKÅÉÿ˜Ê`&1]#Ì”ióƒ=ô't¿Nµ¹X*RþŠésöE¼˜ú*5ÞÄ÷ÙY0ý2VçE|W¤g·3öJ׋À¨I$zýáÊBšàŒy©Ý鈺<ÞDb#èóJ¹X¿7ºñQÅy.ìü0¥¥øÖ½Å‹QIÔökí¹8Û](Ïö·‹¯`¢—c"”ßð8Wd)ÍRÀÑ~w<”ðv²å¸
Åíð#pš¼úíôõ†úyVÈ\(Ÿ/Þ•cühxß\&ü%錺ýQØÿÓ°×kðƒÿëÿµIõñ¢ÿX†0ä5ÐÏÐC]cBê“pZÈÄK±lZ *þ2…ä)‹²4‘`4+‰H¤´.·AdŸÀ„0pëÊÀ'±8v¦3 ¦ ´3î\”Nda¢È|`–NÌb²*.$gg<Lóœ‘ €ÀQÅÿ¶ÖM¯&=éÝê”ýkɁâ§Ä
y·bþgBÆugÌY´8±¤S+*É÷{ƒ‹I)œA¿7TàCår¬“5 ²­¥¹¨“ *çB¸a
þôàRí? ìÃþ_úƒQƒÿü__üš?òÏy€ŸýÅ”Œú¤BÔjÖ‚ð~äh¡d´û1ѾFàç«™I„vÂ,@(¿KHÆAG ?òð	Ô''á¼þÐꮆc4BgfXb­¤+ϵëûÎt±SŒK¦»|4Î9‰@P@ ¢ÿFO¿ÒÝŠ¸¿ñíÅMx¹ß©îfy`Yuû%ßQoðxÀoê¢Qè›maÙúÕ¯I¼¢Ç	|•ø?Uá¿q7ÿsÐ7ø¯Áµÿó࿵Éà”ËfF©'Èú‹• *
-¸âŠÂc›ãøñJ‚†jfþCÉg–š°›çî«=ö
õ0ÔüN€…'¢Fì?§ä?8 þ{˜8îM:zÂDn/4Åþ©-Z6ëaoAgËÜ	³"œƒr—‰±Ð6g™´˜M1ñz„¹r£GˆGs<”
]g”¦£.Æ"oKUFrdâ4Åý¨úÂÁBë.HrµÝ¸K˜Òg4lË
EíXÙÔãíâ 4Tt<ŽÜòœë·C¸˜\ÞB;¯¾p¿³6ûó”Р,'Ômë%¯‹P¢º?Z4é튰¯É	¬ ø2KUøk€þÏ]ᘖÖägèY÷íë7Ä¡Ngç®Í¢Ù¿;"Zú?œÝÙ³ÏԁÔÅdÔ’!Yx3bÖò^üÚd¬s"ªK”h˜a¤²~^h»]ŒË¡@ƽ‹N9çÿS÷œÿgØ%ÕÈp ×N*¢Ê¡6f†ê6Ú ÈþßГÍÿDü?Žûý&þKÃÿ<ûÿÈløxé 'ø©²A‘×êâ Òæ…DŒ©3Ó2¥yµw©Žô¼M&¶YÍ®Jw$îF Ò7S8¥p­1>4¢º…½º…^G}°!)ᬓ£«·ìÖG36ãÿJ'§¢M
bRíÃ#øáM
-™Pc¼Ÿpý~’¾±¶÷eI€¸]mœEœß ô½'=VÀE"¦èÙÖìîp.¾?uÝ…
‰ß,¬[á¬OTS(1Öå#SËù=l¼­}Æ
-®ˆƒ 1‚gr‘ÑxRäsh
-uKq¯ß¥Y¤HêIãL)ÅžXÏIë›kk¥r¨W®_¿f¡• x‚tò‹$óúqI¡t!+U
阁/:ÃÉø±¾x(¤PŽMÔQ0jF	E*ÛBÕÿCñìOºÿ‡^_±ÿuÿétÿ
ÿó0ü?|EìOaº<C…˜’Žy©®"Šf…ÒϘJ&‰›¨$D‘œ3y”“ šŸ$õÓ†(ìl2•ö	gP8ýÓƒ-EçÑûš0Šq²©¸@²Ñ¤€ç‰0Ìÿ‰ØHG­oO$ÞŠ*⯾P¥¨äEY0;ãnI0;ã^ï‘9‡È´$Ö€Ƚlîï.BÏ¡~&† vø?©w–àÿqÔ†ðÿh0nâ?4ø¿Æø?~Zû*\A쯺ãvw¿-œ©§'õŠoú|v&
»É©{xÛ¯íÇ·|qÞ"ê€ôCMrLlGéÙÇä+q}Ñ:ÃÌÅ“¬¢ï‹É¾%0šdë©ç±…ùõveÏë…ïǪ]EYø“¦bïHýÚ/˜ÉQàÂY±È›‡ª=DÚå(Úçu˜?3mâТö"ÆD.E)itKŽÄ+¢=Èý3»#wPÜ-¬“Bq.]ÿ˜œÈdæR$Ó\¢³!­o4¿š²!“Q¯,6d2î—ĆL&Ë[ÈCáB2l,öõR3î#vûZöƒâµG2þïöãAÿ÷MüÇÿ×ÿøªæx¿ïÃÐß»Z¤z˜ÕH¾0Õ€}
FîÍÁ¿sAú?‹òúQ„'HÚuR7Z|aÉ äé?w]í¹9Ù$wÝÈvLüŒ)8À«
àÏM(xTb‘p9˜ôú|ù¤ûűïKÅþ
ŒØUøc­×gf±=½öÄ^®Ï 	ðW{ùÇî_ŸÁQÈs#· H7÷.
Eï‡ÐŸô‡pMaB{æ.א-´7/ö%I(…ô¥„âò„OxçW?Ñ3<'Âù`MÏfŽ;tW‹^ ŸHüŒ"àÉc¹¨Š¹Ï9ym »bD¯¡ñĨÃévC`‚¿\ã©]=ºô…õÂÚ@K%mž”¸¡	˜¿ Ž€ˆ чÔ#†0ð™ñKåÆ…oïy‰Ñ¥ó?¾¥Á¥L‘¤€2߁ Pâ&O‰Bo†ã]VlonœË£û­XîÚ•¸® µ‹ú¯XAïøb+î+è{|X°©…“ ôBÜ x–¿91lX‹{k§ñnáÞð‚>!™/Òó­ìUØ_¶þŠeçn¡ÏQ‡4bxð·ÄWÐMîÜÅœõ¤=D’H/ÝMg	[gžŒÕ¨iö16†Ä‚C°ã†»,O"Òq#é1ÆD-Ó!½õÎõ7Ø/Õ.+îñffýöä;¢S\¼5ÉÉÂ^‘KXOè
µCã=Õ	‹H—œDû2ÊY/K‹&½ùN€V#Ž«î
G¢@´P,+Lës›÷F™;ý'ü~P6ÖõäÛs×DIEyY½ƒ T2*IÑ÷Ù벊(ß®`cì'”áÄö<è‘F<9%7–³€®ÎŹW¡È´¾—V°t®„¢úwêܬ¯VBaÉÁÆýþ‚öuž˜tÏèZ¡/!r¹;ùH3Ñ•²öøîÕ¢c¶Î¶£Êߨ–s8Š™'ƒ«Îù©i@©Céá‚zÃt,Yï½GŽ{gH06â†3k(âz£ÏöÊØÀÑÄ‘ "¿ULjÅD)†bH<»t—k~Ö¶ç av	F>…ÏÚ¼LAò|øÒ16ÃþŠoÉrˆNC]ÿ„½˜ÐåiZ§ÊwñÝž½*_T¾ã}VÝ-»³'ÏÙÓGÚI e9~õåa“8í°Ò·üæ˜ãÖsÒÎ)1ð†¼">‹M¾°ÃùÄa‹äcp¤ûT§igqÿIÚ`^¦;æ£I§¸ŒL¼²Z¢ávXTŒÏ“Ú&± ­àÔ–Š9
-”!Yý-ö“æŸë–æ9ש]Ÿ؇¤W	ëb][ëß;$z¹µúú¢[Qþ_]è+ðÿ=uCüÿ ñÿÔðÿµæÿÕ!SÿC€½Ôë|‚–œz"°p­¹\ôƒžªé
-OB
¨?ðÐYx®¤ãå}
-âÛã˜
-€ªP®õ§ÁZ¡ê÷†/=ÛW12^>²V1+õ„:Y²2eo,ïÖ7-Ýùv!ø;=<t!Êyñ¤‚@Ï+Úˆ‰^Á6„€¹ `°g΍3Û	á²Ù1©sòšòÄŽ¯›”§¾æ@)èܾ
-}qS¸ªÁÌž~ú
ÒÓOmæ°f'œqè´]¯m¯=C†ÇêÃÛÎÊ·é:÷…)„'´âbõÎÇCÎÆ^ªáU*ª+?j1ÚPºy æÛß°ºÈ3*4¦Dw€R#öÔäV¤m‡t3ïVdN§"³Ÿ¥×ÌÍÒˆtî0ÈH›Skyy*°±>Û4Ä—ÈÆ?¼nlÜeê£J1ꞏÙÚyé¼{ª?Ü~0UÁ‚,â{ÜÐx¬b3Ý»ÞgÿtÝKeÒˆW»TZ$ÜÕmËNʘ–l+:ŠâÚðò‹ë0uW¥¹ddˉƒ+h;~i·âT;ǝd·VêÊ®'÷þ~pÔj!ó©ŽåãN<Zi')çŬ$P¹Þ¨$ÝÒñE\Žnéøb0ynØS6§ûÐTá4¦ªòmXsQU±ûëÊI+S¥÷#­(ÿ+ÃRô?;ãQØþs4üOÃÿÔ—ÿ‰_áu•PgÌ>¡BÉìé
-ÙŸ˜f/B9T“cõDP|Ó“2’}Ç&„L™JbèËtÄÞ^ˆB’C¯$O“ÆeÞ?ŽF“~WÙïÍ#Åt×d>éƁ?â‚0äoר¦+OzÊef·1£õ(IpY¼¥N¨$@fÃAùîÀ¹¬²ÒRkksGeÍ¢×Ñ£nhº–³âì¬;c/ÏÉÕ† NІÀ"‡ÈI¼2±äxÑNÉÞÝÂa¿Fý¼…{‹!ÔdéJ%Bæ6"Ï€j¢âá浼㡮Ti×B½,9×Q9~0"*u.äàÚ˜:~6
-K(n)q
-ƒ¡ã‰ânÜ]U¦ÇP«éŽ\ÿôËõ›Ã+d´†j¼Â·¸Wxx•vá­»2E[Ô=ŸÚöŠˆýÁbG?@ÍÓÌEÍ8Y¤Z@Ÿ%:vwôòߣ]ótÁ-¸[¬Ð„çx³Å ‚ГBÅW÷¬E•¾ïßN¦(ÉXu'ý”È‹±KÚΔÉ⏎EuеP'ŠÏMò³—+ë	²Õ
-:‡OPGŸË~Ãöt¾¥ðñAÀœOïã´4Eþ0ÝqM`ÑQ팠~òüRíÇÌ –«bX7ãx’‡uCÂÌ´‘xºf„Û³­ï=ƒ›øÿåÎÿŸÅd½Úœûn@È™¯KÞì=úmê'Ƶú[®Ä9Z²ô{¶Z,ˆÐ¹]ô“	=ÖÿÔÉŽj+Sm¶À ‚­zµå 3Hdþ®¦ÎÂÙPÍ[lD¹öž“{wøðÙÀ ¥„`>à’_w‹ rÐTÏü åÿbEVÿ7ê÷"üß°ñÿÞð5æÿbFß×Åÿ ¼eæÜ(/V”P„­©½š;¿ÿyuþçkå­
-¹À˜.p ˜pžU9'mžcrFê÷Ø\ )SɾâÖ!àÄvŠGäa©ú—ÚŸŒé²éúe>™;5>EÁzÔÜs¾ ø²7ÌdmͳS€H5ÊÿŒF“JTÒü\:i
-)„‚å¬ĝ¢6˜Ê~…º×œÒ€X¤¸;FiÕÎUTy1M":,r„Å—[‡•K¤êQéE%/˜¿–㧐M4æîÅ‚[qׁÌՁåSê†f?Ûz°ÉØ,vÄÛ®h)uúüp²O™Œ²Ãça1Ñ{7îv5§ kæò¨ˆ‘D½2šÆ1©¹qÔMV&‹[a¦;âÛ–7»c•öÜí-šó®¶Ë©þ ÈÚõ}tâ!OüsÂMÌ[RH"*(U¥µ•KW
G½a.55ãZ+8*%ã|—þˆ³X”ÄŸ=s×›gô)åÚØ/íkÆÁ”؆g‘»Az˜ºší%s±"r—\ûÏ|¡•ñR_1ÅG×Ú7/´¿^J¦Ž-¨Oæo]~úDKõéëÓ'(ýEïË|âô iÝJzEõ£a¯5=ÈiÔøÄ\ÄP‚.ŠÈEÌ™DP9AYke]Êø?­‰KöÿØô»ý°ÿÇq§±ÿlø¿óIôÊWáòàXf0‡Ja5¬_
-¯võ—ì%£4_‘†ƒ¾cúˆ”‹Ï¡^"C	%4T~Ï‘{yà1R7ì¤þMâ,O#NTöyf=?š|’þbÔ¿NüÙ©™:dþvRhQ³S–:ló¸Êݲd™¹vÎ1¨|ó²€nbÅsÿϵûªñÿÞð·¾ÿïÇÍþ¿Ùÿ×wÿÿ†
™‡°ÛßëH=~ãp‚êvÿváú~Dkàïün…Ûü }ÜÔØ®\;ùiß
¾.ô=6÷ikú¾§oáarÙQïÿÛò.©ŸjÍ$Hƒ“Í‚¤l67ëW7ÀjîÞ¯„;žófÁ?ãM'®>¼xŏ¡Îˆ‡];áhÐtº¾Þúwì”i#ýsg¤Ê©U¡žßQm6Z*éæÝòç7—ßaoò¬EÛ³oØáí¾cåà,˜
Ë zvnÝ[«¦
-[h×Öì3tˆ3zÞȵ€—Ñ cú-4»ÝÀŸ<?¡5q×8·Úä[úÅ=îš\¢›ÕS%î•ùt 2œ‘aØ\D’=c¤O¹ðEÜôU9ÀkÌW.èþ?ҏJÝÿÇÝðþ04ü³ÿ¯ñþ?a[öUÐÿXîÇ;‚Œœðí^…8 yû}ëÇx®µ4ª_ú@ÀâÒ)H

AÒÍ|[¤¢}©|Íꐢž€,¬šOÈxòüÿEØ&Ø
-i³¥¤¬7‹Ä<¡TF½*lTK'+]$\Èõþĵ‘PïhÈ…¢p`¶¾·§-Ùj|B(r>½8üó˜åÝÂòä7ºé´FgÎÆæÝýŽî`*ÁsZkỲ64¢SÔzG#ye«TãS†ú‘·2"]æÒYÍÛ9‹f’\®*.¹¾»õf6Ìc·öùÊÞ<[{.Æ·ðŸÍ ŸUXæ™q}ýæꭐ„õ9A‰ i°hÖ–TUA8÷Ã@OظéèÂñ×æÒöÂÏ®ÿùDlöŏÔbvë´§ÎêÆtÃçð7«Ð3ĝôš~¦Þx¶ÒÂ!xZ#woÙ¤ÊOÂR®\ ÕTóÊjÀ@ŸRü§aþÒÏú½ñ8|þ3ê6ø¯Á5Æ
-}ôUཚÂ3¥
-°»<ª²UfP%fãCÀ“’Ô"R:P’:L2™6lh¹JWðªUä5
-àÆšÙƐ¶3Ï]í–OžÓÝ4ó=ÕRâCÍ•CB®VÄ©±àR×JlZ©¶ÔJ0Ω‹2~-4ˆöÜ
-ñ!]ùî§Ñù)•ÿ-v”<’÷½Þ`¤òÿ]Üÿu†Íþ¯ÙÿÕxÿgÚBÕu/¨Òì°¯ÃVOãgv³Â}\Œ8³îéŽN”kbÛƒ(ŸB{DÊÆè¼;óÞx4êw„c‘lg¤9µùÈ9ÀvsçÒ½V?rK͘Z3žîã|*²Ò^¢>ÙK?ßð·üù{×·WSÛb•Üõõ‚ÁÞuá˜d óKã¶åmÈ?\íl¬r¬oí{ò“ý»3sÿ:eÍÉWӝÏ=è$ü _j}£Ð‘öÒr Ÿüe±ùA²xkã^Òuäy¢àÈ6>yn¸‰Í‰&¿Ì—€ÈB“òŠðñ°3øóåbùçú÷ŸoÏ_
-©?›9€W‹éö¶¶ÿOzc ÙØáïÿäIxyíúôä÷äùdÜíôôWÿ¤W„øŒ€‘u ÿ³ÞñQy-~’ÿKz°chÃ?}B{ùéœ(½`×Cö­µX¹gfëã
#'9Øsîd» ŽþödîøxN´p°‰?ë$]0¸HÔ¯æè|àÞs6°P Í´ŠÒÆÆ
-‡ßül{K‡zÔDêþVÌ
;>@)ž‘9*}9Óí†Æ|zæzèàÓ¹Ù1ºswF}¥`B[Xa˜_tÕà—û«ü‚¿Ëfø7 ΕoŸ‘²
¬ô]LCô®v0ß¡êß\õv
-B¾ãÁ² Qšà÷fsoyðú# Éþ@¥€ñ½W. at Lª¤¶Ú6³ç9cϨ¯`_}8sÓ¾vQ}í#LÍðªø‰~Y«O©‡‡+y¢ÂÜAÐz˜Ž=
-mvÙjp ½%ÎhЉ=—\¿áÉý?®‹éôÁTM{ì–æ0ýxŸ±n¯ #ü"œåÎ,ì5:=¯ÿcÁþlçï•ÛOÎ&?è	äWØâ¸÷z®øm±žkðe|¾ïpA!S;úàöÜùv&¢¼a×ca«¢ø¼/7x‡q<sµÆùÅ&wåþl»H™èŠ³7Óæ`¾•“õ­ßê¥IÃæw-@¾Ø{n˜àeÃî92@òn4ÑyÖ“ôPÒO×[V¨ÆÏìGî#ô)z,èÐ…•õGyƒsP9äuíyõ€y¢ÄMòZÖ—;y¶ðd_Ð?r‰³gNë)ú¹†èvæÌ€xž™©l	éM&ãIg‚]Éqa©¢•fÕ„¹ú+½‡Áòlû\½sò³çÂB¶¤ŽÓß⣽ûWðSl¼¶ˆùä¹Þlä°G~½˜üPþýþ¸+çoœ¾s6@(½q§‹Ñ7•)ú°ô:Ф°ËBßò	M™&ewŠÿmφv+¼!güŽ>PÁžrã”|Åý»ç1îzãÀÎ- [ßÉ0UÎmòunVÀÉؐ¡<XköFÃu>É-~SªÑm	÷P¯ä³Œsl–¡c…€~Óâj2!¾>çÉqóØÜl猛fÅÆÿ”öÍ7Ίš7_»Ë%Ý4úkºÉ>'’ÍOîi¦ò¯=	.¿²ä¯qÊà7ÉGæ‡-cé…£0¥â¯ÅÜÆ™ÇF¥ò+½p®X‘z;"ª@PaNm•šÅj»XШí5O]¹Ãþhûè	‘RZÖ7åèýîí/oÞˆšû7„u{{'k£4´Ä•¸›³%ìÕv©	ÿŒö#‚·mÏ’Ûh“Øa§
;
-%-vÐ{°õlcZ·ö¦í/ÜM›IŠ¥§ßäi¾·aso¡©ÒûLñ:
¼IÚfÍjíÒ³°pfü¶!;þ$o†(Ëó¬](ÇÈýˆÔD†t ÐWéÖ»ª9#O$)³w‚Ä9ߎ½WæíJw©@ÿŽ”Q úT/[¾.ÎV6Ù¿ÿyÎW³lÝ:bbÏ’ã©Å<啹âOэ)³YCùЖµã©Ý9 À6çjx"œ9ÀŸ,í%óëimX^Z'È|êÆfŽðÛœ¹á	ÏüWÏZ³È<Cl8Cm¡{Pï…Ažß@ÞÉXßùÃn»ÆYØô([è:‘‘ÒÉâÜÚ@Ž;lŽ­ÏxŒHÉb‡ 1mNò2„î²çO˜Ä0cၬ܏3?%A›Æua+‰\9xÂÆg<ƒP<Z–ãœ\âËröpü–²(¥?º5?Ù« Lñà6&ÿ¥õÙnÓU—lä>Ïûš„‡\éêš$^õc}í–7CË·œåC‹w\â3æÌ#TòïMϾŽÜÕ°øk‰¡ãyfùáu+r_åúØel]PEüŒ-.¸JXW‚áûÅòÛ+¸Ë³m+ßÅ-QE…æB!]¶™A,²jpšýÖ
î×——
-–ìF¦eÚ û¦Kºh-ž’é‘è~ìÝìñ¦£Rd1uX"Q1Š7nLNÁƒh>JÒ|_›]vôÔ[Ê$V 1ÏŠb·Á¬³iI«·BÛxèTH”ŽÕyB5I%¼•èR\Z4âQŽ¶I,@äy†–ÒË/Üd?I1O#[èð3;´0åœo…ý“þÐG‚﯌8¤ñÛ•:ãI㯓¨'ϯ#Vmµöæˆkameƒ¢ki™èýËx®
-T3)ùýy€•FªÖD.ÕÄ¢ŠJUžˆ4
-‡ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍÕ\ÍUûëÿ‹e» ˜ 
\ No newline at end of file

Modified: trunk/thirdparty/uffi/doc/ref_aggregate.xml
===================================================================
--- trunk/thirdparty/uffi/doc/ref_aggregate.xml	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/ref_aggregate.xml	2006-10-24 21:07:42 UTC (rev 2045)
@@ -209,13 +209,15 @@
       <refsect1>
 	<title>Description</title>
 	<para>
-	  Accesses a slot value from a structure.
+	  Accesses a slot value from a structure. This is generalized
+	  and can be used with <function>setf</function>.
 	</para>
       </refsect1>
       <refsect1>
 	<title>Examples</title>
 	<screen>
 (get-slot-value foo-ptr 'foo-structure 'field-name)
+(setf (get-slot-value foo-ptr 'foo-structure 'field-name) 10)
 	</screen>
       </refsect1>
       <refsect1>
@@ -375,7 +377,7 @@
       <refsynopsisdiv>
 	<title>Syntax</title>
 	<synopsis>
-	  <function>deref-array</function> <replaceable>array type positon</replaceable> => <returnvalue>value</returnvalue>
+	  <function>deref-array</function> <replaceable>array type position</replaceable> => <returnvalue>value</returnvalue>
 	</synopsis>
       </refsynopsisdiv>
       <refsect1>

Modified: trunk/thirdparty/uffi/doc/ref_declare.xml
===================================================================
--- trunk/thirdparty/uffi/doc/ref_declare.xml	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/ref_declare.xml	2006-10-24 21:07:42 UTC (rev 2045)
@@ -44,7 +44,7 @@
 	<varlistentry>
 	  <term><parameter>type</parameter></term>
 	  <listitem>
-	    <para>A form that is evaluated that specifies the &uffi; type.
+	    <para>A form that specifies the &uffi; type. It is not evaluated.
 	    </para>
 	  </listitem>
 	</varlistentry>

Modified: trunk/thirdparty/uffi/doc/ref_func_libr.xml
===================================================================
--- trunk/thirdparty/uffi/doc/ref_func_libr.xml	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/ref_func_libr.xml	2006-10-24 21:07:42 UTC (rev 2045)
@@ -103,7 +103,10 @@
 	    <listitem>
 	      <para>A string or pathname specifying the library location
 in the filesystem. At least one implementation (&lw;) can not
-accept a logical pathname.
+accept a logical pathname.  If this parameter denotes a pathname without a
+directory component then most of the supported Lisp implementations will be
+able to find the library themselves if it is located in one of the standard
+locations as defined by the underlying operating system.
 	      </para>
 	    </listitem>
 	  </varlistentry>

Modified: trunk/thirdparty/uffi/doc/ref_object.xml
===================================================================
--- trunk/thirdparty/uffi/doc/ref_object.xml	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/ref_object.xml	2006-10-24 21:07:42 UTC (rev 2045)
@@ -668,6 +668,13 @@
 	<title>Arguments and Values</title>
 	<variablelist>
 	  <varlistentry>
+	    <term><parameter>binding-name</parameter></term>
+	    <listitem>
+	      <para>A symbol which will be bound to the casted object.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
 	    <term><parameter>ptr</parameter></term>
 	    <listitem>
 	      <para>A pointer to a foreign object.
@@ -693,12 +700,9 @@
       <refsect1>
 	<title>Description</title>
 	<para>
-  Executes BODY with POINTER cast to be a pointer to type TYPE. If
-  BINDING-NAME is provided the cast pointer will be bound to this
-  name during the execution of BODY. If BINDING-NAME is not provided
-  POINTER must be a name bound to the pointer which should be
-  cast. This name will be bound to the cast pointer during the
-  execution of BODY.
+  Executes BODY with POINTER cast to be a pointer to type TYPE.
+  BINDING-NAME is will be bound to this value during the execution of
+  BODY.
 
   This is a no-op in AllegroCL but will wrap BODY in a LET form if
   BINDING-NAME is provided.

Modified: trunk/thirdparty/uffi/doc/ref_string.xml
===================================================================
--- trunk/thirdparty/uffi/doc/ref_string.xml	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/ref_string.xml	2006-10-24 21:07:42 UTC (rev 2045)
@@ -52,7 +52,9 @@
          (result-code (c-gethostname name 256))
          (hostname (when (zerop result-code)
                      (uffi:convert-from-foreign-string name))))
-    (uffi:free-foreign-object name)
+    ;; UFFI does not yet provide a universal way to free
+    ;; memory allocated by C's malloc. At this point, a program
+    ;; needs to call C's free function to free such memory.
     (unless (zerop result-code)
       (error "gethostname() failed."))))
     </screen>

Modified: trunk/thirdparty/uffi/doc/uffi.pdf
===================================================================
--- trunk/thirdparty/uffi/doc/uffi.pdf	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/doc/uffi.pdf	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,10 +5,10 @@
 /Producer (FOP 0.20.5) >>
 endobj
 5 0 obj
-<< /Length 190 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 201 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gaqcn4V*,u'LhcqMEBhUo<jf\<YI3&>Y(EEMsqht at Y3"bDuEANSaIB@=U)8^;]&0aV[0D6 at Y@o>3i0Z4)MTJ1iB1&t1P?-rae:7E1X&Rb8&g6M;FrC6%(/e!qVF.CSIi6uP0V2E=6OS3NXG+2X=('n8&(6X5Q!p;[Rg*K\^g@"_cb"IX'Pu&"K-/idJ~>
+GaqdX]*cD?&;B(lTAl),iOH at 5G$De=MG72'Yq]!?$6qt2q-EJV_Gi>/s/i"t<YjDPpBIl;OsFK],W_VAdjSmtNX!d%$GJd<iKP@`C7F7B\4aN'o`*!Hd\`C527G^=cu>#!0$EmK_'.Pqq^YH!<Kd&3bW6*^_c]c9kmt5c=$QVU6<Rh(R]Z8]_8CuImRsaYGQS>T2*q~>
 endstream
 endobj
 6 0 obj
@@ -20,10 +20,10 @@
 >>
 endobj
 7 0 obj
-<< /Length 971 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 965 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau0B95iQ=%)1n+kh#rrlA'1'fW"8(U0G6"kACCQ*>D^tKK<!X.ESl&5P^F49'p"L'EJ8u&jMPO7*:k\i-^-,O!"MgCuBkRhucdTI,G5NoK_Dq?kE)U?%AOp&!P,[.JO(ppY%.QHgNtj#`cqMfB8aLL`e5nVdL>e#oo"8+.QT>BMS7t&b)i'2H1\Z*c&Qe"o:L8PZ8i'[<-EoNI9%u at 8eA-(@_B9KFH!<?Z$$!k/qp5#*Ei2_"3/OrX4_M"d,ih7\-AD at i0nkPJgrB6lNu;)j#/ZW/.(VUDP39qE*m04CB/H3/V".--i*$5tpD[/<,f+8IJ".A&6Ae2M*DI/./9/Qa$Y)%gE1kl/C\Z&IU'7jV;ln&.Fa.S5<p8KtpC48afB2gKLHbqogtZ<%:23.n+9TY4\:mgTo`tSS]D*\JmWnfkNg?Z>D+X'B(u4EKmWJ!TC at 0]<=F_f]kj9BDHD6!*0=Eh9t7*gL3p`*JSOG at lko/P+!<FZeFX_&Nd-7K+EC*1upJKAm;$p=:o=cI>G169hQu!bo&C9WTDu;gaKc9)so/JW=9X:3nO;\e\3cX%97JE0lH%k[`3pYk(Ho3P#^r at XO#eGVZQ1Y0o2L;UN%J;;o:-"Y$#FVI7jL;3_!a42$$p`::QQBFbb-,=UfL^`9M4ZXhIB/gf2ZN-*<6^(oZ!YP\&r+\(fd-A9D]>Tg0-<Drf>dHnHRj6fS0W0)L[Y#LbIToP5*59Sn\5,_`Hn]XlYB4RT?f)c;\`a49XA<Orf&-OVJs\lkTf at Ir*L2_=8i2]DS,KDq1ZjbA[@q-$Ah^^QQ6q*/R?W- at sld7eMY)pmMjV_%##=3J3#@XmN;@cl</k+D::[G#7CSDN;WdSfR^Q!*Vo?4a^i at J,T.;+Jfnh9e:8h3OnS%O%1hXBJh:kIf<JMqi=C/fjk-51c7L1o,&\DTYTFZm5pE%DE6'e&.0MIO4jar<)F'@o`~>
+Gau0B9lo#B&A at ZcFA-9Z`S\\a;j*G?g8#gidrqVQ6.j%f at O*E0./ih(NJo,:9QS9/_s"58Dg.h\CL?1UMbsWT#Y#r/$p7>qI,Lur&,a4q*_<sf$j%O31[t"sEAY6i"i!>%??q6/YH:;7_^lb<4qDmi3MlsD"m81?_JGV7i8eK99"_!XJ`"DOWS69%V?g*poDpTOD+NYulf9+Uo`GkpN\R^oiss6d1+_$n^?25[9&oja`4eNgk6:&60/TOB6uH`Wp6H>(0FlQ+&l1e).un/XO\^rLae!\j^aO6ZSR^<5QNT"!'A$fUMJ#msPP>Ik"%k+87<*#mLg"3*M3QXj@(^rV33`Ef<,$'],bHf`&KqG70S_>U at rObfN@Ksee2_<.A2Ype;4lNrOpK1OGTj>/<Ma"UDHg_S,a5W'4EY/#XB<\#Q*tNq9?^Zh-]V.`3@&E]jQW.pO#@ttltjGe#p?dRd2aYi(&2T at n`H,_ at 0j27nSae5"nl@;-taXu2Una?K]q-E23QVF?gdO1(ZUs?WBMSE*'5u_fc"boeG(P`a;*_&1JCBr(B2<3YDA_&QnfW:dO!lUkp,NHERE-hZXZ*Z)7m1"cDWk?B$3Z%5/i-kqOQV+rZcQeSgNd?[R`o&f2ntr]+CO8V6X:ldO^l'Dih\DmCK?o"nh#P(^%#I!hi&r..)RnpUE=DYekJfLX#V!.mH5&_CU=G)RqESAlT(X@",'+9\;Qo0'aEWgsY]g:/1P[^K>$4**4VkH='g?99)V,6i=K%e<(Y:Igs&e7=Vacjr\mMg^u8J1&`_1/&r`fU3\Ej-d+>-1m at B"_3n-uBP>*n>-c\ZV;2gTE8kkP7[onB-ZrdueerP,n!LL?kH%o&<]GtKfIhq`rShqJdHX,L[,-5?>m[u-Lj:e[Q<)WeX49j5FHX;[#JW4TE1:c)ofX(CW*Oab`A*_g^'q18h$9,LL52At#8'F<d/~>
 endstream
 endobj
 8 0 obj
@@ -38,7 +38,7 @@
 << /Length 71 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Garg^iGoCd.c`?]8EV`b1=.gR0K1`91K?+0ZOMGdU/Zh'Y!=Te%#&:?HH*JE!<E/X&V'~>
+Garg^iGoCd.c`?]8EV`b1=.gR0K1l>1K?+0ZOMGdU/Zh'Y!=Te%#&:?HH*JE!<<-b&VU~>
 endstream
 endobj
 10 0 obj
@@ -50,10 +50,10 @@
 >>
 endobj
 11 0 obj
-<< /Length 1935 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1932 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gb"/l95iQS'SZ;X'jS`aUiIN(/T%Bi>bk*JaP at P90_C00,E_8Q;NUhQE_&qbP"#L^e>=8l#)l=gN^uG0nBRR\=#\UU:Nt#+_1[QgF>e01F at 7+XrZb0'-a)M,d3R_C1L2ti]pcq_kMjW%dib#G*oYDF@^bgr[`Bt]=65_=[kmuZ*nk[k>E;[CX at FR94lQ!O63>RFqd,._S>_",X$6.*UdiZ6JO#l:M>4g%Fk19\QB&5Cf.j#V:YS8*o1BdZX/*mq>R?n_%t,TD&EqW"E3>:=X&&>o:OOIG>01>Q2H`uj%Xm%R&En6#Yj;q)Q^sU*q4,T:Ps;8L#j-%Jd"TqWol,2[*ZnG+AK`Rt`'_k@(<a6jLqJVqgo7A^?mHTcMEmh5V1[1Z7BDQi2knOE]KV#GLc>qOoSiY,X"&f>dU%F[XbC"mildTZ#,"4(d$`<j9aHQc31L^=X"pA\!Zki=T/d/[H<+%=etlEnGC*>_lKqlni4U[>)(ub.T(YtZ<`H21TQU;:SHF$"_!H1P*qeg&=[MIDiPSP=fdod>AV+F'!<O8OZo0pWL3)s44r:1LDVncoAdAI/#osc]C02P7B'&SV+[<#S.#%$o"?J1s/-Wu]+5["nd,Y5/4lSFr*s;YYX>I<UES'[chA&qq`e&*^rU/]1,,tFZIu'p8jmIdbc4+:1FcqQdnH3bV)PH-e^@TEb[CodFfcp=%;38LD*_$+mU"jn_iU6,?IBb5uclg[GLL?=*nrU\R%K`1/*KKj/0TOu3U+F@^Q at 6@!Z$t9!80:,fo5/Bh%GWln:\U(P]DG&Co2pJ!$Gd#W:`p>5ajejRmB]p at n5qi2fspmiChBe5DODUYkfM>N5JB;Z at A\Cpb^\Km3d%X3[8B#TesZ_W-O=h1eB(9i:Le(JRDpNFm&>k`[Gh=e-O=haeEKJ:f+/L1lGou3^t-sX`h=Oucrj5D#a&C)>f5flYNGFrngTmbV%NkU'Hkc!'CBtM]@I#gM`e>]@9, at jdo;2]Xt1:t`o1,%J^0.[:tYYbZ&im!4[d"f-n2q=$j[!i0.8o!1Km'NfVY=+Q!?3'HUnJL"?IYSgb(%i at D,?'2(n&\2.">pQ"WW16_?OJ"F=BgnEeT]&W8IsM_)&bXH2KPRtF#"1E\7P4-$IE#l'^L1mTorC+')j#/:3N#kYL&[i;LfNQe>f3pp"\HdU4'%K_3A6U0qW.n6t+S#a4!rD`.A#(]$d'nu'1?FY`ToD[(uJG.X(#>qh,2B)K;5TnE6OHq-']n8e/O#3HSM^5IDGC+V/gS43Dkme!k6Et9L:=.AWCsJi\`2SMeKHSY3OcF7)ZUPiM-He&Fok?@j)9"og#]t0a,MR*1U;#T0/@08(>jUh6j=YalJNu^l3hYkp,3g%P_p1D!NZT?SgBsH,Ds6ctJO'7-%bU_JP`orsJ`/'e#=!PH#kV"5@<WejAp=eS?EU);gGGjYEROXm)14std"'MZDm;W#A<1&>QVZAgV>ein!!7`F6oNfii3\X6)QpeCr)nuJ%SD0K:'9:86(jDa*U at m$$]0J;7VTGIVg>1ZNcH-GFJbk1_="3EU#CEHh)8+]/",LueqhrN(ogNgd9I4gFRGrWeo$`rJ[]3U8`J1Rd>onH+OJ5mNdA<sLA9Q\!.>kHlYWl(K0\Tb=pOE/b="J1:1nI9qp=EkN<=sR-jp*-SlqcR*<QR+r..G%YD''t1Kc8ND;e)];6[\5!ZaWFF8HRn@:V<UX259S3.4)cdi][tHe&J%]="oP%s&ecHS>_IOecPucha=SD(e>*QOW6?8(^)"M^0knp(be"gf#?BCDsmB?s*R7qN6lGDqYX&lXYH'i&l5h5bM`q9`$Hri)'0Y^=7nA"G'lCB_AgbT;SH68$8&9g/[ouPDSJlL>A;oE+Ym&7lSoa2u7p=XRFUf^g&oD`:;K5#H\>Dli&^?"*UmU5l~>
+Gb"/l?'!]/(kqGS'u%mAJpP0/ELGX)V6//mD+JTF?9$fXE<A*>)kuEFa($pq!!CYMh)2E,/$0jVCi"rL4>ZHrbOouLdk1/^32)HnSW/"M)\LD7reMB=M=1U64GgW<V at 2jr(XqI*>[D\c)MXGX&FR4[B3Pmbb+b1j?!V`*Hdc>j>ml_gc!Hi%S%TH7T*TZu+X-)nqbG79P3O&D?[q3r8V=kbJO#l:M$/CLFh[CQ*?Sd"mpec#T6?^\'t#O[=)"4lKf1h$%"0<B&Eqo*E3:qNFeABlJ-ORQC8I5-eW-B at B^!><JO&Bka)-TfhKH&coQ-nP<H53d5VRZiJY"kBG7U>?mdYb6>aDCUg-!U'BsF2OKe2LWc^h)u"\-A&cNjY7=$!?N&[Pf'Y at Wu37C*:2TK!JgoSEJ[kZ%s%dGBB0Y,,=bo#m:>%)@EZTF7UVSe)OH31Q<bYB-[U!eR\NNuS9(4fU##c;L\Kr8&0eIf!`ni12>RPq3\rOnDNL<n<gO at -mps\cg`s6gS."i,S2qgIm at 9.D0$11nWmo^.iQ?2aF%r6L+j=bXuceRa5QBb*t=k=>L)2/qf6(!4=#3Dt7Z=V,X)[23];."9MjE*Oc)ZjUZ9YrQpQ,=LZ7`*'OW2H<P+Jk2X1@&\K]\m",D1C%pACs2_S8+9*LN8lkg&p8"pE6*J^9<c&n6A"Wi`Xm\?4X]4'0AXtLFDd*Ut2s%a>++:)r?MnbhH`+X2'N8ZVkeRmJ8#&1ULo#_hQU8aC*a6Cb)c]qhpe]XVF#c/)$B!dek[_EPD7G-%<oiL_dXQIJbB0>S+1FRUJcHJj"?JlVEuIC#1K at lFW:&b`>^p%f1Xc>j71]as+HrMenI2ba=S@:-SSH1(FhY:"_krCo+fbnN4VKU-_;#,,)Jp!]dUqoG-\\]>+f>VJ4Y&:"_;/]h_JQWHFgYg;X'm!&!<SfD)>OZLr-^)H<ikHTEV_+]j/#d?L'f'MF!ouiJTIB6`PPrZYSScqAXS]a;EGXD(e:.t"M-!:7cEd!`?N#Zc]H+\Tre;p'+bFkfMM:q=`fB2Z>Dt.C:.e4nZW]=#^"]sW:.0Z^ktNlZ6!*=Z6$35q+A)B+[[>8#R#HYCN,'CQlllS=I+509@[k')/e.3JM)J3&aT\-3[<QEl-DbsjK%AF/0+Qr5TnF';nY7j`Fs(g?5_R7]o..!@g at QMVr8`cPSGE)Oj$h1q-?qS=UbF`%Qhgai.Z+22XgW]2s@^;H3:Q6]>fJq":,.A">Y/]Nd&k&b)n%BH'p"er/i9Y9tN/%A%2UB4cre$aU&kgRE_._%\3rK#R#]RO,UC#9b_;TKe1""or!4L1Q"LF#]t*o;)WJcPA"@#*NT+-*1)#]C2tE0X[&Nm+X:ZETSNq*CUcqHN0F-ce[=W'9FQ at I+;!c:o)X',LiTej/?i$+dGRM*!eHrc,M_N.b,ig\/?4tu?(2&s01e+56\ZQn#W/3#h(;YUM;@II=8ArH/e*P!#7q/_8D/>-S5.bOQ0MR!TB3TMT[]%[Bo$O[#]phm[-eF6O>u$0P\(]uFK[OHZ!7M8>ppS+E9Cq+A7aY)G"i[O>3/1b4Q9qY&)A]%A53C5\o]^%F[p"6.!D=?Bi<W.oV7<U#]t6s;*B-DBLoqph9OVD>Alkk*<`qV1-XXqGpOZ931YKhh"u9MhBm2$K!HL1k`Hn.h(aG!.j(.E`EK9f4B(@YX=[]A.143*+OE^$fNf[HN9n`t/o;1FkmIQ`#8scgW"DpWkJl4^juc--?kDO)P-KuKog:t#/OfTA%3".pfKc*B8]E[D(!JWuYWuT2)SM!#X8rAc5]X_I5)_hkA:@m)!ndSckRiL4^7.;KepX].C4e''TViU..Dl*I*W8(j]kl1uiBnb8_W*6F%4UPd7_b"eVn6jUpk1ZbB3]u_F@(d2JdDrL(Wb5,B7:*P7ep$~>
 endstream
 endobj
 12 0 obj
@@ -653,10 +653,10 @@
 >>
 endobj
 120 0 obj
-<< /Length 506 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 536 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gb"/i9i$Bq(ru)mMOr%8!*f:$**ne?Aeto&0ck9a9+rig2N?VN(9g2Z)IjsG52l(ml20H>DkEnbbWAQ[+um at d.m/c6*^SG+"Hh%8,8(2+6J4N5R9d"J3V#OTj0SBN2g\QhAdBCd\5mfr?7T__RH_SACtl*(#RG)n$5p1ki]4S=g%h<82BH;doY-TE?h?+_3p+i>EsDaJqL,P<7_M,6fQfngj]fKuC8lC10AG=_\b1o+l88PB!PQl:-f]N5&uXnZkqP>V,+3`d5X7RV.@\%QG+6GY&NaQr[+2dS/)BR`ZHW1ZIMfn=%0Qh+/^ND9V[4D)cT/,![*9-dkIF46Q2.0XmM(2%r[`KV!DGH`=<%2h]sDPYL`Qg-k[t[[V)FQ"Mcl?GdrZB at Pjta9%0Qh+TBOh)7.4)fRJ5(AWT`2:0G8?C>/l;3M$i^g>@c%-6 at f4ORu5++9qNj,C"&n0A1dID%\_uMD<:PCJd(eqnL17]c=t)jd2n('?3$!?l%/~>
+Gb"/i5u3+e(l%MWMOr%8J at 24*E-+sCR9_Z5`H]2#/0n=AC`<>e/RZ[I-5ql2pk?nTYIp]n]J"XAo>I'9*"hOGP[k7n>DF?&%tY'E`ILdG"=SO\\!*;X2ao@\VETk2C;%e`<VN>R*`r/cPubFPUJ+IW91IYG!W`=]7?fNZgn1<&P[*j0Ds@?Mf'aQG\QNQdj's-h]lkM at T\n'&2OG4'_DWp%1>THC=il&lgnK)k^GM>jNdVF'5X:*R(;kS2,4"DC=$qG6+r^>"J:N/6Ecu]om&#[W,.,WZD,,#793(H/U.DmLHlBfT)@-W49:6G&InfFJB$OQTXA"DrSN)O]h/]ls:e-a0:gM-3dOP#R"XW0l14S>h!!*-!5_(OsS\<J1OfPV3#hXh6!Wr4)`3arTcY^TOMR'D>>n3LsZ.BEf"SA=b9.GM)UcM;Aa7b:Ip.#NSbRnV-CT8Z&S4dLd%!GR68"T4X./\0G'f%F'&7!=N<`6']eF",)pA%/fY>6ju+'d[W"ao\&3Yrk'k'uYDH3Niu!,2~>
 endstream
 endobj
 121 0 obj
@@ -733,7 +733,7 @@
 133 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 144.0 664.0 209.83 654.0 ]
+/Rect [ 144.0 664.0 210.93 654.0 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A 134 0 R
@@ -761,10 +761,10 @@
 >>
 endobj
 139 0 obj
-<< /Length 565 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 566 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat$u9i%iE']&@2]$uF^'M<qYM3I-q'3ps7W1 at .i#m8hGd at Y=^Ao*AYj"kLt:[bh9LO4C&,_%^4asaEm*&TKC;4A,]\rWL>_^T%pN>X<FZUZZMNuB8[E/jjkk.rb[6rN4.G\7N.NW<Q'PHnLcbta[BFH[H`h- at JrTV4RS3CE20[Xksm,IDcNJ7Nl?rFC-lR(V=&6NX`\%]P*YWg8(62Q$sb79o9PAoiHq_43MKZC$5l\gFLX.W)7G`K#upZj0&`**heVCaQ+Y!;`AH4cj)3't.#PaF,Xu<-_g.U9<fsQ;b2>N*R-OPRNm]'o2`R'iNYNegh5jPAZ,X)r=TP`j"9=)^A[e!1[[MU948##:k<6#ci\[s)M41k?Sl+P?A^;K`GW4CUZnYVgcp!IO"CRhe;``!^#;FN%)s&V;^(O"s6A!\*CjUi]'TNgGX.T]s4_iIZiq8jKqsGbC8ec&&"O)DTiAQ8`B-5[7c!S4'K/Uq,R=Ac"-L\rRq4R8`#bWCK at j=";cm>kL?%Z+IP><\'<XSD/fJM^TUX5>rI;i8>"eSKCV#e!Dg<dDu~>
+Gat$u9lHOU&A at ZcHqY#iq(N#UOh+G;8gJG7H>pN,ee/A?2Oj^DcGFI8P:C:b`Uc314ruMoDj,+OK&hmAF[92rUngX=P2_gj.]4`SF[J0i8:)W.2\-+WODmjAOnL.X99Q.8K=i]^bKg1ON+Q(rP1kPs\)].p3SrP!">DO"K3Y*ff)*8<K9\p at 5X9@Fi-r,/$VW;A]qI^$fn at jP]iE85<Eh.PlS:*eBt+!06%]>24n=t,IC_><<,#j52s!>!%ZCW>1S1gn)`A@/IKFT=n/BA%?4,Gc>o(/?<N;cAC"Y=;]u[1b+iZ\[-*'#-ni at 9XM(2ZW:tBGB1etV$qgNqC6PmZ.+C'kMSH<buTnp/A1E<Ir[NM+^2uTds'4(6Y%*Wm!J<1DFeM$kJJXV??KDg\Gl[NF?rsOe"<>AH`YtN!>>7<5\0^SHSO3$oD=`:q!>n>Lps5G6O299 at 2<gVjr_\!*^38N6oUfPq$7r+H?\ot0njnVgO$tlkphu;X8]hNsZn(+4J<T64cCcSD<1-eh0R,#/T8)3%^T71^ZSmo-ei9jn.^Q\@OrrQ'q2g>~>
 endstream
 endobj
 140 0 obj
@@ -779,7 +779,7 @@
 << /Length 1955 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GatlQ?#SIUn3+NQDbC+d(%n]B/abB98D=PmciWMS(n%gh8>8RFp<m<_P=UP+/]HsTk_461I34Mo]O"mV^%!*r5Y9rsX3H at aCbN$Q_M=]76`q(K.>i`0=V]5SQcgDK)CjT'='clA1i_!c\\uRDhj9>\lS`Mq0Aea=3NM&6$l?m3eB+rjLEU\j7.S*.7E'%';M>U(i?*[VHQ==$?'L#V,[0S;%2o@%7Y,V0k_9FJAlPP6/R'1PRb!m7O0ftI6mlHVcp^5;fn(8_DVi.$RMYkBo8[K"=t\4GMI]LnCZs:787QHD^'Bqh8_Ql-]"VWBQ.(>N%?YNLG$,.AfauX1NSoLgqoF[TeVYu);=of.dp;/-QIV7T)Qq]8X.5F/<pHl-))!Jdj=rT43I;H.0Nt7C=V*oc`L\GW\H_M="`MTWfgH+@&;?^uc<p<F4G/#G85\YcM\N6D;UC7&'n/Yf%1p3(BX?`7%<&a1Qmo5FEiY>9cN[ZKT.-;l1PIp\fo`gRTZpd0B\g9^:67[g=DJ$O`\-.*[+$4s>L9eJmu(g%7=h)`_JcrWChn"&BhNU.#L%%'bHj[Nf=<m\f"cui7^fD%QZ2H.^-S4:6OE1!g6+9LIpNt(S\!lsg6$riq+Ipe(lke@\X+crkQ&XW2dc\)[B1C-Yg]OWkac>;)Jgoip[FMAOPp^b8.s/'jVpRg_$CGs.VC$(Y=^$85#"I6_m20J at bMj:VqhBa.O0^T8.%e at Z)0T]*cV`7m+Wdi!^71/S,B4c)+6-anb>_dDBEZJBNY+$Xu at j+8C!Z:NII\JJPq- at nqcI*&gVQ5bEpE`TO+JZGM+'IYhucY%Y@[QF at 9A8s4571c3lADL1:o[3_$s!A(:A-0a`>:bt^X-q8m$j%jpaXnA[[2-KSD5`\jSH"bGE"K8h!bSIYmI6G7QK at Ah7CH_b`YkRf5Q`f25SOojp+Ao,@?"/Cipa35Fpg8[53Z50J;mDYQ6-:s5>N=rAZ4#m$rY>h)\0oaU<9cs^'DBi>[o9h#ED?NZP[X"K\8UNMrcs0^1c&l,7AMDYu3FZB^2E9Pna)lTE at n>AD!o0''>h2fd[3PPnYn0PTCfJF+7mCk_ARcT5*K2]'``&&fVDFph7<K+&11RaXbk<oF(F(#jia2>lag(/u at lK;(>-ti3m<JaLK'M@#$./NKJedRj<<n0-Q3"nnSMRL%_[8><@CW$"F(UWaLME,a>GX,9l2*3PM+n&Rb0Q9Vo>- at F?XGrL"N<'\Rf/E4'\^LeX]BTe+jYtIEJWN"7n*p^[uV&<Dcta3A`6*TH@>fg,G53CB]u&*mE#d_logRaApjK,F_s/r>oNC(Q"th&keGnI(CqUfiLJ.u/NRk at A?$7>&"A'=dP1=;.D>ZK?j6oblgN>In`h6"p7+MZ!]I0nS'EL5Ir4H\VnD'[S_fqLkp=Ha8BY3C^)nORMJ"5aWbD4E[M/Q<3N;(QUjtOUT]0iLXV183UIs.F+du*Tr1WTu6"FPm[qi<bad[&Eiq*itfs8n/S"Yn+fI#!gnAkeN=C1Aqqm`%U at n.lT8G;<IbPCH-_t`PXD+<=lA0VP<GUKC75+EHYnd,N_4eme=I6NB at +8F56qtq!k$+"=U6q/lpqRgsSWJY)E0mAI\c9-4X]>jb2ImJc39#*l]2TG59=dd1.`4Thc"n2=B"^&F"k4+RG['$)*W>S]FH.b&@':FNIjWE0sfe$(i"DVV4YTAHCX9QXmI52'W(;ukqUjB.HpbgKu>P:GqXJQAb._-^_%^.EUHI]6OI2cNjPTKC<6iuXn90n;D\lGAA8!7V*S3GL("8ecc at C2k^@;0+k4%SBq_sl?I at k`RhlS<4K;9b-1gRWo"Q+8[4%J<*WP3I1G3&-Bg2DfekGn=T4/,/t@=1 at Aalg!JJq)U#D"Y`D4HeGN0;KN%a2A^jJ>d'0;Mur'9r\pD[BZ*4B.c0[9Mm^KQ!<g#4SH~>
+Gatm<968iG&AJ$Cn5a0k7ehH)<\&;?*@GjIng$"c%kn/Y(fLPFP#@iXh^&:8$]26\2T#oG_0p`6//Ga%>eI`V*'Y]_)E<Z*L$Pfn4NE0%EtY+T:7PoA%MNK[FoK%DDeRZTq8Tu9PD!JGS&N[L7r8$MfgrAao7i1oNUrLCpg)Ql8J8t4%9n;r&N<CKrju33U1T$WjEN<TK4I*ZA&NpkdO7pYM[cl+K@'9^kZg`g at Zm!:1TY`BQ\\nP3g]c,eUs:b`/GeK,`H3ed)4,Qq\NN/PCWH-Oj)&%V.NiWr/%S=:X+VPBNg96\6P*;k#0_%(#N$qgTn,Y$Kf5W04B90'SjGd@]S<K6IEu8UN<]rp56H.?0CdEf9N$J at E.o>JsP_'q6,(SfN-qP at tAk.J!<oQ<g3,X&4)U.^9:eP#'AEo[,pjp,"-E=,%#!GY<+)'_0ur-,]cXIRar'bl3'AshpC'ge-rgffncJu=$e*B)KfAh%C=+Ai![Ouo.8*Bmf]tlE21d5]@a@!LHA(!E,`$>$nBZ+=>d0:,e1Ht9D%\2HQaVBOP7]mKOfIi1u>U9hXLirD'-s- at D"P03Ou5b$O[m-[_?(b`r#Ue(ekMe^u)LFD-6<j6XcNPE]">;(`<2Y[D7F^lWikBbF7/&2CoD6+f!V2 at i0A-eMB#1Cg*XCP&(AQkla$E_2otbm9-\\As"8CSEcVASA$H^3lSTCPmu'oK$&'m!oLco\Z/\j]T<h2cL["MRI]Qq1%><LA5*(,fu"NB?-T$SQk.qQd<5=gZc:?!+#RBhjJ)lsSdkRZ21*?)Nqng_6V1,(d9=6uIL,TrbJ#M+aFj89>@]C$<KF>>l^H]LFi*s:7m$p5V?^Kch#jFma1uB^Si7TUn`D3p?L4rbB0bK!6dp'i#]raScBc?3AB76gZ7ZUjG/V(;[Gn+0N[)t<4s0n1(S+*3,AEmT=O'u17iW1q4(QWFY-#8UV.u\fhd/DO-^*Q3f/PY%^4Vt`Le?hj'[o%bZ4n'_,A]i-3hMNim)IDJH+*-^/P,rS+.=]QVE$Di>6aGcaq;R[gZ3<S*Qo1Oc(Su![K'B($WTjEe;!CObedP(BsVib4Sic'%N?p[n\p:s'0N&cAipa<>h&XY.PiCZ`+33gq?[J$.IM'1 at uXd/S at EP?a.f^/CsNd+Yc+]`1]bV29(K)JEV7=Z[2$Jcqb@;s_.JCbFc0Ykqjbd(%%s&#T'asoS.("&Gc<7rXietbCDQu._d?c!56Al7jk)4T_4XGkh\ojG1%EZNU-8F74`ZGDh`a6:^#`g`Wksa+m/$^P at 6b&Q1Xs*g_il<QG!8K1'@;3d?'c$aQXP=)j\kH-r0P%cg(?S)S-Z[+7!g)LYSZ9u#l2O:$s0#,TB@:;n.L$2niPZu]m>O:E)+slQ>>9"2k0C:rYiBY41nM^SQLqTo[@p1U4j>5mtVa=P:;-V.TV#&U\'0<S5AKKUkq1<BC]q(mLaPGK1FOpTgh^Wqa8Io/',oHBU?58WAA;caRiCDgU>BJQr-,s`"k'Bn0eLNWk9*IH`,hjTbUL)2#h[tjnu[K_7eG at qMVr"M%)3]XEJn>'#8D4,+mej]]3gX[__^2^5##Pap('S:qUV44]MlWFq*<6pJ`eRcbZs;$n'mk%^YBY4FJtR&P3!Ib8YP=<N>Pj<H2>f8Hn_gB`B[?`9@!;E`UdgIe;`$ECJQ'59l$G6*EMO;4"^j57m&5MPA?)8C at 9gfT/gG5["=[nrM"RFmm$iL3:\3fUg]2Altlpk1JX<79cr6^?+7,k7d6<H59A2Iauj\MTk_V,B0HH60%U&"r,]CA=@!P%8ioEC3,3iI>1s=(Cj=K$.ib<bcmOqB\+3AYar<k(Cg=1&'=U!6^"1:^)]8JTfbkNo#dMJlJ:k#r49E5><U.Z7?H+5oTe5LY)&*KcKaDMMsJ at PO)[^BdJnqA!ZbD(6np^7mO#s5^BrIgG5~>
 endstream
 endobj
 142 0 obj
@@ -791,10 +791,10 @@
 >>
 endobj
 143 0 obj
-<< /Length 1082 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1080 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GasIg997gc&AJ$Cka2?Q<\I'cO"%ZU"t5Q5lDa0%Q=ubD74KSEL&:1'Od%hIZsG;rQl40/Rg4`Hh!TW</s<;*H'>VU?(.:,=d#5g/?*]T-?Y2C;rOMmP(,ZCPtX`G)-%cBs-!)6Z,K;#)Du$9Qt?(EW1"^V7HWsj1]<\'j`pdoTr3d=Gi6P\F]SJ+XKGF2O1kMjr;?+.I\%J6.Q1]B`+PVfReB$f\-6&'W'^2W`^kZP!h/.QRGU07]5lg\T_UOmYqaKYBD[JJJYu'oIX4tU3NjcQphiM=PiC>+R$7fCNDu at 8"@4E2Un,5Map??MEk)<B:#dX4<)GQ4(HPB1$I&]TBY,T[qIWH*o%g"U-o9iY.l"b55id9#kr at C\)JR6PX96V?Acqp["gc9WH>54GI0pV9<XGM517tN,\Bk4S+;N at hoaM=>5D7oqTYPUPZ9=T&#?f]JfHr8qMTedKCu&5B$@:5ui1h'=^6%d[p2EOp!aXmuk-?Nf<7Gn[n'#@"pF%P%PO25`qrZ.#q's at K\J%r=CM+WdCf(;\\>Jgf3ZrGXEHG![oJ3$B'kHd(a!*0ufhsQCG7lQ$N:uA(%14iE1BRp\DRk<T^t0YAe(_tdQk%>/]Xh,*ZT]$43U#EEY&n_iEDm+P at H5VJMl]2>$J]\q9[A;Q]EB\pKX2o29?Bg:2eX^:OpltYN>J2.eb3V6D(?D)U4B,TN>/Vg+Kp[>%Rgp?h?-5>En`39?%laTCP!VPO*:ei>:2;FAn+Zk4, at 5$c_%$]7FrF1s15S^k.kOJVGg[8C##)WeFYH4Z.Z0'j6/-O)u2J`cCSkQeYTspoXA5D\M/J,=IO7f8c$r-M7!:RVdU;*EN=*p%bRG8\Ig4@$?JHT:)%5gh#`!_B/OXGRN-2,>=/n!XbRlunkS[)jifOmB_ib8\HDUN-N-Qil"oh$jng!<K$06moX["Z52WqFgc^D[[P5?q]BH6PP?bOPf[QH+8j1-P$M6*47Wc/eA_[4;mXD[TT3\pKR at 0"+9;dN-1cb!<m68!f3h'r71"KoGQCl at fKki.6WH5>Qgf>^N*dTEd_T6_J9(+PHNd_$I$'t;~>
+GasIgh/Ac:&:`#5_.+uI*oE&BG$:_;RaapqC"n7B-F"J*C7 at WXYFiX]cRE^1V7JbVj*)S/qk;YiIZ1o^6XfBtou?_9S&"Xg?f5K=o"E7C:nB"?d<NFpSd"5-.SAd8pX^q0CYQc8I''8?B<r^#"DJpO/..>AE?t;82GAi9G8684^b!gt`EE&g=dGb+kBd$uq"XJIr6X',WG=gHLegZt're9Fhcj8MW*E:i\4D1B"Ie^UR4f5\X)]J:7Iql8'5a0Ve$$CcN]KbbiC6,=h">lt+;+/Xf;.Z,!f=<Qk`T%6ab:k63e>.ecn]u0=[mRObCrkkg9`6U&>nbe3Kn-i,a&+58IGANK%ZtKf?pTSeufKJA3+.42qV0>Unfk"JT at f)6iS`?B), at oF<^Z2/(%'++NfD,4:T?@!gkMfWTlt1^sMb,fl[=iYlMTM9^)@VR$rssSs^JL1r$897kP*]<RlY]MHfq1bEqnLG3T7"b!$Zc3!rKH\LH>Ob;b>U&A':TPEP;'pEo!)n1urb-f:V.C5a=t=B!CAVMM0j#t1X5L9AUcS;*4MXmFVQN&87&8mI$.nr at 1-*;qB,A7HBF$4omhV$C^bYHJsHlcJUpZHS/4bT<7Z5%4^Vk[Df`A9D(>4L9"o\f6/iEJi0Jpr(E3-Pkbt8YC*V)6M#jOs\;bLUR+'E7:3*9Yr#<O1gtWZ'DWrQ9\CA/HP2la,;,`LVaBPWrO at ImamAZV7%6;NZbb/Yu1ZZgLQ(+]eB_k%)b_FVTmJY,g2/5hQH2j7%p6bED!25*64==^XMqeCNL/uD,'Uri4<F[Gd7?JPP'm_bQEAU1XjnqBu4C.aL43?1&f(eJl,!uCP>CpM[fM"qJ\,0dKmel-aL$"]qpedW*7Id$:F.L<fdDub8CPNXQ8_A(tJQeRe)7kg`Ck%S[oAY31:4nqVGQ_>YAAk]-[+P at De@'q:.jrC'VXL[<173F->!i#(*oq>fs0qT0P&(X$un!R<S&- at e4?kIH.WXi`IjcGbfa^$0'L)T::VQ:0AVHYJi'<;372fSsU/'l:M_*c#"AokX2P9I\l8)R%eirR9N2]!C at Wj4o~>
 endstream
 endobj
 144 0 obj
@@ -809,7 +809,7 @@
 << /Length 2312 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gasar968lH%)2U?kZ2?9B(^W6Q=T8P3bd&$Ro at dg/9+a-oSO]5gg=Dd!(B_bNFS#^LlVZEJfshcIXSa&q(?XaOJQ[L*0++'F1Uo^=8mM at i\T2Cdu;7SiZ&m"n*;o4hG8NDiS=9$_Qq\9 at cuHX[f"1mSVFdk7!l4$Id\UI^2X'k%_ol^/k^duc"bQA7Ec3>R.4J2f=^)0PY\#h[CsM<'Bf4%cO4_,KoKt_nIju^kEC-6MtA9ulC+?"m`g)XZURDU`&ou2Omg9A5Bar2EHbq)YujN][nj'8n#SCj!Z&?ZkhL:_(T5M%5MZ:^Moj!<ir-[5rLi4gB`kPrJr_6$OlNum at cE4,.j0d,k'Q%-U#H/U<aq,8dNfR)a3Frb/m:$5mtWMK.M[Dlbp+lu1=7-7+q/QM!<Acs(-fMYF-'_U:Ab7JLutacg6l@(=3o'1=<_8AD0?X=';]JT)W#SRe'4VNY]pU9$DuLYgBR66)@W^fc:FZ]lFFj3/]]WT\!(Jbd=:HCH"$u>HUR4c&%To='7maToB(i:,B]7[*1t6-2u at S$P;Orr"?,dPjBS$,H]I[#/[tiY:2ST:)FS3fFRqfdIRAF:+b([[B!IXD`Dh!OA,n'=A at ggV(@#iMQ%=FU`Ls7E==*f>4]0NWbG:os7ae,b]GHtY?6^]$9INF%>,hb?a*al[^k[g1V*UE"JaF+hq2eD-+:ot9`i0nJ+*`PBfkB3Tjp_ at s3hGJnp?cPIk(%1C<oLUB?b at JK`@nJg-(JOLl<Mq'+#f;:FW4G at nVrMqMAfWi.#Ms_.(Z8l2;_)X\S;*WE&q?1MtYA&\Num_)0qGCVF0N2Zf/NAODYRf4"K!BXh;&`Ce598;93#<UUQ<*(_["u>!RgNp)?E,l9)3c%-\UGRFac3oeLn at ZTAZOWCnsLL$Gtg1Tu/`'K4UfOA(ts`nPM$DtcW`#&>XaHDr``_Ul=acuB)c].hI/2WnR/8HBsjD$Ie%Lk7++m!/XE,QVs"A1&IF\[19[6G.gM]YUs4aJ\QEd&4LfGL+^7+S8g4VgFsN?fXeLQ/BolMnmM<(a at 9d//096j5oFN":rD*E0WY,,F.8u`, at EX`/CW1?Y<,u-=XH:=:c^L--"\DFbW,q0X)]@=q`fK)2.KH%4t"Z-`mG/2%*^Q;gN>u;JS/j<hb-8HI8E;Ni#P=:d'+I[]s)dDR_Yk^mbB/88R\3nZkN6fGfB]o9)jp@>:<C:-2!qQC&fZZboK-+0'V!=`Z&Vc`&a/6"$1ede>j5ICV#9X^Uh=$\oAi/[T41k[S?:?,M`E at jR"iP_$"9Begm0phloOeX,ZY0T"%Hn?F-Tl',aUp[F;3TmOM<90*@$,sf7aNl7$0-7B#@2mW"hgsommqR1b3%rgP@<(oMn%$Jf'UA;f=l\s6%pWL8m7j`,BU<=pe:FRX3(`eht\QB!Pm]dEa%jXH"ckE1dgGMd5ZTJ[Z=_8r`Yl$%t;(j<q at X88Vbd,IDOo]B0!?f\G%J'[>KRr32?>LR.$-U!F6l:^MV7c>(#@JBuE9bN&jAPnm"HF;l;dT-/Y%a9R[TpP*jAR\:F`MMLSNGjXapD9>qBEE/]2*2!&'iZWSDt_G6e8FK$Q[H=;h1NHFKIYcnB:n9=9c.7ncTMA3!d)fTNHC,iWQ7J-JCm_4;gF*2X4%o/-:0ZUqN?21p\/SAcT6i$X;on-6soX:`/X-;j//_ch0\Peb=kkrdCuEX-]TD/39j?0t`mFTgE'$0e^HH4ETV.]Dnu_P(PSI_iABNP,IZY0p8AedmP'9C?pSQU.?^C+F0Y#0lgXaPIa;N#U4HL/aGo`J*UlILrgd.)1Z6^!t[l[XUUHP]f[*M%A5H8]j\a%_r*$<hp>]rR35>c,7i#pnN[J>/AjUQ^nL&U;e>$h&k'482If0[Lb2.4YC!!q8V7Y(U0])ol5^k`p,\cg.:M;B30%eql?UKA8KKlp3Wp;Rn:>*Ljli])eg>N!gj&X0VQ!r3+2P#f#On;n0O'M$($W)43XDml,A+0@>Sa[:L2*_M/mk4OJ0H`(nT0q!>aP=?2L0Qk$:.,_].>YD+)j.CKA0q&*0Gc=G9AHg!'EME,^f+?<*M4j5M["uXWZo_8G>MR,p5#'!Oll at NRe.&Ed^?WNpOeR&uIN-QbI=s:s&"STl4q=ndQVC08'>>LRL.$QE,mV!;pA['%t)ieqFF+L/1fN'$L"hb6Ed/:;QuQEC;\a-CVJ"^etnc`O7m=Y:^(W[o!p)F!L?aii$2o='sq$--NM<<$)7\V<uFV^n'N9T3&3,gOYM4"hWeq.d*hL*(a=as%3R at N;j!6GtHu~>
+Gasar968lH%)2U?kZ2?9B(^W6Q=T8P3bd&$Ro at dg/9+a-oSO]5gg=Dd!(B_bNFS#^LlVZEJfshcIXSa&q(?XaOJQ[L*0++'F1Uo^=8mM at i\T2Cdu;7SiZ&m"n*;o4hG8NDiS=9$_Qq\9 at cuHX[f"1mSVFdk7!l4$Id\UI^2X'k%_ol^/k^duc"bQA7Ec3>R.4J2f=^)0PY\#h[CsM<'Bf4%cO4_,KoKt_nIju^kEC-6MtA9ulC+?"m`g)XZURDU`&ou2Omg9A5Bar2EHbq)YujN][nj'8n#SCj!Z&?ZkhL:_(T5M%5MZ:^Moj!<ir-[5rLi4gB`kPrJr_6$OlNum at cE4,.j0d,k'Q%-U#H/U<aq,8dNfR)a3Frb/m:$5mtWMK.M[Dlbp+lu1=7-7+q/QM!<Acs(-fMYF-'_U:Ab7JLutacg6l@(=3o'1=<_8AD0?X=';]JT)W#SRe'4VNY]pU9$DuLYgBR66)@W^fc:FZ]lFFj3/]]WT\!(Jbd=:HCH"$u>HUR4c&%To='7maToB(i:,B]7[*1t6-2u at S$P;Orr"?,dPjBS$,H]I[#/[tiY:2ST:)FS3fFRqfdIRAF:+b([[B!IXD`Dh!OA,n'=A at ggV(@#iMQ%=FU`Ls7E==*f>4]0NWbG:os7ae,b]GHtY?6^]$9INF%>,hb?a*al[^k[g1V*UE"JaF+hq2eD-+:ot9`i0nJ+*`PBfkB3Tjp_ at s3hGJnp?cPIk(%1C<oLUB?b at JK`@nJg-(JOLl<Mq'+#f;:FW4G at nVrMqMAfWi.#Ms_.(Z8l2;_)X\S;*WE&q?1MtYA&\Num_)0qGCVF0N2Zf/NAODYRf4"K!BXh;&`Ce598;93#<UUQ<*(_["u>!RgNp)?E,l9)3c%-\UGRFac3oeLn at ZTAZOWCnsLL$Gtg1Tu/`'K4UfOA(ts`nPM$DtcW`#&>XaHDr``_Ul=acuB)c].hI/2WnR/8HBsjD$Ie%Lk7++m!/XE,QVs"A1&IF\[19[6G.gM]YUs4aJ\QEd&4LfGL+^7+S8g4VgFsN?fXeLQ/BolMnmM<(a at 9d//096j5oFN":rD*E0WY,,F.8u`, at EX`/CW1?Y<,u-=XH:=:c^L--"\DFbW,q0X)]@=q`fK)2.KH%4t"Z-`mG/2%*^Q;gN>u;JS/j<hb-8HI8E;Ni#P=:d'+I[]s)dDR_Yk^mbB/88R\3nZkN6fGfB]o9)jp@>:<C:-2!qQC&fZZboK-+0'V!=`Z&Vc`&a/6"$1ede>j5ICV#9X^Uh=$\oAi/[T41k[S?:?,M`E at jR"iP_$"9Begm0phloOeX,ZY0T"%Hn?F-Tl',aUp[F;3TmOM<90*@$,sf7aNl7$0-7B#@2mW"hgsommqR1b3%rgP@<(oMn%$Jf'UA;f=l\s6%pWL8m7j`,BU<=pe:FRX3(`eht\QB!Pm]dEa%jXH"ckE1dgGMd5ZTJ[Z=_8r`Yl$%t;(j<q at X88Vbd,IDOo]B0!?f\G%J'[>KRr32?>LR.$-U!F6l:^MV7c>(#@JBuE9bN&jAPnm"HF;l;dT-/Y%a9R[TpP*jAR\:F`MMLSNGjXapD9>qBEE/]2*2!&'iZWSDt_G6e8FK$Q[H=;h1NHFKIYcnB:n9=9c.7ncTMA3!d)fTNHC,iWQ7J-JCm_4;gF*2X4%o/-:0ZUqN?21p\/SAcT6i$X;on-6soX:`/X-;j//_ch0\Peb=kkrdCuEX-]TD/39j?0t`mFTgE'$0e^HH4ETV.]Dnu_P(PSI_iABNP,IZY0p8AedmP'9C?pSQU.?^C+F0Y#0lgXaPIa;N#U4HL/aGo`J*UlILrgd.)1Z6^!t[l[XUUHP]f[*M%A5H8]j\a%_r*$<hp>]rR35>c,7i#pnN[J>/AjUQ^nL&U;e>$h&k'482If0[Lb2.4YC!!q8V7Y(U0])ol5^k`p,\cg.:M;B30%eql?UKA8KKlp3Wp;Rn:>*Ljli])eg>N!gj&X0VQ!r3+2P#f#On;n0O'M$($W)43XDml,A+0@>Sa[:L2*_M/mk4OJ0H`(nT0q!>aP=?2L0Qk$:.,_].>YD+)j.CKA0q&*0Gc=G9AHg!'EME,^f+?<*M4j5M["uXWZo_8G>MR,p5#'!Oll at NRe.&Ed^?WNpOeR&uIN-QbI=s:s&"STl4q=ndQVC08'>>LRL.$QE,mV!;pA['%t)ieqFF+L/1fN'$L"hb6Ed/:;QuQEC;\a-CVJ"^etnc`O7m=Y:^(W[o!p)F!L?aii$2o='sq$--NM<P,DTWH.@(LCZ*M.lHcN_L[@@KOb2D//!Y2+@?u:9s3i8M1]@o?mn*!~>
 endstream
 endobj
 146 0 obj
@@ -824,7 +824,7 @@
 << /Length 365 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Garo>9i$Er&;KZOMVa"RCHj3h*]MK!#GVSanPGQ$@L=Lt'E>`L at 2Eq*>UD7jpN`[-6fq\3V2.u8;5QL68rk.\Jg&.S@[(nr8<hZgg!BU_lft>INU?HF":.M>SFPtci8/Xpd7t/;-?bl(&>0i(h/>:[-Y^/2%+qmOmQt@<G#4IK/@FmqA(m]`E#NFthdJZgp!:Jl>8r0T2I\t>=DS[j1oc1VV8&L;:$s_[6$U$r9!GfaXi4Yi%'VCnDdq8E'po%]WeT&Y\!d!dqm4aE`uuZ?Ki:`PecF4UPBRis6(T];Z-4FaUcX)d9F.+^5B^nsWOf7$d]p?QfFP*<r\?28M7<gr+G'r%Q\'lH+Zp/2!+N+6W;~>
+Garo>92C6q&;BlVMXH-dCEJdrbF at _4L!bRE\>Y`C at L=Lt'E>`LiEjGqB%-BGc?H.V6fq\3V2.u8;5QL68rk.\MBU![b:)HtOXR9XZ_.,If%!Iq)Va]k#S<$[f]1^F^qK,iUR_PS3d/J)#g`t%m^J^>P;HQ)#41"cGGVN]4/g;6[T]`SR.dI0S6FXuG?D=ZrJNA\2MU."N*$W<Q5BcFNTsp/l0kG&OF)pW&0<K`&hNHFC[m`H"72NELKH":!`S#HeZbM32Y0+^Is-/&3"1X3iH1sbe,e"SPBRj&6(TuCM9I29Ug&@/9F.+T5B^nsWOf7$d]p?QfFP*<r\?28M7<gr+G)AHabYU+J^LgQ%hdU!eG~>
 endstream
 endobj
 148 0 obj
@@ -836,10 +836,10 @@
 >>
 endobj
 149 0 obj
-<< /Length 463 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 462 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GarVKb>,r/&A70VHn802r.pR/8.-D6;2#]ZLdPjb_'4kkS[=Wba*kb7--Be31:*2#lm.Xpmj/Q#bq_l]<Q%EGEPhXkM,9(%8Wo%[EMc:@-81!U=B'u+>&A"u7:&RbE,<='.[,:5?ZR\F,>"D%R3bAhHinPe at Ja\9KJP7g9O-q at 6jUrU]J"4LKqb(G$4@,##>7Ie_7J-c5hE^T?t%WGY.u5kRT?Wb\#rBbFM0GQI7Omchb;WGoErrVn at m^9i$dT!B._VM[2T<YFgX:_iaR/XEVSeYo5s+h,*W#V^i`@]D!R0c#2>hBcYKV#WX;@6_ELE%6nm)mfc'bHL<00b3C!jWN<SK?^YgX]c:e9.4$Zb3%<g5c04QuF?51q=0-d1CiC!.T`rD+=T;PTM%J#_^/rr2W[sSHQ at nmbq%lNsD"gX#WU.Ke_9O]JuFa_jkRIhCDBq-6n'rM!2f\=[F~>
+GarVKb>,r/&A70VHn802r.pR/8.-D6;2#]ZLdPjb_'4_gS[=Wba*kb7V93@^1:*2#lm.Xpmj/Q#bq_l]<Q%EGEPhXkM,9(%8Wo%[EMc95PF'*;/?6Q&SMlJ>,-N8A3&G#"Q-$2FY;m>^OX*]#b`[U$^';4#YkbUS_O22D-8'I0+p@";IOT4]Kqb(G$4@,c#>7IU_7J.^5hE[S?t&>$=(%.FD5V1JXd]q`h5lR;pZY!=S*<"f?3.VGhKR]i*(<!WXbEXQ[_j5hWOBi9S.3e)%R5AhT$Fu?ACA42\@ug>m2Rn)?oo(eH%Yca<C(=nfV`DK#\Meu)e2+f&37KS#70:h[G]j1(S!n2M(&FR#Dbuc^lC%nb8AO*(Ibadb=F%is%pA5nc*+hkGcsFKD_[_bG3D$/al'TSWq(iReb)-=[c-6,X3(l0pNPtQ`a=DmKo0*3'F'YNq#?4JBfG~>
 endstream
 endobj
 150 0 obj
@@ -851,10 +851,10 @@
 >>
 endobj
 151 0 obj
-<< /Length 808 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 831 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GatU29on!^&A at ZcHn/0R)h5lqNU;>)<OG^.mA9G_^gSIMKI3BurdC>u`==-r[Gp1#IPYo^1XC>KN]tYn5Q^di)30*K)^4./*s)`FAi&oo_uU+d)#P48X&r05:U'b5:^eJ]7^Wh5?mp"(f]pg6:'Uml0J!/CH_+M-l7bhPDE!ecIS/W[9s":>aq*&QIDU`\7<FPNU,S;C0P:I(4%L"f"!MI8ifk/Boo,'cM=RrY9F=]:g(Oki="oU',qQ#Fl>cioefA9='i506H^JEWA#tlg.Us#T)>H<JV+e>bNULV3/8O';YAoRNj?gBKqCeAd9>o=d;LXMTl/(.6=d89C975.S)]^7q-*a.IO?R\:KL7 at cZe2+K$>W(*9BtE3DQ;(<^;Kb4Dk\q+gUKkWiPi!F&^po8[u#O&c_#*N6Hk-.Eh,A+UKJuiOKkG_4mIEY7>E':7r)Lm. at -'7r!*(k;74tYj_cMQR(?-N/1?aW9kgP<Aco at tjPH=;.3U%:#0gISI+UNUe"I"(MDH*B7OhKBp,1mDGu9uR-o/F+DDcl]XcMRpeRUQ%<&VT1'Wc9b at CQ.Hb+OtOLLXcqKP>1\e_!^_Mab-i3609UY;5KSLGGoXpNag7^*tt(>;p#O)p)TL5"Ai5(:RE`l:mBOp,$@uE]Mq'M>h"El1<p!?QQ)6q%s]OXC3ldf]rp]?CqGN609U>]Qm, at e)[[Yjl;%$H#)i-Y2hk8gX-g7@:[^^0jI[GNR/;Xc!n+$rMi(2l;%_D?oa>1g,H'+K5gI*oWYtja=/C*kK^F$)bgE(fP%$qgd_2L^Xi::~>
+GatU29lJc?%)(h*kdGRu3(]EHH+.m4JIYn8,2"Tl%]Ub_#3(]smah=5aWHB#33J/K\VN!_q+++R\QmHEgj"YM5UBT(1Q3Af"C^mHaJXQN#WPAkd5jQXk'&<&([*5MIl8^8#W<.sF8ukUD[8qNpIL4pl=a&^F+[Xm?@SMa..s]bV5$$#V;4skq'et"/@G2<\BM'T7ti0*IuK=^5iRgJ<tuM(&`QdGYLm>-LhIs4I9NV:,:48)&[KDa$:N7iRQD5"!uRm,'UCZ%>mPg/DiuU5*-gDNpgs!jSER=pRd'\\E5G:5dr!G1Y'/-6^W3=]NT5a9':qj6I.!Mq,*mCKjZ[t2G1JRfiq1V9jHK"-oaTt9Z)N&2;0";++W"]Yi_iX=6Tit/*6%@1Cq+Yf`,MYe*1l'6p$Lo(p(_aM at M!?X&D3M^%].h:P%MuErS,Or<I,%:LP?*>KZc:*PqKrucE"IhBG22O0`m`J"7UdmY-f<MWOLH#@Ht7$9*Tt6;jqC-B/V1,6i%u^g+hT<:P'@&rM#I&k?O]:RaAFbP6C)83B+)RG#peR;T0i`$G5nI1Oj>FO0umf at WTqn3XK_hNSuKP!1\6G"?:H_4Jt)'P\&FubRKiB>b$>+:7-!u$LM<#.ViLS75kmBFAU*S4K*OhkWtm%XmQMNFVO)E.OS"J25/)7b%mn8eUO[*]Na4kgC#lB$tH12mY+h&jE4h8+841&d!@t56ZABgDobQQ#+hWG6QPG]"OsT at H50LN<QtGa5D_C]PfY)&lh0UGqnJlqoBS=CZ"B!?WmE/_h9R_*ViF6D]X*(-$Z/;\.(]K1'i(]%q%m+5qqM~>
 endstream
 endobj
 152 0 obj
@@ -866,10 +866,10 @@
 >>
 endobj
 153 0 obj
-<< /Length 1188 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1190 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau`T95g:b&AJ$CE(m:#^b5([;mhB1C/^Cfg)_q!p,7/8GrYB00+0a$Md[2lUFM/.YA`TnDh_]iD7I1QLc&`-Sqj^->oD@>ASO^+B5.^!\q+/3nI47JCb=FXhllGU\u-9+P&"oo>drB?Hq1dU:Bsd(CHo5rPJFerm^S;>+AXpjZbq8QP2]$S;h+N'UTKr=DK+?CS;I#m at j'U4n>0-DRLS0K4mf97XMUf>1cuJoduq"R2E5`9ZC8EHgq=roi#$$F<[WO=GS_)l>`ka#>eoY'k&N=gM7dfK.H>)I?4M2?1dDgDa0KO>g1e;C`1YT-p._7B-I926aQ>RD:L`+h/1-G=oTU/K=?&_=A$dQY\-9na(4IB:5KDBjN%_VpLk)P)8dWPgD&KVpbeDIV,Clc&hU&8;ZsS&*L'];"gAJ8o,'s.4Y')N3$O*NpJcXOK+PUrA9Lsg7V:%Us:p[J#D`sj-671:i at Y$uZr at K[#BgCd&j>+EFE^<*t3E9TRP9ArDAl<:An"eoT[o:.G^:R2Y#pFmZUJR:I')'lHkk2l7SY]d]6r<=BU/IhMMn)@iUIZWY3GUH at e[CfBKa8ja*+sqLl:YMr at +D?`[?NO:"ASNQ:MH;N&>>1%,8F&h0-pr;6=)NZAD3P.KIXr at ElL:HaB:h4=jFI^2,JlQeJ7*a4IhEX`nZign?G1hQ;C?9]Mp!DWD;K879,cmq["iZF/]od+lYF*8lt^3lq at EZY:TCqL.ai9BpM9\"\uq9LY43?m;8"rD(VBQNg;Rk&gBm;HBTf8nZL3KU[_+#Z!P<'=PB<:L`e=NJuTnfcdB#bb;`6=2qRlmgNCpg17Icd>T*G7iU0I+pR$Hd3ARIW$h#O&W]&g__e8,pH!S;C[!`/TaWW-,l"pCMdnRE_]!O+SU5&BW_ at s%pi(A\52TE>sgTjWD<MHsr6EoWECDKu.BB+8f(AAUX+un^ARB=hLU:gh at R><aIDm)D\9#7AA[bnTf97&'q261cM==#ea?t37)U2'>KZUgb/jTP3k/-i[;mRhM08hY(C,Xg!<Q0T=,]D"7QBTDNV-0;XA^l9pSUnBGu`T at tn-V=\Kgd+Mf2lcMTGk"6:mF-1<',"s6cO?/S>r:`-#&NLEcgF01qVD+KeGAN8D-tnTNFl-$/R<d1h1ih"Nhtd`F(Z;oJ_RA6h/YR^?"*76\._Q5~>
+Gau`T966RV&AJ$CE(i;M6'?NMP"p)^FS_Af;qhBYfiE`ZbJP4tq]`8>Q#+Cc1t0QW7P+DChgW0gMsoZYbrr?$_@?WV`N,D:X_5^qg-9+V'%d]a/MD)00Q=.=CONto;R.mTfq)MSF6rek%4CeLX8&ooe[>)!MEaYE^T]lYZTK5[#b`=>Gu)UHUJJqD2tsJ/*8;(>:H4#]_/ljJ/]bJ(K%h5Q(^APkh0XjQ9qlPueB<a>FfoT7-[A):C1hHuV/9^)c'qB_VOOATd[HJeFoZHhbB%I91Y&][(`-ji29-Y^d#b(F=Is<%*O^#@#JHF at Lnp?[+r?\V=57M"P3Y#:H1=E9:IU[C__+M&P;Ta$Hgi$>i<RBjF+2$ur/rj(,ZHUcKSODGL!1jLDf!ZI?lI7UXR63S)K+XlUEs3Rs#c!kU]9LRqj^2E8aE875dgg:p07V#dZAFJ1_:6V]^"LGO(a3/-T$EWT[C[IPS^<p;0a1m:bYm%Lkq at PRZ:G^K`'RslM^aR1h,p"8=2j0:D?8aaQ/=/eCTh7IC2+^4gBBQW`TfE<L]_aNF`e0OW_Y?7`[Z*FG[$`:8J:0;Tpl@(lQgD^rF<]=d-g(edrG$fe^b9Fu9O;#'gM5&Og4[;2C>)RMk/:i2TVK\44ah`"P-]LaXqOHF*o,&>QgW?%@^Z>KF2XjXklHGEc`6O>rYs>qn0Mm.-rY($0U($Qi*n![;1S7RZLqSq7tSi;](]SN:^=LhN%ia`rG:0QXpRj`Pd9&m3c/#H6[^"-J1kZD(La`clh-iSgf03D at dm\3!We'*SuE<F%BO_\ofr(h+4-kS#VV;*X:%R_4Alf[s-mT,p1F1qjiTS"N$cZu=qUj%8&A4`Gk-!8<l6hmMa@$"2C3<HX$XILSk9s2I:X-U4mhERB_ at XPRW.%!oI;fO:_5rm$b#/uohL8#qBB2(SI`P/3>P&Hrd6$^Qc1F$).5`3?!^b=YH;TPpsJ9tBUSLVZ7M:r1.Q(N9T%=IR#CY21Gs`C!EFJTb-l0\Z$ui;,2_P.RO^j at Ms07*#+E5,*<%WlG3_e/**qF]g=.`gUpOZ4uA/q2;*P>mF.H[M6Y!@l]H2Ns@#6iQPpkc21inc=8r*itW$5*qPNMqfqhHs8ApTfl-P##HDYnoId,NRXLa_`VN&B@?ZWH:*C5Tg#D`1Hf=]"+sL=l!<PSfpA~>
 endstream
 endobj
 154 0 obj
@@ -881,10 +881,10 @@
 >>
 endobj
 155 0 obj
-<< /Length 960 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 975 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gasao995Pr&AI=/E2kfrENtL_kq1Y-V6-b_W^Z<Kl+nOg"td"[l#-KK%@FPS!)]Q5 at qIjpI@c44K at S#GfRaMk<cD/$f$at0Nr20N,"HNs%KXYG<fgFuD]X-If%(onpa3,!"eF5EDa>6B5&(Q#ia at OE>#mbfes;:dX`.e)H at 6a/qbi>W0?\FBb at 3&)fgW=:Gb>*W"@M-90F at ulUn3A+"WS?\O85pFj#O7:l^O/(`_L:VM9dGOmYjBoN(f@,LSecQZq[(qi]eKV%.W/[3,;*uk#l[5*o\rj(iC at 1MPjAsd]0"to769ie<@PBqu4U]g3#Cl]fI.EJ21_+5Fj-c%P9Rpf7)dMlF]NinSKY4F`qMP+(n5h2"V\A_(m4da#ZD,!t13:-C\!3'X^*-KG!)b/!;?C;)o*/K[LNKd]\5`+W]ScG:%<t2SY7rSZ;i7!R1Be_41aup-\ch1Cu4Ge,nn)>@bjo1#])[K\;E,*^91nR_<Sd0_Juto2 at c]T1K)h!WaTq5S*VHY:*3`,=%(:RX>]Y=@@ELAa*[EFWJRI<F%4:2T0"A!)Y#@2:p%:(o:D^.<qGB_U'jfXIB?L>Zn^ghm&tkeEt6fA%=>$"PWHqV:T#'Qk55&@@#tO/F4j$ZD,f]W^R4s_]Os"ZZ0`D.](7@\2ZORn*(C=?"kY!F>b`-32R`^(q)'b??q^S at P5-S'un%AC*[_Q1KKKh4 at 36(hRqGA16o<6mJ8SaKE3;*::da;YP+ii:L3SV2QF5WjsZE<'"G6]g8Q(Z7=SY"*=a9pb/KOCmg?$lqcjDlA`MB2.UJ(]P`%6T7Mbp^7DsDT!7tI6P5c)opV`qc;[fPjm^sAroEk"moh9VOd];pI;?@]R?(Qa:eOABm at oUQjP96+TK<B$2OH$$F$W_c3=(M2SP^9VO2JYgc$=OrU5?>80:m&<h?dsGg)\/22"9V`])Ufc-!tNM"3<~>
+Gasao997d\&AI`dEiPG*\?Y'REGoYdV6/I:Wf>_"l+mM/7%76uZO?fIc3l]?+UAC"SG>9'TBG21 at .s,k at mLVJh[4N_gNoGWb>pi at GmN%<Te>hkCB]RfkO+HYHuAnjJo;"X>0p:W$If,".Q<0EJEO]dZ/rSdR&,LIWLR0#jH^^.CP4f%h+-_<cm$r^ifn8b=N`J3W7DjeBA^?Vh`M0l]CG7n$Uo5n(aO20E%iDre<$S,.bX?NTgLWS0/5?dOJ#5\1e;9jTEp`F1p-OZ&A&;@Q,NtqI.tKR>2mRb'65iHf6)X;^&%N#GWmB8Pnj+d#H/$8+u\8#jBnb:igT$f[k9uI'?B`m4AuOM,F2E6IF!l5H&H.lgP-[5lqmRCbSI`JoI;'$%2%8iqq&&:'p8l+VV3 at MnP!u@^Ki1LYoofN4=i:QN_kmf6Wi!M[?&#6)2kPJq7YtU[2P\D3.;YV>dH]oJc:ET+^Sc[%]%"GaHDZq_LiETlps,E?eBGA?Fpl<qPo;'+n"14-iqtS5deg25`ZH5-]8XJ#=-nE!FL'`MC=fgQ;4kn>lGu':qa&GEKC^dL8&;)oMY+P<(h.]jZ+-3VPnQR1dm!s=/9->MPNP1)g^kLNBRtgb7 at LSgR9ia0Kt7pP".66aJd7<<hl[[7`[(Y=<*rl;l`;89J5&1m]gM*m:*gX>tHZ>9,%'ep^h\3eco/FQK0d8Q<1Iu%]066'7&E+Yg#/K,G^%dh0U^r;e\C%cS*<+3##bI_FRmOMjph_ku6>]g'r?$A=P?L3fDm#aA]J-SN4+3m<C%;a^RPh!mb`gqIdX6"<0NT;Z::PUn!2P1D8W2M26"X%]8\4 at 5[6%=3%UePBU[+jtuH`/?caTglGTa6[h<.!H$^,X(05?C?V%6MPR7,[6Mo at q7,sW5BL<Kbl6-ga%FZ.*uT3T>II]ADXD%#BD4]!O^R*Pe2oSs2,;[u,lflT6`a#]#J3?GfD~>
 endstream
 endobj
 156 0 obj
@@ -896,10 +896,10 @@
 >>
 endobj
 157 0 obj
-<< /Length 731 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 740 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GauHIbDr&G']&?q?;<!'p&!-B7[#I9(o\G':"'7P-A)FJ-"K(4qjKbOj@(o*.Q5<?nN$@?hW)X1q#$BXU(IT<&n%pN#f-EaJ5GS['c)TT$,R\[I!CZl3s!)]ps#Q:+Lj]H&Q2P<BEO'-!gB at cl,phW\+X3#7D7pd_J]9^PLS8[2\C1"BE*'<m8;\-I3r\DSZ%Y2L5Ikl#5hfHjFn]n5t[UNs0?]GoR92ro>"q.5 at Lop'd)B[p^Bn45)$UsVP1rK0^fQ)\40Z.k(IHZg?-sdqm7i,N5AKge at KlanKZ2bFmcHVCC_d48Zhm\Xqu[P6VP*bg[+K"OnGk:b#>e7?0\KhaSk#Cc40*(][[%DMB>*\!ss6[C/f>*Bs31qd9Eh4B2mRZ)DXMDJ.Li$H?F2CO:\FKkfI_.A\,%m_MpH1VZnkI&&<\BX1*1+ at h<4ITpr_cq)[ilkCr&6:f8E)>+_6j17kq at nf:t<B?PB'f1"sS>BXdhg)9ZdV"&hQd9)bI8;fQc+rD-N7:otk(&PU,OS#HSO`5l1\V"Gg)O58IojX:QI-P_%lgr5\j]:6;O[rs/>$`-%Thimq`%J+8BXLZ*&L[UZ==C*(1g?TDmNpR#K3R]^2:q;hDQWZDE-G.mm3r0"eEPEL].(mWln<)745V]MB9#N;PgJSCAmt2 at H((3MR1gin=4UmJ8#6A\n3)"):H(n+fYr7D?A?->!:L<.[0>#6rWPU)kFh~>
+GauHIbDr&G']&?q?7(qVD;tkCQdMUe8falLeBOcs#>>=.9M3BJo(P#F@$2Y,;,q1;?f/a]pR-f`q>AbF=?tku0Q at ZV3>`n1_a"ch!"Tq=3<N\"?5?<l=%i#jK\m2q!K;ti!VHFdC'42:'HV-(YtEfI-rmk-DKXYPZqFNg[Fc$7L>/Iq;QUF]5n6DerX>.]@tUKS.QiV%;kaDL53bOaQVgnU+]e6qa?9kjjt5ZiUau7i`WXmMgoiGg5g7>Lll@">.l\.)'!@^7],[BZS<_;8K.IQcIT>fr\^FKA<$>Yb0K".+n`]sNB#ct$e'cqQ1.!,FSh4fj&,6lK2&,Crb-sfOPum+IhH:#1<?J:?[!%*--#[qAoAXW.C*Xt3V93P_V,mKY_Ko$9VlWi[Ko@[ss2-jal3tfa`6</[GuTQt9_VOjkh0[I'LP9%&,\@b3iNa=:uIum>JJ@/T38jQA*=hfSrY&Z=4HB`b3<Ld5IikP<LH>E^.<CCb2M_\B5ugd1u9cFdL.8*6n#X!8 at ie\gh+]'ZD+=>:L]fk82u?_hE_dfb0o*I<XbJ:-]>$Sh^m))dolE!KgF</cY9IMqdH$@.]NubI6n"A?n)+?I6pUd1YQ^;<MNBMf at opTYF*nkm$?a3U$pqtRDOdPr>DSHL1E3:ISMCLm)D5]1`RVTE;s+Y3coh[s2BtiW:r?Gbo)pJWBfJ at E#ukh8!=bXVI.[8RD!4@)i(d.*4(4e0/GiPf`~>
 endstream
 endobj
 158 0 obj
@@ -911,10 +911,10 @@
 >>
 endobj
 159 0 obj
-<< /Length 1093 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1111 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm:>AqtE'RoMSLj3?TM"0:U&kErM#rGXK$bS/7][lHo[7Ns<Z2K%9`2i:49ntuZEDH(qn(`<9\]cF>5*5tZ!%.MN!gD^K-."b&5o:N6J.,i%PC/r!31HqU5#6VSq%nZm$%b;i7dpfgM0hLu?*2Q.]rKQ+H'2WK^Rq@%5NfUl)ulr9dA#-le[62FWd;]<pXh3a5gkI;qX+-*`*SsR5\%`b>&?-9R"8Ta*VR\@-].Xn&:P`G"9FY,*d[EW[d%kN&&`<?R*87Zl#A`ep\ge)LpWh[R#*uE]D!Z1*-M?9Rab6M^dU^KOCb4hED\BuCL-Xj'`po,\M2,WkHWsW%<aPiO].8gi)t6=UB<A%n.9Ro>#\L at 0$73JFU_*86m_ at +__<+;.KTcSh,VutX"l*qQ!/oCc&8!)M_^MK@]+f2nT?m]H=HfnG\kicqa.4]A,qH=bZKQq7K?qm7t&n3X=cDJ;3`O+$,t>s at NRI:2'ln)>'Fu6?IYE]dYGpN\hL\$o#IsCS>Ze?Xpb at t1DWN7!C89Fo2HtAho>^mR,<+%I(&sUBs#("W4`_sSem<=Y&ubRTb"tb]if&r+dEL]F0N8R1BM`cr4Y,T/3Y;/->-&\%c1sVDX5`cNtiOe&g5;+m6UB*[q75m,VcIj+9--jTc at GqY\BHpj!g2S$B)SW\Y/](EtbuG'<V[<>@T<"_`66E at DiW[#pAS&8-c\Z_Z.3HXKV:iXt2<0)ACW\Xr`i[UTp<H:m:s2gr=;K@^8O)?)smQ1&LJr;uZ]<>;jI+eFRS'h4>^1KFe2?[SslfX]KIWSja=,c`6P%f595BWS&8ud at QeRe7Zf"oLdrQ\imOKOH4D)LC'&_a7nNSQ)BH4S"7'iKALAs%ZPfU\djemRk]Z=NrQkuiSNI%&Vef=Hf6G.rHpa2&A+iJ8HF7bG5d)f_NY(WR9PE'\W1lc/(;YP:3U.s?ou*X^+lb4(QBO_+lLf9 at 2BrH*ipW2:FDPBkC>kpQdiJ&$hA\1B"FI[C)+)4'^[gDd3D\ZWImUIDoG^?q:4s(rVfP(Y]IgUTfLXa=\QP)0(\%_S-!a#^KgqpaDP%UUU_P.TVq\iCh:rZ~>
+Gatm:9lJcG&A at sB#e`&TLugS7!\KN%Aq;P^!(GCDl5ge1Fp-H\=-D%phj5$gOcjR\Md>O5;LFunDe@)dO=oDf73WuW:82jDJC.t[,%s.S#n14[,m+Hd;7_\"?/;QP^5fotkspA8&V=VI!?D1HgBF0V+:*"Diiq7YforGqrH/faAiEsH0c#5(lFNtn<;E6,WN=L4?Wrdr:I(K_^mnLk"q9q7gtb\D`eah-"F4&&K*FJ0>]NddOMD at t8S(oT6NT]3C(^k5iXYPK;Dd\%KKFu;('?9V*1tWb"!W!T'np.n"\hQ9:(ZmN)r3MjFjKC+R\"Y`0a=!ZmXUdAF4f`o799a;)58In`G.+,C=TJb]Q%sJMui&$N&PB)d?+_I2j8Me#33 at 0oL;p?2^guQ%?)UEa=7;rX<,Q*X&TbmqGqH"<i\>]9jWKgl_.7nT4(/o$p-1m,^d[IVIBfGJ;bVGMRerlPZ**7i\5lI3ihh"PF'8TSO+b,&6#bM at 0EguC1$4+(%%>+F.G:Q\qO1\DQNai9S./]%)uQc":OmeN!KN;fT>9dNeF$6J2`iZ[6Zo1J#jU42csgd!k28,HEA]'A30?+)"70&D2V7o_2l<h<$osJq=/!UZhT1R;l+WI$YGZA%TVKN;^mHp"A&+Bl%/\tY@]Be,X\*64T7,a692hl`2O:CjcE&t`Ss:`:3:,lARokEkd#0!%@&8.(_=sk at tFr<";!I9kpWu2qQ9YCqHD,[/<L2D,TZ1DVm8lN<<peb at 1qL.c`f6`XCG71l6YlbqI_*QIf/n9eG5ugX7gsG?Cu at m:^JQ:O5B0A+0[TZ\dmn+=Zl#MM467YNIs-ea/4`!>e3Y5eDmUk[Je,=(q93p"H<'JT"DJSRi"%CrGnA2c>107P'\4\%PQSW'(D^+s1_[RcJM8%Rm]h%4)G#ds1TESM![uoWGd'@Ful*j[R]Z3n0)0'5q?nim]cDBRs>K[H\6Uq7bsEMD`g28gsD4.c.Ym-7h>KYa-Tr at .'_K^Iq.)P;f-Aq'pRtV_,K*>l%co3%.<3`$76ofP+5F[9c*i>p:]90Ca0_CFpuWoda<C2H1<$uD_t6F3P2K0oZT[@\eYchk;_JXj=eGpbln~>
 endstream
 endobj
 160 0 obj
@@ -926,10 +926,10 @@
 >>
 endobj
 161 0 obj
-<< /Length 287 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 288 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GarVI]5GM?%,CLj*1`c3WOKnP8;8`c!Gt8\TTorsN`3o9d(cb(a06-Y>#)^l*m%\!gOfR,d<c%j&d5UMT_oY&/<R"9lNp4&+LLW@][h4_os'PsG`g9_Jk?D>pcHO>#/24m/UjVF3X\u7AEM#65/]97nTrf)%gJD_`pDC!E\(=UBXN/LC.>euVo8CX9IoPCCX8uj`1NmU<@`H#BtLb1[Tdst/_[(?L<!-'cb9qLG<4An@&FkOkSpCX;M7YiLg>6>>)hgHDE`RpcC at b1h6]B;')<&Ik[Ua~>
+GarVI]5GM?%,CLj*1`c3oqLNP!Ks-L;*\@5+_YH)KB#oc*;&\Ma"_B5JX-u<N^n++`:fii)>%6&W!#C<,Z&q&PU_gJ!IM]3>6lg.(9_kO at X[V'#%!O8R at o_:#_2#^ft\DW\&IeEZ=@;(;+`kEhhRSR-=6/pmD4B"UbR5i8Mq9N'XH+^;XI!krKK9kO(lR]GO7CJQh[nO\nZpp.rCUggii!9\OG9Fc0uR-pY#:,r([L/%IC/b$g*0mUD0C7+(?$-KksRMe]e?G,Vs'NNLSLcDMe8rAS,Gb~>
 endstream
 endobj
 162 0 obj
@@ -941,10 +941,10 @@
 >>
 endobj
 163 0 obj
-<< /Length 1693 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1740 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GatTIbAQ)nn at i6Q3'^oI?<2I<iLHFV"kl=oU5N at C*jf,=>3K.1,cqa[I>/rB+gmL"VU1#QjD`rdlGI6,bHF%$#ml7/IME'B'b*M)BL#]+a>fE;`DNjb%0"!=S3<mQi1FEK4&F%LL5*jKL_<0TAdEQp^K0I\nL at WsWAcK^CKu?eqk@%!,-p1uo^$T&#g'a65;($oBM(Vk\/%K_=^+iOZ'6KT,<@!YA\eI.'D#m(@89CaUk\<`Qa4lM/a,J6NK at iUAed,7BR$Zj(LsbVo>Wfu459-1Fkeh[s7EL at 6)[XV)5plll_^eBo'cjkUe"%>E5V"M5(N1G[W>IhP;EcE(`ZTEI)KCFnYA</YDBl^$5+YAX2qq(=Z!"c`L(@G*k0Z3iV"F1&^j`>m\W<Y+s%LF(+DcQ]s1q,fq[eB:1D(mb at Ar,#ZZ4VG8DL6di"k`C^;6RZM\-QUsN`cQY-f4<Og=nM0?4'e<@r87;]e?#cOM%O)iC3!"s6)5o2gj'@+C]!@3ShTg?U_[0U;;;]JE;F"k+Oeq&Q`-^\0Y-X.]XeMV;g&Cmar<K2g<%n1,,$T;j&[uO!?RV%adE_]NZcI4Or4YC3$a%[%`$/$)!(1ggQ51(p!qm%=FL\_u;_S;6d8AK?h`QT^^GM]h,P_h%$25b;d^7;86/["[a6,[]eVDZ*hqKTHA(Tb<mNiLcS$q2=sWWVfq#@:#Z(c'eFqk?!rC;?aI)%shp3aPaLQjj8.Kl-+Nat%]-5;;>3[bn,*Ia(R_L_Nk at kqH&Z4942I&K>p11SRAJ).=,=Khfm/P]KmK4<'31GKn^&RJsi1MaG?MN!S-m_I;;hln-bU-'"PYRb_dD]$tV9Z/jBIj\S+@\t&(=ON1KG(C"B,B5dAS$B;0B;dP&La\G?]>L>!)5)/pOI6B4>>qDC-%F6HD)l<\.,Xff-&:@AM?5HC,bu_nO*XT\.ee at 2dXR8,*LDYi67m at n\KYu="?*Q6ad9)Q";P1aCpH;k^\]joC8q"JiC[`"3^)$)<6I;=S_6al.Gd\8^&)5NI!*^BO!'PD%oEJg:f[NbCqm]*tb=[dup?F@=&J9aO!Y99.+I]"k3_1KnK4r;9J7qENhE3uF0S+iYDi[G3IWWij60_Kp-Gt6"9/oM9Q$EQ6O`ItAb[-,uTjo<AHt&S>o/:Q>B\F8SiGEo9]QO[^?^@36gMS93ndF"Gp=N?>3\u(M%6%:pnpAC"P>bt-,YqDnD^:sR\jB"5dW9Pt%%b9#C..'I6mLIaW'qSd_C*)Ib'&?2jO"jeRq`qI@[n?g]5QB_dnq\s?UMflKZ)BSPjdG+YC2%7gDkeAbF8p6S#s$Bn#u/_-DQJf0I9<6ir+5"q)AM.7C[IJftY^8!U0L4[D0Ct\(THC-U--;%_H$E>%#rHl_cRi3A4)S1bd>/^L`21m<;:[>3H$@\SsGW>]60C:3;GJi$nZSR.?Kq=-_qu7=C7 at 841u?2p/JMc1rbC.'^LRo.isqTKhXO/c+0;fCuU3^q9d.`!Pk&TKhRUR_l;u5J?GGisj:?8o5K%KLXDhX!r3tai!!PGPf(rgSK\=]gbO8Z%L+a!B*h-Q=Hg#m)K(CgaVc9eL1hhh#<&>m1`Em^GF/.E_\E8N^Ub`@/=,n_sDf\=a`$>#L.0Q6&C9Z;6N>heLK4Tr`FU$N">2+4*_;XYS?f(#n(NEb)k_/n;tSd~>
+Gat<AbAQ>unF!IkZ9XPF0e:!1aI]]j'^,U(TNItU\d)E9*MJLXQ/k(,^-e"q8Qh4_$XGa0)9mM_jJUPf\)1nM at mlJf[9J=#IY!+_4rhKDKgCrDPXIW94U1pkIMIq7.ekr)I/trAi"-0EWFN_3+ejX_Qt"=FQ+NkDNfR8XP&RgU\L&T1ctBo4$X$\ekl79Hr1@@(](c?pB(R7"+?H/sb/d13H!-f324cQL`[D-&kFWs!b+?TBRI;fO:kU(<o'NPm`9W at N3,-?b"Q>.F4_D3CG\S'$)6aimBU2NJH?#:p_m[#C0E9-Q$e=f>J.'M7=Z9>em*?Th3Cc2k[A;Pl%k]E%2J@)h;N;X5Xk7shhr8TSELf!S]9ksE=@?F>B&X[;3Gr]re8LD;nmLG=5r9?T^TQBeBn=[%R+=78<ds5qF#poqXj0LsBQ/7<lc)9QcE>nD>B$Y.6n)4_MnBkZ_gj"61_uDa#M;SZ(3XEjB!eL+aei'T?:kUHK3T==pb#rgBO0!IO0XEO.$jo at 7HmWQ`*P>;&9XQ4$b:C6G583Pc%<',B!$]%JF$B<+OrcBa.e]]7D(bDXZm7s2kk%,PuKY9(,Dd%V+KZN)4o(\(8mI'QOr6b8qP7!a=>l.RDEasAi-/(7q':4?fDq4-jI"ei\TrTkSneFkEgbbj//."O2cqZf>\8&`#m:%EPD^hHo at XaXI[InWF at uFU;X(3'(T3P?4+*j=0r0TH)7iIK26(7(P]r:ZGnk at 2/(Y7[4t:AQ1!cF#jHB<gFF:iogJWFfUAtc at A9*6J.7Q*XP@)c&KRUL#_RXWFF%ON*SRB\a[JZ*8r9`-rcKP()$A"^6h?C$_HWA?UH:7M3I[D8FHcC]EkAZsY`I+rIJGFp at VWJ>*K)O'1e'FMcK>?f)Uf/9U'-`*NX&'X?I*m<ju)Akfl?Q@@a=YnZ%a7^m"p7i.De3pjI^"S<V_h:o$$?[`o(LH3l^M/Wcg!naFJO7pkPUMd?saEQok?,(s]9(q[EJ.n)WcJV:U&s-j!JP5"ZU`OuEmeK&J9THC/BaZT8&-Y\C0W0V)&C0JWGgY;(?XNKIu3LE46V2WE<1c9/re+2T]W2QM-lh%*crWV(?Ec&`AGo`3OQa2dm+E,ZBU!NW5\G-j>%2<[eWR%A[3>ROr$Gn'h>1AGi4c=A5Z(nta(1ReH:p48Dqj0 at Odr_4CrYMD,%2^N+[$la*1n2%cUp/%*./i1".om\GAktd8I-`=kL9HNM*hLU'Mk;'OaYk6H#3JSt!V#qLB+_oi1%pG>Cc@#>T]P(n&EbK;WQ?RF1(^Mik2>R3OG^MQn\^%5X:Jup<G?nOef3`Un&t@)HlcU5UTpq%JcIQ(_X3o]H#t$7#,!LI_4El2\(kgYOXS<=C<<05+Y5RaI]1l&/4nYf&Z/9E)f)XRn at R"HjbTJ#Q(?jQ>m]_,jG.TeN%<MWn>WA4L?#L]<-T;6%5WU0$-;nkcQ<pL8p-E.R*4h0?Oe,ot:6-R3&^-*3-o6V+kU3.,<+#LeqJk'h`$5OX.&]XeIkKH>,<V9q58%ft)".b(FCF2T;=-V5d,`rig\&l.pUd!?R^ig>2@@@3@%hl.\XVis>,BnIljSF3n2\]U*hK]r-K&P.=EWBP+oO>;kPdGT(KP6_?@'>OKfh")mep#W$?cB;an?]&%\Da"H#mf"A`qbDe`+2iCi%)1l at CBlm5fo#-%k%5YJmEiOAJ[;;7b-oDMS>0iF$F0_MK$-5;LO<3W~>
 endstream
 endobj
 164 0 obj
@@ -956,10 +956,10 @@
 >>
 endobj
 165 0 obj
-<< /Length 231 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 168 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gas3-]aDV1&-1WO:N9l+oXm"pP-0L"3!`tOE@@8J_7'?Mi8^;qU'MsP*;B'\'p^G;!`D?:'\JidS/;M%_1DJ=JL5pnEj..^U at N;CQ_EZUl5W0SC5obNV'4PN_cTWmHOP8*/'hhCVgXVTK1[(>;?h*rG7Nf$d^!Y5+<6[e1Q\f1I!0R-ZOJGOgImOsOrlO%FmtEo:0]`d^I]_Kr"TBThoc/Fg#M':4TR<$6?E~>
+Gas3+0akiP&-_"jI`37Kn at VCIBj;$,3!_i/EAMTLMh:udBVd=*[lj(A^+RfZkFobE<(LsSL"'&"HTbSQX=[>2e)E%kR?olXm:i'R2U/.f)11!t925/>6:^=hbdeQM=rkW9]B$9?_k[6+#34jLfSJ,(#I]\kS$2Ge9].L@~>
 endstream
 endobj
 166 0 obj
@@ -971,10 +971,10 @@
 >>
 endobj
 167 0 obj
-<< /Length 1042 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1056 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GatU295iQ=%)1n+pp;m\XB?(KH;!!$kRIcN#.lEJ.#sf'E9,5D]&qmGQ5*&9A%083MaWIF5EQZ%]@H962se?`"PtW#"l=,$]g."mK.'R53!]PB,B%_oIbd-6".OYP^"%>''m_QI[JCe=Jj>2sKe:LH>#qOpc938'c0lV/\*F9bF2;TATH/FV"s,3ZLjJjj'5S4R6-qjQ;E7_c(qftA#[V([9OLYeMK*b"ar#^i8R'I&Z]Og%iZ9df"C[`Ia-';80R.ph&e,S0Neeb\g3]GA<_L'L3 at hQ2#Pa'"!D.lIa at 3Ku*LMpL.WGmF3/D#Y)6rQ:Ia[5ol7'FO*"if/M9C**K;*%XZ*;>IT+ at EsY^<pY:0og)[JQ.JR_up:n0KNled!fIA),P\N2$q4+2-$YdnRZ[7%=`+<nVnhgU/qO\(g%b87%/l=Q,ETqnWm$S?XhUgGQC^K'Uo?]1enJ!>iB6<#e?mF`RY2ct`Lae at IrZ[E]5p!-D9ugTi6M^W_gVc?@HDm2iAHh[([7kG&^1nY at K7JM<$e1(UJ3.Xl1sohGN4WZ'k&>njVs<][L)J,sOnA!V"9?"=?+pQ9$W(08dY[la#0^//.'9Y#sKC_ijh0SG(mGI4cq*EnME`3<Mg99jBU2`j8S#JV9R=ZRtJV;u!cXsAh*>AHf!k2]%%HWOPA;)quCYIs%=,C>ZIl[F:B\Pu at IPQZUUp6j_T2u#6\nqgVfW`]aQ5E_=7<D\?WX0?uJLL\/t3#XBs0K!]lh=%D2C1!9MZds[bS(j-QloW%l^:N!D5)9]#c-sWKK-]dlCg<nl%TKm7eTsC`JhTaE%O?*]DJ<+uZ\-2M6QQHlTW/qrgjoh+lKIo8jZlL.!(@%/,W+>GDcsiY/b>KDEjFi:0LUmF#3ER.<"A&Xs"7^(]L/?[.MeHf)t`'cC;*%K-4rMaN!iFXplK2,.aP$fP,&uEPuF#)a8.TY-`S-8q^g6MPbcE*(<b7p:HNa.j!K="oS?g(pNdSGo%B)Wh.h12`=QB>f=fK12PUBZ`3]M8XN>s`JVV\~>
+GatU2gQ'uA&:N^lo$f:WE.(<JADc$F.W)#b<.XmDqI"mWQ at _I;ZX*RENcVH=2GgA>6Cs%[bjh+kj^C%Br.TAD"?>sQklc=E$1abg+YUb6H8H*s6j%@Mn:'6-YQLMD^V&)uN=%cNo`P_=!=2a:)IX0i<$Sh6SX$37-#2_iE):tt>@SXVl\VN+o$TR$QQa)aJ.^1FqC*Jh0Z"Y/172Ft3>ENU^i4*=+T`6lE8Obqj;l1dXKNH1!CaAM/C.5![k$c1O\#X05SRQTf&.+P>aS<B5\Z*3UX5t7U#;cQAh&&6/T7p*JcGpn=9k?4]@2=(ASMm5+:aL:b9OJZqZk;>]Y)7lehYUKn0r at fN].TI6c at b<89mC8o$#g&c^aF'6C7+1mN=/U5L(&hRscF:-t=''(t/J<hVB\4"P[JBHK==piJ"]2e;d6YCMp0^U-pV,@%@[klj$HW295P]BueF-1L]"3YnA'W4+uD&:W3?<eXI;XK7On3qD.h#Znh7\cn2 at So.8)bE6#:FgTaSO414!U-_8,GO%pS5)VP]-5XA at JH/`C5Lh!R9NDn%KqB,Sd0ZdF*g58,s81dLkFIT<'c(30NSd:Wb7n)3:_@?@a7+V!%lPdm5jiWE'S`kD*D<,kR4fa^`G'M5RZ^K,*!\uY.ll]<r7$0*ufs!>K=]'!H/JXJ+diESo]sDX<>(#T$nXeg$mob&iqq^4Q;L.Y)M$OAaT at nW;_lVp%HDO[K72OV29hF=O("^nNDsVGepbdf6F<lYCDK"NWs(6+Dq)l.+g6B!"mSA/(mj-f9oX`W&6#A<U[Oq#Zi571``XVU_$'jj[Z(?sZ+Ya9#/kFt+\S"@Ic;#W.*V'Jr#K8Ej;&<4&2[@s8PnRV3s/P(W\M]^_bBs!:,#*?WY+G<`**AOPNgbn*Z/A:b*\m\?EaaRmR[^e,glUOoS$tF/Dio]Q24FF?-("Xn([8CAp2SiW#rh%D3P]IrV,/OOm\H<dOOa`Sk`Wel2>LOm2pK">H?shM)+-P:\<ft):EEQSM:C,^b^8rm9rW&>I2>i//f[6Jnh4K=Ktd~>
 endstream
 endobj
 168 0 obj
@@ -986,10 +986,10 @@
 >>
 endobj
 169 0 obj
-<< /Length 755 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 870 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm:]5H at W']&EsgmSX\8PskKBE8?\LCO@=#[*T+MG1Q1CrrO;+TD79U29,Z#>fXgYOCF5pVB3[`88P<"CM6BLbfQm[>+c<57DL]N0,=l"3s0E"[DGsPHDJ&^Hh_ATI at UsUA>-B!Z2(VYa4"H2Pp-)P0MiKrIEHOGJ<Os5GV>jI$9gO-#P^CAuaW]qUJHuY0<c6[+_F(Y9[qj(bfTIQ?erV!QL<:2N]o6OGh2ST+6QMhG:(`>UiSiBI$8k_m9q0)M%uS!gg*?9UZAIC$NT2\m:WFc0>]P_FCGOqX!.lk"e>FKcp)>Kj*rSZHu<A3JS2:N13i^X1mQ'5.iqCCO8#N+VUT6lhh="&RaQE?ruKEQHC(efbpqjaa at BaR?o]D_hbgY[K@=*p(/7)7<?YL7TobWs,/H>>jVHCbgPlFDPt+0<NbD__r!pHDY)kRe-=T&m&1p>!t,amfXT+6+=Hd"SL<%\S#H/\'aZULP]BFgMl]gAmrVkO(F>=P%LHp9Bp#9uWb1=t08!>ak:KgJb$dQ>-*qtp[_#8s$;X3`70Ng7gqG!dj+lSA<b:OaZuUm3[H5?1CTfh\f>I?'Ig'V_D3+n-Q03N at qa.[617 at Fm@OLGmiE#"\bMoOR"ZV*2e at l?L-BK52i9T?2A/nGp:j?2XbU@"l*.*snB&8\F5Pe<]pIY>(jns+S at E?ET`A7/dg<U$$fjO_+#b*\,.j[LDIJ4fBTd)@1RIiR(:C,Qu:/"b/'iPq>+8]^TJ,~>
+Gatm:9okbt&A at Zc\97NWf/@$STp;ouHDo>Yg7Vc@*XFKW.fu\)gSDTuk1^"E)ekRq4dsF():,t;PAe,6Cmg(\m$`B65]^id'<3-0.0e-ESc`6WR/YM2q=#@Dfq\AdoY2f=@j7ik'W;$T>Sr9T!OYaXfJC(Zi`%O:JiHia"a16FLCM81]7"<iE;%/Sc4kB at .qg3Vj/?;sVn8eQ\<@VP.!*3iRg>QWKHf?k3g$U3.+/m*<NKOZb6A*3$F7Ak1,u`[D]$JG_a"VA_;k3gYm:iTQk$prp:!YY^bSc43O.ufE>J"\:pJ+"CEG``n33>@llF+IN^kVp;XF!"94[jqPQK/s[X*d at f=V&25+LHOZ[)ua at pfsCbB(6&aT/R3hZ&i26o*.-A?*%<.N%%j2nNXi,",_TWqpcVFbIah.E?8+Ol_/-&R/K4?5pN6*E.',OSe;1=N1O!C&G$1c'9[NUir#_j)rii]g/`h7YUMX(0=s#?/0.74hm,J:Q:.3=qWi57Ih,86GZH\Voc$7>+PsA[d1ec+j7.tWU*:9X+aKqTs=CuY(b6KH^6>t`;H8,QM"KaQS?dd[FH,TR?%*djl(q>fsYWS\"A&fA9=SO2R*LKq00*.c;We(m]1DJ4N3a7NQ?;9.$b*WZPYX=7Fqf`RP%?5FG>!nV6.7F003uJ%+F?Y[)jo$RN/aJX'. at L[qF'T&T%8:f+>!Zn(&4\o,[.Rr$mS+.'qSja(gJ\XLIA6R_3+,YbbmEg!Rtu%dS&#m:AI6/=r$]',S1bGg3*jSO6FQEY.t3YIVl0_EOU'dKSQ<G=Z0()h4l;AYgJ#<if2^iXF@/0JbJu),L7>URD=$e?@^'CAFeC7"APjN_pV`5Ai#Q63~>
 endstream
 endobj
 170 0 obj
@@ -1001,10 +1001,10 @@
 >>
 endobj
 171 0 obj
-<< /Length 817 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 835 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm:bDr&G']%q&]^'*ZM_T[bBVgYKQ.j2Jm@\>X>qh+,>Qm[7R83aq2C?6O+Gj'/A)H)%F7-rtgrHbqT.rSNqB/OG5$6,BnF[:m'_pD'HiaC>6(ELuGE5<Bk27&3^M4G`aLA*#K(8n2JH`-/nu?Q#]Nl\%--A7;!b.\f4Ki%?(TN_Z<E-(LBpWJZZn/LK:W(]MMKIKBQ2 at E3QNB(-o[HerTtUgR"7=8c*=*]2aEV7c:PW1$D^SM+ShP$j,iUl(i<<!;T>:W#koRK^q5m#\IN>FLlpSHYV:_pt`*db3g4t_ at r;%CpO at .<u4^q9kpR0*&?!G<V`-f^L61S%-n0?WS9`p>EgDl5?83(mg*H+FeO:,/a[$<,2(+W!#fD.hd9LoR:gbRS%>gV+h3#_Db^'us,g5,d*<\$.LGC*k"Xp_dGmRgHa'Iu\gANapBIS4 at fBF&@L3 at 2\0)0G61GVq's9mXkAFo2HL5(6'iKHMG^$N26MALVgq(AYr>ME-<V2A7Rs87uVIlUkc0S+PE]Hk8a#J@]Bc-;fu);-eKQS:P*Ar'_&FgfJA(r8!16]M?sjFSO$0h\'unY:187$jIR%i#^a<Cq"PaeNcGQ._q.>k4*g?H4>qA\L>+]EX_Dqjj[+e4Zdo39i;nukP5k09lY,;RKlEe7!Iu]Uo at Irl=/A5FJ3<B58O&p3=AXdUSrGG(H%?=:&UEr7:m5GaSkTdC.&B($m3[#'_U9S[U&SSWV22Ej)Y&G6ni0L>fB&mqdVj[m,sQ*,9X)>^0['+UpG!Gqmc)cF]eqI:=$2+bj0s?X^sr.V>LRb:d;/~>
+Gatm:bAQ&g&A7ljG\_=R/$;9<4L at A*VEbMG5T:l5\d-3OC_i>t8ou!OIAquJaqh)^."!0S45/?mGC1 at ShLG52i>=lq,r6(6B*<MB7h>pl+XSTI)+ at D[IU:jNWOt^8;"W;2-mG7&0VBY at 5\4=H at .'3_Z'K]BDK at tujXS`b\41P4Q.OOfJG6Mp;AVqhbHa(GrUC;d'R;b)=iKZEGr"f`Mu?QB$]2K+\18FlE9O^OI#F=[hEe6C%4gQGQk at n7*Y+Tu?TO-*%hmN&4MZW$X(ErPG\:t$i=qkJrALW1Y>/(>G-\k/8o@]HaS>]"CEGb6n5DNR$;a>L'tj at X9sNQQ1=LAY3QH`7^iUf*%IT;IG$d,aSS?O`$@i6@>FE(#Z/K-oDD$m4cE6WZ$`V_1`JJS5oLL(/WW*Z&)e!a1lK:&`b^(N6'AL=H?Pe&K+"k,,aP5s^A>opHZM6 at UO&qU[-+/qQW9C3`/bU'cd#lT5\Ji$1Ph/WJi&=PVf)l?':_F[)1dB*&=f at llGrE3;I3Gg"5m*'(b$(/*\Q#Q^`[A[k?9uFFaRIs?%Vi'*j97Y*"62T7(Hp&_?eQ1_G9^Bn^!J(gg/kIWOm6p]2p4,m^kl`&]6fC`h:C:Z,NW`&jU2Jeh->p'i,L.-q0](l_n4(>%?k@!&+em0/h6>/od"Ac7YY+Z;Cac[[Wb:eQb&\,2dc\cek4VDT"Uk%&:hm7(!N..NZ>4uVo*U]+ts&sQFK="Ta!K"Bdr?Q'lO>N+-bX&Q$k]9_EuJ`n=7@$2#Gc"9re/:V01od=(fjL$Ajr!pXsD*lGs%nO8="YCK/)_!Q.3m3'\SV+3Hi0JH~>
 endstream
 endobj
 172 0 obj
@@ -1016,10 +1016,10 @@
 >>
 endobj
 173 0 obj
-<< /Length 668 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 678 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=)966RV&AI`dFGpa/H9Z^s-I*cib]L_ode'3b_I:G"0#lB8h\Qh6%tc#G/h:X#mC2t,Qhr3+p.,3b&:l5>&D.1(T]3ih'3&d?`$(6E7!nFhmb-so!rN8M;h<p.,EM+6KHa5+&(oMo1g+G9i?:p#DR0KP#qs![_Q^9eCn*J3Cc4ss?30Y>d'!f*/CV+_3$0]QH2"fUI#Dd2.0YF3UgbHJMP4#'?gr)Z\bZ"gl0J2EEeA.-<0U)\`TRY)Pj7:7V+<#]B;.1aF/GU.eDILS[\pf]Gu]8ATpA6jU7?,Mh=t]-Vc'7/HM-Be6(q8IhY;`^XH-IAZIQJp$2WL>E;"4VLssQp>;rY^%G"5%L-qktA#qbJW(gre_i.!00A,]/V$ife.,u"^/j5U-HX(4*+\tupfrU-G8-QO(a4mhf6Z2I,Oo/#8\hA9qXo,0LOAP;m=FHS8 at Foh+".eXQJjYC\g%IHdXQmfO46LeRm/+mF$b>XO>eccpFYSY((6B/8O,[[[]</N!A%U$IPN!0K+K!WAIAK<N8X"0ql?_#5.uLbo,Mp_pS>h/Ke^NhEFn7pE$&,/kH.TKNgh,/trfZ=i;]\V6%P%mS<7`[%;=MX+"o[>>@E=?R.;`$dR0 at U",Iig2Ne0PXk]_kV&M?RZ):h<sZ3g=;*Z_qA~>
+Gat=)9okbt&A at ZcI,#]\rGC"f<gt-[FepRdQY$b7@^8O]8I87\Ip_f0!!sFq'c5WKA)>H$)]n%tb;Td4KLCAN%1q.q(a/Q\+:1G$6l[\m6$r[I+.i/A/AMXL^H3,7(qBVO\c=F`%tl-';VWJ)-4P)pkUJ^WR4V.<!$U<DfY`FTg$bM+RTX^s%s5S!K9l=D>a),Dk32kC*=]YZQTj[I6\RSd5BKfa=3.%)j8MjZ"Vr\#?.i,j?STrV)V(WL"Ca[0*U;Q"h;O2g[s6Y@&di`_F-\WF*:cY/pgp]l+,he at ek6;oNgX[Zh2_3Do_r*rj/:IOO:q\`TL3Jnlb_=, at bE9_eMX2bgYdcCJ,;s/(FIm>TBq$X#ko<./bH=i,2sc>8IcgjjQ?$%]kLGsZYD83+Qf]#nmkKeOWDUr\$JP8$q!G8"mG^<\:RVFr?hE#A*kWpl`D4,-um`PZ$P#Wj*krC-QLd':)/NE1=\:H;lVY'CK2;1]<>joE`/BDR(VZmZ^<%3h6?*Z\'DEojKMXQR\W'jW^\^t>_m[Url5m?_F--1Vf!V0)hqre(ga7G`pNp?PHO?:gjUM%V,.bE;)L)QNRmu(l?-.!FaZI21uaOL;YLl+EU]n)kr!IdSrA1WCZJNM!GV$ZG`6PCS`f3Iga+Ur"2^$(!EiJ`Tmb(50:]NF~>
 endstream
 endobj
 174 0 obj
@@ -1031,10 +1031,10 @@
 >>
 endobj
 175 0 obj
-<< /Length 1103 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1126 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm:h/Ac:&:`#5JbHD3!>jL<Qq<d3[T(FLF^9k_<QcH=`$@kV1*C<&hp2K?3ttR6-=2(Tn*YD_qmm,)QabUt"B\,1N@\QsJqh6/BL$*JVIqmhH*.`sN8GHGFMl,<+!^^'V&TS@[FD1/9+^Si/[/bGMbKT&oIr0sjG<gPVQ%j"/E0aZ"]Ht at C1e[rUreo?(Nu:1n?Ba4H._KaL`u8D?].)hdZV<cV>Ret&]&F6_S]dURtK928`ZPQA.o:$Wn]*8>Ge?9<lAR8T#$"a\#o2l(StM8P8tSR!66F:&6p`QjK%*kV.CgEmWlVB/CtQ=YWQLp'Zu>Tr^u;!"th&Hrq9u`8(o.#p%hOOZZt#e%VIKJ5#r$V+MS$;6m>mB1EbbR8LfY*5J#WXX<(9*Wt^At*9bAB92.6bEE]X_b8$f)Z:,`RicN]Q<7sD5cI=jeAKJ1k*frM=%.UmiV?7Q at RA_HUYq>$3!oEikn<a%RQF_^$r>>AhrKUhZ#TUmc;;\TeOiQ5NhPV")_unX\NF:VM\O(k7+(JO!a#u[lZ-XM;dj>gO&gf)SLkF at M!5bt[)8+DB2URDpUDqc^#QkU[TeP[.:j,3IRu.'d<D-LlFoJaMdp0E:OWG?K5b+UhKU#/IcG-=)ks^p+=^IP.B$0[$$QdG?`T<p,o_HCP/AAPU/F!IE)#4*XhHi*!AKoqVM(&Fo>Fg1'cm2g#pJL\;lEX2R%nF>C+?nNZ0 at iteDbl#uZ.0uKVoJ]-XtrIn_uRDpjD[@:+liV23HA- at 8hH2%aol\iboj$U!9W=mi>pnA+]&l<1J2ZH69DAKfch\okCb%^n$JQ.]nIX[MHEf>nZ(&Kb&p]iP+!X&>NOQ2*DjC_Us=a3Vhc.h_lPnu4>1BArLodC"GqVeLT2YV/Jg[OXW_B3J3Nt8#?+"X$D%#N%DS@`PK2$tpccA%K at u+<'l3&[M9E:rh?:1C[[&b^Jb,kj!"W\.p&3!K2L-4hKcj_n>eet5i[$Zl4b>(kMt6g_K#e.VAN'p_Z6?Z%+_%Y.KdoHk[J;pD)b^g'rmiT?]c,XQ3#Hg](2oWt,9$Lt?%q[(/iV1'YKIYs6*V&2@*>eWM),)AcQfrO~>
+Gatm:?#Q2d'Re<25^cf,J;\9[0PQa!2Usj2?'h9[eZoFHQkV!#b`K4-pTq\DPCt7n;l%LdptRNpH[RQB_8Qkl+9<mpU1E1ao)Z3<nUhTC^p3ga"+foDdF.l>ISZ;HB`531Y6*fgck-KcVu]./2uEXVJmjY+1!UE$E_a)2b=8'cE'?^HB^(s3i_UCH]gX_e/[:tV9)>V%#QdM!rC1:g[h'dsDJ7Z+54iX3j#/FP>Dig^blj:L#6F%`"2QE/FS:g;6bCDd+hgmo=Dh269<5]rb;@Q%E<_UiQ(L6U%3)l\Z_R&;Sd2oieF4'BYEpdj$^l9,5j1L8?Grois-/D!pO]Mc_a=^>54/R.:E'r56:UhNPFSt$hG8rV*uq3oeep[6Jr,:ifK2j,)cKY+(gftlWP5rq>cm,$qsX-cK,PWaV-1q&N9cI4`Sr`-VV/W&;/NZ<SEi%F,u<469F/t2Vo64]VAF!&'hN6nlVQM#$#`!crg2UGAnHQ at a)UD#oMp_uGR;'VpA(-l0i(lkDPmgWLEUVugAlNJjpIjq[[A_E_]Ca\11>pDf-[oH(/.d#naNdHRfnJRQfC$9>V1m95L9W#fPh*mo.!F&,?/O,?KI>s>dpGplLi3mKlS'p!GZ!fW8Y*%(Tc,rWV at cn.E?_B at D&tjgfC7c(F"tV^"&f4qKt1Ab29?b/8GL.&9r).Dke5?2Nb*X$X5Z.YKZD%K;Q(Ok<>7F4,</-^9m?^^^jWGs2>nVj6arB&pt+L\,TXehqfAI&ILi92O>C(AJ0#<:i*nm97oW\"bOZWnpRk#@aWRcd0cHd``f,%C!o(W at BAX[l4%Jq&4-b+GK*4rD5i?6qDD75U>QGRq,.rnP"(?5S+HRC%d:U\7'F)q=pqO`FL,_UC)td?pd,MKO;$o4kXpHZnGuVS)M)L[fBqbt8SZ1d at 7n:PUG)>kkV9 at b^>Id;j%2c0SF,Nd:!4>?]H0kg2`9#IkW'%RmJ2!I;$0:Oalqu6$\H;/4B&$0 at le+jO^jn,/2!!i$+`OORkt8lfEm99:lHF[rN, at im_&/hmbC^n%10g9Y]"\)%K=r=FENP`@7r^0E\/`UR?\20$ne=2K>%`__/o#1-`.S4X8'J1_'2sMr!1R5^>J~>
 endstream
 endobj
 176 0 obj
@@ -1046,10 +1046,10 @@
 >>
 endobj
 177 0 obj
-<< /Length 246 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 236 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gas2C3t&nj&;9rX'jI+NleWl>>UsJr+c+a,7F6qqe7_h.J+(?IJe)C]@<^jDG3$S\P(4f'E.oFe$4.D9JlL!X8YK[6HWUbie\P_u.r`t!dLZhgdjFg\8Qd3NgP3_W[6J!?lB(HYL_V^LVNbMn-nj2b3Li0A?fV<&(c,[9>E#+4[ADW`7UcG]W@=e"6QtT$j>rmT1pTi-1[EoOpt?O(?J##O2`<Ols&(_rE(`$V(K/tYoDfa?:6>~>
+Gas3,\I-2=&-h'AT41DE1 at FLkfsCc3/-KrSYm at q'J4>M*qY"e:[1ShhB9$nN0.&Ia`2F[N;FoFJ!Z?oH'hVkJdA7WV&_<`A at iN_&l;SRT0dMVo1J7pAX6Oj]gAZ4')t<H4=s+^/,PgIm[>iZbA50bH37S%bPGo at brdD8r`h3LaAJnD[TG1%]qi at YF7a>i*F at b2>]?l3d. at R,Yrao)]qQHnF`L0HJ%&C19klo286XK~>
 endstream
 endobj
 178 0 obj
@@ -1061,10 +1061,10 @@
 >>
 endobj
 179 0 obj
-<< /Length 888 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 901 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm:a_oie&A at rk";GP0(1Oh4%+#%cOreoT:rMRol9V[(7tiM)>2&'+6]&*?/RAp<!.imoH*`YmbLu&s`'XSkD]-lo\!\BMl48.G6bO=%#&qAkjjs<OFWYJNh#$Ij^M=PT&2^=LJdVu42Lr2mrAmUBD!q+d27lr(Do]=::,5i'Kuaba]MQ_i!=n0i009=u1'7Rt9bHT&'2K\W#bN57&.!qG^k\8XMOk>,3Asnp$VUop*dUKtJg284,@&g2e`X.om!YSMb"gtbV<d[RqMYb(">M):`MVLlXD3/&"@*0Q#MQrG]"d_j8o%FuinFc0'Q>4#^;n]Qo-%ROj45+&c19MDk``?8WW*cgrWHj`M.JA[j"]+JN5I\Ng6bR<h?uM_;/6<E+HVg"^fXu(go>Bp,eM4DWah;aYloa?4n*<'lP*8A-,9X$Km1kjG*b831f6%5`>JqXf2BIlO6CVudM:-0Uk8Z!)Zblu_%$MjJ+XKj(4G"4_tc-R1*EEIAq#n'`HJ at riI$SA]J6mt0YC#C!t=j(]@/0&o2Sa=^[nk*5Q4M1#P#VK3Mk--73#.iWDZa$X(.nS^J+7As4:5Th5Md03/bfC7]@-ra\Fg:2a08Agl=,L%I[fN+kJ`%@(n/^%2p:`<$0&A")\48ZEc)^)pn9pXX[>`NQo1/M_SYX6Z=0hJO`tDj.WNO%<%Fu-]%2mSX_??/a-IW/hSP$N!$iulRnlAXnr"m/rhfSPC:Z2JHQO0^(^.mm&2L at g':G>!+qe578$Je/t0hIZ^_Vm!:oPQ][*q-<9pH?,\5ea<iU#%;;0Y$OApAPCn16iUfrltPIOiBrgNSDGo'<\R-qK/)!Xtl]Qj-[G-`/0j:m]tF*k:tU?9$4J9ELd6`]bm=<KV9~>
+Gatm:>Aoub'RnB3YV^'02W8(S)lU,8WS0L/>,A4G?H+$70e!ceN6BfMq\^?W#uL1h7>cJ/Im2c#F0f/#r8I_;6L98?]X#A&Kn(b(#e1`*JGBn*N.UEtr4KTO%t"h8JaHNiU&`m+JcKonKUWG5 at H]aC+a,uVl7C&`26\cONirMC>qOn'36?EE2aY3:o7A?:"+'Z=FZOQqo5Wsg\-RD(bNE(H'mU<E$m-DT&BGD]OG?b8L!Mp%+04q-)B2&^nAsr3L?oK^P7]F2%^q`Vm<`(,ZI33Pn8q_aP,FO2lFZ>t9sLl44KG91>o3>O&`Mbd2irNBC!Fhf\11QXN$2Via`Tcb(ct6(FQcmq>:GVmTKX4u)?4nho]J6h82E5Hi at JaXA$A]A)35*Th8>-d8L*/&&.'Qm;,8pVj^hC:a3)W(\`tCB5oZ!tpfbWob7cn_7D;ZDpDb67WKB^b[3A1'*eLn;.`%cL[(0M"bTBe\s+&RsF[Sq;]71s1U8P6Bkj(\Hf$dHM+=.qp=\33>fsQonoba`S$g2iGa/7Vl#3&^R@[O$<'NX"(4`0;A^Nj?4hJ"441b,pDK"gqXafF(DZ0.BPVKlbOD(8Y[e<='p9kALC<'U(B$]LMZmu7FHf9ijupDe6Oq+-;)=QFgNIZ]`S,/OoWJFKYA$SDN2s2(_o`Tu/mWO*KU<]ibpG.aD:>k%R9e^K8r,f)[!ZqHQXT/Gh,&8W*i8pEZ*]U_1,NXu!Y>oX4j0D7%f629<SCq0i\qWk()>h/t<pd1X`SZa!SO:TCTj(XW1EZ=2N6gHq^0$u13AUCq&4V="i1/%qQ+-NW6S,Hor+Y66FG[h))gXRD=@3k<Pc$T[_Y&1En3/CYn=#\n*MkYnePP7,ONYjQ]fJ#j"__KUirrXU>2_b~>
 endstream
 endobj
 180 0 obj
@@ -1079,7 +1079,7 @@
 << /Length 301 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GarnQb>,r/&A7ljp/iTmqJC;U6k<N6P&H//PAEif8\h`kpj8/^Q(n]IbO!O at Nd!C4Xg\Y57dh(FQ>tP3!IT7rUt;QH"7%u(HNW4/?<0kP44X.G"0W7WMpuIJc at V<&Kb1T_8EndSpT.Y=%1%uAZFS0c3Ai at SBXPE,\<CMK=#!Q$W6\c;BL1gjQqLH"IPJCj%s?+Ggm29 at Q;XGhZ!\uiqC22\kk\!;YS`CKo8cnZpg]eL)P"![#jglIlKM9G"WG`8bX[m'>5$/uiEBp8m/PR at U/P<US5H6 at 3B/IFjY'6RCRb~>
+GarnQb>,r/&A7ljp/iTmqJC;U6k<N6P&H//PAEif8\h`kpj8/^Q(n]IbO!O at Nd!C4Xg\Y57dh(FQ>tP3!IT7rUt;QH"7%u(HNW4/?<0kP44X.G"0W7WMpuIJc at V<&Kb1T_8EndSpT.Y=%1%uAZFS0c3Ai at SBXPE,\<CMK=#!Q$W6\c;BL1gjQqLH"IPJCj%s?+Ggm29 at Q;XGhZ!\uiqC22\kk\!;YS`CKo8cnZpg]eL)P"![#jglIlKM8\$l[J?bX[m'>5$/uiEBp8m/PR at U/P<US?]$K3B68\jY'>(CT7~>
 endstream
 endobj
 182 0 obj
@@ -1091,10 +1091,10 @@
 >>
 endobj
 183 0 obj
-<< /Length 962 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 973 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau0B997OU&AIm?6pcL-7#[bCZ\"IR at Zcto8n]G%P_7^Oh4QYTWJe4_HCVnm46[tY!qkPJk2C7 at o?>u:UN`>$J-:BgP)`qS*2*A$*srR67`Z_TQq'HJ%_c43aL)okhh1!rZ!m`cNE+RS&fAQs0p&G90pc'tBi1mHR>8cJLRROK&7S])?A5(7:TX-<M.H&"=h`EAT.;9<;GYa^D(JJd%LVRIHaf!]n80ad&f;9WU*H$3!aN['S&]r[j`>2P+6H-o!Yu0-=aF4a":r-V9`&/gIT*'jJi2oH`C=K//ltfTc$l]L(SgW<jbFdf^!YpF\R8A:+\6*,. at 7ZSb&pugc9]Z_`2gI%\q7,+[AsXa)Qn4C.#<QGiLZnkUOA']aeOpAee'[.@$##)Gg*Lj"&>(CAKH[eZ8D#>X4$%6pK at GMfT#h2%)\ttEF:iH49`K00khb-^`eBP^iBSJUlA_gdRDN?oomm2M8e$EpTaPbqm7/[UZP^JWQ!Vp>]s;&'0#Q'Jl:i=R3-,8rg0J:pC`RZb;hou`%gT?n06:XdfZ/[9:FS_T..*\%H]fqlj)g7+U=rYZ<$:Z.QrrsML>6G#hn=7l(DnO\j_8hMn&3=?Ap)O3t_B<V#=pdd([i6*f:P;N&Oi6W4):QWu4)\ZUi:@M<l)Ss)[BmE:<>6Vf:PBjiP+s=!Zc*'@]:]H^=!Bb%nd_L/qeQ#iNe,"4O<)9#Ib`GBIi2;aSdbH!6uIJ$'6:l.H%"BjNHMh/&pbj%A>;b6TF[YVu"8`PVIu,A3o:+_"c#F?&,`]f5;k\KH#S1*ZrX470A.lHZ]I1c8 at f%[%<##cK>j6]nEBWeQK`bjD,ZW<9-V.%T`1,9md$.-TQB7a,sA7U??V=5NFcd2t/]HA2/KN#u%m',-/1\4]:URoQgu6)f.[k&"14BMPB2da=E/D:2KBAKaS:g6Du=C*OjOg)bgM$i(#=6'Jn~>
+Gau0BheUt#&:Vr4 at 2Nee/=IhWQ;t@[au\`oKi,1CAIjYCV]L\c.EZ?#f2&gi>B]!eK+5RdkPLtAmaI_EU=$SK^5!Q at Tbf""kcI=qKB>NB_Z4u`V]ZDH(N$hRj*S%n'CU\mI5Y-U6dR4uUS at k,KcgXU?p:SA`-Rup6Ha)+/"*QGBtj?k at m0@ZQkmj)3QA/Rc)gcE&W*SlVqFh'/=)8@:E7VkBqm\7AQVbNT(O+q+V6tepb*glH#;POWLY3)J,fb<aho:Nii0BFVd[Ft%)`,LGT]N-$%aO2Hq_+XoO1tb-%I;ufD/IFGp_+%BU:p+(CipUM9?F]NV->Q_+[Zt!TgC<SuL7h,;WVkOtja$,"4AUXo12`hA=`1LK`5^@LPfc]28B=84hDWH?;,V1NeF<4g]3&F,+YACnMA/O/^%PX\e/oBW2sQ429lqKAG05_$0<OC;@1`faH]FQrT4R?k=5sNu`7#d`SaDBd9RqqGHIb`8[fk/iHd[QZPQ3AXk*H>eY'u7B6qUiefmY5Y8XjfniaBYEV"g&s0bjF,DC(S at 3K`&a9RVNl<_IFm36]ZY9dJCYKBL)++U)a(-DR$`P,/Xn-B%cNr7e,RJ]/\82[SN'gp[E at 45IAuu@,("2NX*:2@,D27n`B at 3qEa@Ee!<Ees?E)I9]:5atB,QE2a*!LNr.pN."4^FYj9/G[b#Va1I^pd*KZX#Z;pWTike)V/PnF6f=+"q1\h.a8MqkBVk at aV:?,mLul1(`R]pSXd3[ESB'[@C#"NAD"7ID[a@#O[(7=FY8-U<aM8J.d/hem?$Kbe5&k*&_^RDAi/0/nJgQh'Rt=`bplUQuW`NqbXfK1HA\oCoC'bI?)Oo33k\4(PgtZYXg#9S%-Pt71^Pt&kckFe=ds^D;'W)%mr;-'C[,,4i2%mqGf[>90H=g+?WQ)Tiii/-)7Z=S#EA)&E'22X'\DpGFL#u!+LN>YR1+14#W$+~>
 endstream
 endobj
 184 0 obj
@@ -1106,10 +1106,10 @@
 >>
 endobj
 185 0 obj
-<< /Length 591 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 605 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat$ua_nsL&A at 6WI"Xjl4'lt2'b3B+Webu#H3iHU<$\?WW:9P(QBI5j<0<o"1<Z.GD`eQ#LEut'63Mn]6"&k`JF%mhp5h-=`1SJ;#SQVbGn(KF"n*RYZ;D$<<(=8?\FcH_PlXaZPT/j\`OjXMlVFoC;rDsQpRA[1rOoRua821%6t_k_Cd,^*i-3gm%JP4_$'!Zi-<m_E^Lb`Be:tBV&](KD:)b21Dkj%X!:)6C^Hi"=:e8>pZ+?_X4C=l]5'\nB0OJ"pl#9daH5R"RAN6&n"AhQ6P`h7SZYXhX<,)btKn-m&>Z_onD;4OumSEZ"rl.k_`tWPCqfm#BLWXMMX<,qYa/MpqaVrtLL`2FEHh:Su2O!78_\'OY5p9a47/EjBRk-aj=Jpd%6>[a[.rf^-hs.#L#H)(<WV,@:!<n^'_pPub.#Ahl^3t>2=8IrdW\'<$'\Pmp5r+8B+X4Z[N(ul?:H3tj@[0KA8ua,_S=QA%e8?]6B4[#F'@g,:c5TcB4P[E(Y@;Q&"u+iI-NtcYp/*@BkGu7XbF at .9AHh<Vg4!T?7*^]H&%[dk6?:PY^*ms7B*?XT],mqErW"f=B;b~>
+Gat$ua_oie&A at B[GYATZ\W]'$LiXuk!_%cKg)apqE`?/8/(820pE_9-g60O20'$^&/8sD75"e(&;Lg&=$=lSW^b3G'q%!R!+9EbK:^IW;$N.F0W[i,uIY$jl7ra'AGOV8,!%,N)'S2G,(/Zp.X:!^LE`]I2k-rIg/Q`T+*,g9=,5^,iG<PZOb#Gf0pNQA5#LL53i2ZNuRqlZF]ud/lr#aTZ.D9/"6V['uQ$fbcM4m7A='p(+fF)4Thj?IITYR:U4Ip8c?S7^fSjp[ULd3N4#NU".0UbG'BGTRbR`.$BkE)UI"l(uI;e9\[fp*2I*&CAu]cGqDlhr9VlMXmidPrD3#s,9O%IGi,"l/cL3nU`]Ah[+qLWV;D=r>S5Wl&8L^c>Z\N%#5k=)FK=k*S*h_3MH8>Ri)CS?Nbg;>dARWVfQ4 at 8!*]a6goF0'sG+X[5\((!V)29:U1:0"5GgNHJ+n.*#mG0SWiG4tO.VJp"(q1e2Q(1hNi45g)Jt.PSe7r)[&oTjljCY?u;`8$2N\e5)o&7Ga at mVqrteS<pJ*P!A=A*;sDM9YfX*q,:cgOaKgiZ`0^-OM9u2^C3(QQ[l0\9%#ob5F'K&9`~>
 endstream
 endobj
 186 0 obj
@@ -1121,10 +1121,10 @@
 >>
 endobj
 187 0 obj
-<< /Length 1255 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1273 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%#>BAg]'RnB3nFQb8)([>\f?V0*]9EP4G8]$5%tk2<Q4pN`'kFl2o';Da3KbCA.?bR?,FtmLF34B,p$If"J2rF;FhNZam0X&[qS<0+827G!!@UTnofi0BqBO\BS)CJXrKEC:!Z2fSWC31":`q"PbiCCX\Y*cnLA^R[>0<<W7*0E:3Xjj=++bIn8'2ip"DJc\'$5CaGeEaqh5<-lh4*(CK(j,i./V)dQXp7FY:-VpcXKW-q,hL:E1j at H3*jT at L*4YIUZ0`q/'4-Q<,nAcHse3gY21G<C_fJf)K9em@<;B8KSh[I9^Z6tFE?L+YA at Z!BrG)rN%pdes6b4]XW6/PK$%E,Db*V9k9/*U;0++nrLUGq_^*DjO[Wu]?I1g4A,K)jSp':;@$SVHUj6jBlO:E9llqu.XF5aOBgs-_O43Ad3Pq220Onr'/peBNfGPX"jJ$u7M2?RKHjSIBlc&VRf&9F4,AXu&?I^*Q:gm!H*6URD:[2MUI'm3PEJC"`':a`S^kjf/`?ApH2f^o2CPoOS=\h%Z(cdEDW>?5LTB7.EXNs>N)dkhY8<RLQi!7u$JfRO3]?j_kjWdOJpr#5((h/$F9D34:>GU at CgQlSGdo%dV>3\&,3?V73bi>)EZ:%,C.JfGESb2H\kKOT?j#rAPi#"\*L[RG)p?ql0<o:7O&2)rG(R[q91DcZ at eFGpNYp".<ON4XO`=NOAL1];]:6P1S,=g6bNhnQoK%;e0)/[P5i0a7rhX/G'Vf'PII<UK[s/p)"<cFU`0a&tB"A?#_WJc2^QTMCc:cYMj at 6QYC"XdH`1gAi=>b%Si@;*kKHm/ASj)s(0EFkpW!Z=\P at 8g$W<AtMu<:4uYLPCX*GB5p+TP<J5Z=&JRSlfQ*^Zl<VH,E:iZ6_uR=3I$V[AO^/[sI_-\'+Zkd3m]!/cGA)qN_CQ]]"+i\"+/.<ES\eR>R/LF)r6s*32HWg]58_5?R;Wr0Ib>n/5g$--SU#rXW$sm8GEYGi5Y\=Ko7=)1T$.i`8*VK.+cXnJg$Mp5'+oeq3 at OBi86Qo\#Xp-(PnXYsSR-JpZ?[H'+Nh5Agp`2/6r4%F080T7\U[.^ph2HPNUFF at g_UC\>-l`Jt=a!fRN.8)D\'<!c5+O;<#9]@2MuCe&b52cd#G2uuSbs%h)t!B at u,JX09](",dXIq#_821IXc!WnbNVbT at U=9"Y;$g(e_$pbNEqE%S^Jd1o5Qdu%\IPHf_?G,I at 0H=+FKbHNi;=%!U#=ZE8=9~>
+Gat%#h/D%+&:aF]+lm'QJ;Fq2I8Br&+R-1eU$^4Wm2kCQ0J[3TPspb.P,<_W.?Y;m>E2nj#]_:6mruh0IH5:Rq"]+R^^M=uXNEsGC_nd]e.2sC"JR$`'0stk=RC`jQ>c#Z>mLB6X$;hK'#7$Y:e$'<7(jcj#\4bjMl028_NG:-D4?VOr5T.i*J>j*%kcH>APW)+cpR+e\RSC-Fj1:D/)E6+0>6iB:[?4dGN>"rhDLd*gBYH<Sp+$#%0L,(ft#Hc#Y8JnImXU[7h[Pre,82BUbFYQn"1Oj5E at _uW>hSf6jURB]oZZL!K9ck^sU75lfB?+.b$:1M17^nosL!5YZ\6*Oj5/00fm&KQX?;k!kJmGPFZA>VC"kIOQ;h?jAp*/4_pj*8="fhJ['M_o8oaFOk(Og?]*`'<.Y[;;f&Vfd at Ve/SfSiPHtk.sME]O]VU8C!nsFe%WgXCl#':H!cMH_6%*uDM^bb+oPeL6J5&skXI16UbeZSJcog"3<>;G/:rb(r'?:NV/iD1\Y'sC.*'97_oa,+g!`?A@<eT*i+l`+^.8'U+kU*(R*;\Tn:TB7.ESfaGPMj063$t)EGn_[GQM!ABZg4cCBpV0Qf4KqR4L);'+Na5T9c=f(2[ZanBFAaX!:AU/Qp:OB#nhd5JXKZ-8']"lbSataHLLt)IE)*_H35qNHa&d1C]R#"Glg(Q6K_'#:EgM_4/j=!DO^.L^VQqS2Vm;N)#`dt8Y.TChUr=]/%\2E9Q+GWTX=UEH at SQA$SFTFs]02]mC3TTtLI46)[ros(K'Orr+Y[=LR#)jH`5TIZMOi@)R%2Z558fueJs01h2c;<X(2"6#?uDLkJ#<*1m<.*M0kI"e!mn/4X;-X-;r&_O1:cGIm$f;Ag at _`n4k$q67);EZBOid.qFc$fef.fhNNFniHSp9d,Tqq6=IjcWS,"pQ`+1s at Q%*$lDl=5s)i?R[dje;)$&b?=92UkTY>6C#iuWtj3[kqd<2K'R$PWHr.uM\HR/]J4n%FGo;^cp9i)O9S?r-GRr^]6U.ok(+O<PN-e+=?eH"96rV;V5*9r]S.*dcsYmS6)6m[1eCi#]H[0/E.uj0h4R>)eKA*ioVA4AetW]!C.gWXYHa#5;].T!c8aC(\Z)D='gdQ8e/NID?i&q!?j]X8T9e at e0$:/2;VN<"Y at CQerV][@%GG=YN!4BK^A6^65%io?3gp<>q6d;[E,u`W,(M"+;ff2`!7RJk5hd=AUX,/acZ[#LaOJflM'%_L?o)6#6YDO`U=5'[6b7~>
 endstream
 endobj
 188 0 obj
@@ -1136,10 +1136,10 @@
 >>
 endobj
 189 0 obj
-<< /Length 823 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 840 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%!>AqtE'RoMSn/L+LN:1qO5jH:45\Lc]ie?oa[8%[j-7*Z/Q!]T9\?hB21ak$&n[X&1nf?U5Mmo<,^^;9IA.&Mu$Oi-q0YdfoTgTk5.6t0D5HaG&]tO\861W]4EI^o)27*pP^mO`uFoFm$AJSigV=RCnRH)+EL^7o6YG0+1^M2.r7I:7j)e^#3r_Zbr^WcV$SXS(.4W]Rm]JR$&LR7u[fJmu(qo<&iAHFCu2KXe:OqmaYZE@@F=FEc[7(k"';T6>1qdX'_k812o]Z-rdn6"AHYShF83cdTL(q[k$@c^9LV.aeSX>\=0(T&^lPVACo86a_U4VW9>G>6hUf+C%+QpIFq'V^Fe'5&Z8IroclGkFA+ngrB-oWi"s#BOrW.m*&DS at S,m5M;Q)UXsHSd?nI+F4l3DW9[HK+&#uV(R`3X0Ikk"H%Jl2+ at QQu'1i8A$W-t.8!`)j&LNU08/$e!E<]%Qs,dh!nhB]m80R,e9VKPX5/^Q`!>X_;:L:,Gc$GV(>)Z:,am6i@;Oasa2gUY4N5iTkjccjU3h=l4'LP3,Dg;/LmLQp;j<nWr=]*#/`,<+LS.YRnH3/4fpT>r[/(a*cD:lc!A."QBW4;Hpre%]"e*;n031^T<c2JPgKK9+\PJ&HHDVr)2L'ib$'GuL8<0bB'$H1b8be%HlMrck?/;!^BO,,'C\_c,,Kq?ai_MDKYDC[BP5^Kfh>!cJOgchfsrEj6>C^<d3ZaA0:[RbV[kkDWm)ou>jc6!E$-!07XDNi'.rlsohHA3RJX?.YRW\hd4?PbZC=A`0U:$VO%#.N?T6KZi?iBH=0,"qb\~>
+Gat%!bDt%*']&L6Z=@JYj*)+]O?0*e&<$aOfME?TenKc*#DlARq0JQ4mA/uW:cJ*mI at PY3cg=*0Gl*=Wa91(=_Irt at r;nuUs,c8L!$*+7i,e%6M=^?,;'b_hq;m:%FVJm.e.+O<%m[W_E$#1CTJiO's%55.gaF[`]MDgUc?0=-ZeG"gK<]',hkd?1Znqu0Y^FnLH'3llB9>4CKG*G at FB6i4;O)98Il(dgVSd&CJ,1b+b/0m(K1k[iXkl2DI+\,k<G[T[&n6tc,a_ED&T:%fk>[<$92';1`c'!b$kUH4;;>_Jn1"TmI%2B!`8!]%(]u>Yg5omNY7d8'L1nm8!CKgBRdLCS+6$DQDfH^jb8\>9:emn79T0k($<b+4P/ED4F1I:*=;J^)_F&.a9.gQ7k/s8Qqm/ELSqN7g0M<8U)*lDa+b#[;[YSu>BBcLN.+dFF[Xgm`"B%K-KXdA'A[oh!Z8E9"m[[$&9.q%'eB):[1q\li(rG[g]mOY?Xb:Lha1RBd)Zr^=;4]c'*in+qJ!#afIYl6qBIQq^Lj_Kj,K:TVN+XM@*2Ii($Y'6#'XV;LB9D7FCYU;ugCtkr!k at -eRk"MH\Dsf]\9CqVC:i93olG!<-Q=1So2+*$I/h#NUM4q4!2H`Pn0U0-#f6drHd\OlU=h?3^h>X:56V8.=\]9t+Qu5"Ngk5N$Y:&A\p?B;+<9T69Y7G'R&+j&/MX/lP&>IsRlYT"c"\EGeYVppGlLcFpPU0^B4rfb*?gGqdd($"V5*GLXePlJJG[q0<oN%6qZl$RH1a5M'3q0'4r)M&(>fl<iRh$!672ZT574D,1'b1%S01c$+6S.Fg]~>
 endstream
 endobj
 190 0 obj
@@ -1151,10 +1151,10 @@
 >>
 endobj
 191 0 obj
-<< /Length 605 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 618 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%!]5H at W']&EsgmSYcjngbXJ:k@!LB;=G/3sN[VGn9bjiB3=r-^#PNF''S^^Em-giLbh:j6pOoc$7d"%I8K@?a1`@K.R.;!^+U(-n-QnJ48nrCFBj)Z<.qGE3Ami!._%856qI#-]Uu=4qVVCc8-Gn#t,jMYbWK at aV?.g$2DFc=-Cd[XUcn,4-AYb<Q4sha!ANk;<E-%/Hr]aV0[O!MrKmIs?0;o(IVij"0D?6Q#4^`ht6l*he"b8*HtCTOW47GB<*!,&ohqZRuF5TJ^LO/BdCa[B;RQ>q%H79BDqZ9n21XGraMK6QnGJ+LN703mgBR%KXaMR6/YkS8<tf-uGQd:>7o2[He1^V/jIWk$e,3amFYF*SO\6f%"!YSWDu5S%J#\b6O)8p7j'e$gPe:"!LVgjkfFWA\P59_T`QCVZrLs;tA&(9Y0O=qj1%GPWrag:e&;Yjr<(DaAn]*3_reX$)7W2pA\POS at s`JF"g^L1*;qN?m;3"kGde:jE&Pp?k=g#6*%K&4k;H8l'"?meKLn&k5A4-JS@;KZ&5=.k!RLC!&t#<H_Xno$)k3ZNIF?@naN:6^eWa%?Reqa2?P"hPKK3^+/U'/Sc~>
+Gat$ub>-hH']%q&]IPPCp%:+DJ2E'j;5oga+u[e:QuUPR9JZ9O,l%6t%jhdS9L.:`NfVMsk<?'/i9MsBW.BXJ:'4+o!"!ci'$Yq>'hJ[r,k6UOSGbu:k+)>rnMc5d"KB#k5]6X5ommGfBT=ZR>NS at clp\3d>I3(TP7&`'94s<El$iBM<-qho^T0Srhi,?^lM^(9*>ohBl7%Q.+f([In&`_<#DhQ^cj)0gTkY`pY=4_h*&,d-->[?D"&s*RM%5JdKP"DId$6a[a6AEJo#gd&kg7)4(o<H>,MbPfYh=J8MQ3peCPX5CpJeC=m-g/$]f?s(laUI6K];$"N`8lV`<Rq`3VFr!4B`,,Bhb06?HkV226.'J+I-E^r8,"V\NX]cdFN%g?`u=kpS'H%0=$F\mpc4#)mo[ik"mH,.)T*,NS1FM^9-t3Qu-%N&1A2Dn<<g<q!1kpJ$a2CUI,M0UTP!r[2B\=1/2&3:F<+KPt)O!pbpUD_TW[7`LGm7]a]r=2T!r/4KY9,6 at F_,)2+_'<6LVnBl]V(&#esfC7j#=o9$@5!_r>i_D2W#[DTbiVs?o>7'h&C&SjoUr!]agpD7,CnY>jTd=cXh-kICLB0G at +m:Uf5~>
 endstream
 endobj
 192 0 obj
@@ -1166,10 +1166,10 @@
 >>
 endobj
 193 0 obj
-<< /Length 1028 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1067 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=*>Aoub'RnB3i%]YqoaNU=2CWLBeu at rG'Q'k94j_+YVA(d.9CqUb^gKONV3>86NmHP=3VJ_&]"B<n at K7<q3.aUV63\,3)$iUGFJ&fA at iPEJnT4U>]^cHjQf3E+>*a_IXjtt+)$V^r'c&plTt*qYUu9p[@:H:%(n7DVhsaGJ-$,Y.?D+`)(J)"u=#N,#8d7iq+m9Ja+A at B;_q\GkBpTOM>H?lRVoD>`jYB[AHH[OaHb.k,IGK$C<l9YlMT'JXO16Oej`K!:IT"mLK at P^KOfq1k@#WS>-<[^$j[i>"gi7l15hcln:DR6UpX4;8/3.Da;.)2W-$L1Op7B-3n%'7/8-`Q8VAYGi6o!,VhgAa\e"K[+.*nI4+,[J$0f]k6D68dGe4u=B+0)&BGaq2#&hNYf%&9FU=N)Rp?m8'4[#KLi at rqG%aL4`mnH6(D2cVSQE!@"*_8*@H3q+)[ca.k%`+a74Zr"gDZ":gKH*PJSr6/,^*,V&4I!KP^r(g5/&Ih?/*Lld=]WP=>k6t%K>"dY:KB.9JNE<bhSNRWZG[Kd,@'rVi6,?8%5-rL4ML5sRZ\rks0dDQ.r*]r"eb[I7&aJNUo3*2WUSqHH)Sned7$G6#lYN,g&aBbP'!4Pa15N;hmttSi*-S_KCGlYYI^i^\dG]COpOek;BQHE7fL>9<9OMUlR;9pb1G(FK*.g/i#h\]JWdC+hVoKDZrVYk..Zaa;ET16X7u9c\Tbnu#79n_cOsNdp6UBCURYb!cPGV80K1&S#eVZk"H at 6;<mk.T:?+NnO2UK at CqG?VC6*?a]_\XH<eC6i/!YK)J,crplO>K84a7V]8aA&g95OSHqk4RfW2]ofk4o!m@@lNC1>MHYiC?1 at 5oknP>F"hRo\o$B^oWjdT9W+*;F/B8L>qmOmhatK=h07N[6\47GBL2cN`23tD'7Q6c,he#15D at 5nn,3W#FsgS-#XH9#4a[1l:]8V at s-FFVbGWn)KL*V;E:e!hjnAqt-]/>T[JqM.b)Z],<5'p9;(hkL344Sm~>
+Gat%"gMWKG&:O:SnE<!=@5$Cc[1Z&eROV$1)mtRg4qPA7.L[r2lhKq\>^+$:Nb-=AQ9B;$L,6/_j%Z]FYl[XM/B%uERM&>fU at B=)9E[2kY]X=k]&KiW?dgBP9s9f=MYDh"F9QE,!sc46Lron=6GUOD7P&7K6ZnU3.AQ^(U*@;+10l#5$L<_,Hs7N96EL"BYsF#&ff[8j6==L:o2e/tZOS1UfM<"k?pLKAbkERXh`?^E87PXV)?S8NUBrhTW#]9.6&+#$.na>b<L.I9TdQcn["e(2T*5"_T5<cFCis"g\o$#;-]b]OR^/sWV?q&Z&mk<Sfs?0mNf-hme[=!@!lVlP@`N%h)uuL]Y:UMl2QDWgb at qrm@Ng*s6N[PL&ZQ$=F0Fq#A!IYOM&9uG>stCYAjqKK$N$+.Bf%BW;D(8)<^.87p"77683hkE/sS?fAB+?)V31.G>i/'F*djr%T`A_:8-fDr\*C3dBG'=qL;d;AG-mA%+- at I$UMQEt`B+`q<O>uL_<TOK\ND0So:ZEV3\pHS?Z-RVCITXBPn3"&W#`%!BgS6OkQV!+mZ"m=-V5*KN2hm,e1SpVb6O&0>a<'t?>pW*iHim4^4NXeG!?ttc&7#b22/9.G)QiF5URT*-I3kqgdk&6 at U9G[l8Dr_`L&_nCC>:Q_OM[N=6Xh>?M4'O]Bo7gaQ"%NB,+:hHdj#d:DoAGE(o)D5QG"Zh7]17\B\=Sjk1B7h[FD-&f8u;Pk&@O at Y*\pN8$j:B.;9WO^C#=j<EWT,[o?J:PImU$'"NBp(<+gLJU,%Z`Pp)^)Ub8K?\Jq(Xa7P[/>_1W%3Z8"N6`0@,nCIr3VHpHX4tWf%_%Hp%-#sXPQ!Z:OW69nDq-dT&5>6I-kCOP0?"3k2+]\FZa\XMoa`-FU`;%1[!lt/:f^o`h;H41QRm0G9FM+a<c4?:!g+h=.-/j;u-u5/jO51[gT+nU&E`]li'""^Si8a?,CCK/gIlsSH5i&"$c$)cXXD#F]u=s]uf1.\m!LMjjg4l+I#c%3E<r<pW8CRgrS4_O7!r[$1ieA+9)Nf9d)5,o`"rEEh$8~>
 endstream
 endobj
 194 0 obj
@@ -1181,10 +1181,10 @@
 >>
 endobj
 195 0 obj
-<< /Length 235 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 173 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gas3-bmK%f&-1Yc5/eN7i&'c&NdDN-cln5=(*04%&5(1UHMl?Y,)DW00L+GgDT-(a+=:WaJuo0l8OssG&u7/o0I\8Y^g:Cb'T[n4L:V6EEsPXeN.rcm#e'DF0?;'aKK[tQB+pBe^.5rSPV^OjT"oL'31O%W/$@>'dpXg_!WC0_B>&piCd`0u?H`V5T?C(%`#W.PWi0_!AoR]e2V"c*Wf!V@,ms=(`n<k.!i3IsC]~>
+Gas3+0ae%;$jGQP^ETE_`hZ>4hKkiIK-4\<2d::k:5f,oX!d'SP3%i#pc=&h-D3%I=pDu&#]`'oENa"c7hX4PGaRlQ51(@2BNnRXgrK4M;l,$@c<O:>QsgMr9q7+n[<8sI\5Ok+05e\(J#)Y)D3Xs*e[*aX1o)5ClW8B6C;hi4~>
 endstream
 endobj
 196 0 obj
@@ -1196,10 +1196,10 @@
 >>
 endobj
 197 0 obj
-<< /Length 1072 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1092 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%">Aoub'RnB35i#'_%1ceG1MN%V/X<c"8Q2t//:2>m8XU4/J8FVfT5S,1,c!c/I%58*0)j.?I(N^t]>G\c+Rmt8,4Ka`kQUO0*^kS7N.V\73:bW*n)s6l47I%SQacr<X[3O&`bK0!;$7MB%(N6s(&-0I<p>)bD0U3jq']429AasZPub$C7e=\>-S`*cnqq)N:S`Bm7?bB?#%KWMk.M,\9`-le+<4LJ74ncVkOi at V?#IG!5:T5-k=T39_O`T?EAUNnR8-EhF3+<dB\:e%j<7MB at 7');O\6\3i+4nk)P9khr8q^7Y37#HgO/cElP'M.SM%u@,SX(4NVuSZ4!(nFFQMO",]OC7ZMJ#lh"\_Z7tmSa$/*3>!>2/l#u+egMT.QT]QrjR at L<?XX-hI;\D$WKlB8&jp7.&sV'i1[Q;?P#,hRfdC at 3;b-d(`:$u4,E#mk0aKX!Q/'<fk70:TTcZ[>#7!cV\tn%'JP.%@@+E[rm'f&g`4r^OeGTmFH/H$FLJ`sTD2V\+eq&<h&MeiY`R!2H6I#2j2SWnMFYjs]MB-WBMIr"4cHJqq at 3Mg>P8(%2HH\^0S^)AeS"]CT?Oqj>Nd`mA&O'0DHU?E[)mO0Kl3`6]!Tc#V,L7g0k-AT_?T$h9QbNSbG!<`E<>b-.;W1k\l?@TT%7oo7G<MQ/?WJ;0W,Z7:$:X at O$i at 73ADFGcun<#:tBQLBQZrLk=I7aP+F`ZY`k`1=fIik3I>V'(!IFGcrirGgV*ei0'-]AO`-'Pd90.?\WFO@*)PApS?lVi_%L4lpH&pa$J<&-;q#!5$X=pkZde5L4S/1^45Jf=?WE%"\VkkY8U"0")jJ^X&Ao;a8LhYOG!pg6,md`R`r]b790]nlQ[E8TJ&q+]ke at jr#uAg$Y>TAqb`''l=N0`+4UQP%Y]PpUe&`k9pa3hFlk%%=]kXID>0iWh27O3j>t at qVngp'U.boFpYZ9Y:;^0g75J_`@)f*8XMjJ?')KX-=1)SR!p4(N+"ep>NDm:Ma- at cCL4ZB7#>4TE`I*4>C9Z1Y/cD3!I.MG.s[doTQ4o_4#Tsq>lFuErNOc~>
+Gat%">AqtE'RoMSLu>+nLl$&\+G$nV:'-8DBS at 8FK9nW):n%S8L%X?`>N-o$)l@;6O6>PEqp'D5ZX1;X`?'s<MS4/@#e\spH at c!e(Ej?7 at 7!7";K%!QIOss?JR<[e^%H$;76ML/"&c*uJ4OO10`hrA7Y;NM;/eaJA4$=#[,L#eo+=tmQQ(T%-a!%"g2/[-XDnkob:OMmPCH$D\",n.1P[Y2!0a*Hn!"b-K"te#ifQu9k/G.)]Uj5GM\'t7U2sIp+G^,HrtguYZ;^"Q at os'U9aF+]EdoPWp2hI$(i(o.!\d"YMd`f>_=Lns1qo`4pr1_E;U-^/lb*6?;\TFAMIn*0PQI:A7f-BUNX&lI3os3A&djK>HEeL3hqA"-TQ<:6PBVlq+<d<bAcg?m$mV<ChE:M*0NES2<DK/cE8(!2eJ1mOm$&<us1LEE\%IFJ.)Z*HG>5f"'M"#.]"SI$F7gY!!Kb=``fIc-7:%is=j1me+V4d4fZ\L*NTE(cg=o6$E,/C>]"cXs]MQl0mQ@#pg<kIHi-B.5#Xj=Uh3o\o.%rcQdHEZ17cbPKboDX&hoQH-)1+b\No6V:-(nR2R,C-D/baNr9qm6t^tnaJg<36O?t)e(`"(>3f4Pc0UTNK/!2pnWS)p5#NWM-0bNcg3QGjpu)S[a"X;"p:afcXlR_^%k`EmDae2IjI.jqTT1^Q3aPpgiqI#oa__B],GF9g-OVp7)X/Dp!4rC>anNLqZGN'Wm*0^]?]K(CV7Q@@Vkdik0=b24&`kD]7`ZXL1?7'Z)d9?6f&Q4LKHQ"?iIB"Al%U*d,c5^-eUkL"o9QJpRQGHL9%+`XPHT!Jf)d at uu[KeWdfTGFpaf6kR2"4R!iF(B$85'/2?LI&t2'ed!"Sf#HIHHTeu(/C#+_?md<(cB*rU!.];9JA!pePp4Q#U]h]HnCG!kf1*dgJ=/\$VRdh6Zf!=T.3k+2go'+A&_+Go+H'&aU*j=F9]>WgmSVE7pR'TFs\*gK0P318.t*]m>?b0<`)W,#A5Be*OdV:<pR_Co?u0t,PBd[LgE`IH%LCrip5T94[(9l+J(^IV-Hc%3I`?)>HhT%9`>,IK;r5~>
 endstream
 endobj
 198 0 obj
@@ -1211,10 +1211,10 @@
 >>
 endobj
 199 0 obj
-<< /Length 1013 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1023 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=*?#Q2d'Re<25^c8$iSdT%UePU3<8&B?9hkAfm_L1rAP.IRfp[CT)`nlBKks)<Crb0%guEb-p$I(qp'uF'!eIgU(4ir#5VGqUoH4Lj at Mhpl6KYEEhY6+JZ'X)!%r_DL=]#\6`i<sn+p9k\"u<4hV=`e\;>P!-bH3>!4WdP7Ds at .:]P9?*DP;Lp[@7I]grNA?lBfJ1dph9K=>3&AiZ=J2)TDo-9F5*TP9SVW4.+J,7$2WC9lRlh5 at B/\BgsX!m&B at qAg<gT#f;Ce,OUUq/RBc5LQPo94An+.k2!o4S;Q7kK`()4N9_q4#o_O1s.C3<_24in!i7.D;1sr)9t<FRAQCa[LEYSa^d?<CVSDUpljc(#?B<,J%b1_Qd:bWeg!&*qAsLrnh/);NV.NcH]j/\"GFm>N<QI-oNbPr8o]/!haRN4S*':Y>jh=?&U5a%s:Y2Qb+VY#N6Z_6W=iFrUe7kN!l2X*i?tRl:Y.d!M:)DsQ[7E*aE at Xi*0f^*A2^&V5@,Ap_Y71n.".T<*LFKYdk5\q(8UD'H at b8`gO]",=P_'HMOa^R'AF8[M;12$dS]?$L>F)[(kC/S\1>QPk<L8G(]BMpm4^RGmQt0=N3$o>-ZuoH7q%aH!2E?OI"e<%@a1FWqX1:j[Z"j=&Jo at f+%$tshR*to`>uF;J7bD<QHg5j+L/5lqe*Dl.B,B?sZ32>E<ijc0m&SYd8JI>&[XJcVWpjibbqjW:qB4>]#df$>VK!jd@]>8u`\Z*_Nl\uGL.o9(3'Lnk//sic]>"%:Zp"coa*dfH?r_6p8U(T1D+ot!oicq'nka!33mEmC]1K$G7X#>NPj5Vn3es:(Bb\X?@-878+c$Ei_g&]'q_Y,^3!:B8q_n#Ad.dL9MmZCh455\'be)?!RoCk[)[b="gfTkRdpZ!+-a/Vo5P_'GY%tQOfpCKsOCe7_4)CeQ%5`"2?MlR^9Co//&5]4#H5rk\.D99^F`G#7DIcA>8,'Q\$Ii?""(GIK%\1_Wh`-L-~>
+Gat=*gQ%aW&:Ml+=Sn>JMX*?#WKhYWXOKjJWS4^49cmJHZ;_-,6e^A2YAGlr6:+nM8;uU!S2iAh_sMd?qMkXD6P=olZ9Vg,^]<U(".qg]7*&dZ3*79<\)i$[OOrDP=F\h,*+5R$BW'D^'=/e_!e#rA&"/\Q-,'(&;I5elE[TBpn-CrlQQ&8=B<COOdOeEo;<=n#]l'[0M>h(kgidYR'0)4qaS[3Q2[7BX'I`]a3:\M=K=lt$m=C5%hKk_8m*>@O;<24(T]Z#F;69?6V,rR`*@QOAMq[:O-**d'$`W1%L-YrO5qZ-23<5gQ,1+F<q;Vu'=-j2*AF/p]SYeoMQCcbd3TlLi!a+V)[6#F?<a!"^>o8Ti@=1/@^IJ*qBq+_)e>..P+;8iPQ\f#a at dLEnX/CCcoK(F))T@=Uaes?S>_98CELOP9g$WcSNq9AhHYeoj_ at E`FgS:8nj)f at A:X<$n#mN*plLWlU10/*dV0Ou"!K:HC#]"[S\_'&UD-<B77;4*XDWUD"8dEB&?-i]YBfO$iY6b77,G5"fKX4on$@NmPPW_Nl at c-M:M(<J#VHQP^/'j^H?<6L.D=j$VI65`\?W'm1Q$Z**A at fssZ;NQ*c).Q*C3+6`EJ%*jOp^#QW!c\*I##`]D8/r.+_TWNkqUQDZA%ojVp-<3n?tkd\E\%E2BqA%,tc<4_lfoK;l:;1q4q2^#sT0.:s;t%kY[0Uh0V]%EhH=2,ge$_fpb?N6,TACq>3:<o:86*"X7WWac29)LD";Rc!4L_$Kh@]>T>Li(hl&iQ<"s!r?1`"=reio5+ameWFOGW9d-i[h3o#_&;0)L0ZqjJ>)Sr6RbM:@79%H/]3`g@`qXC^VZ at r9Y;t11B4;/,bMD!09@?(Rkj*4Gn<)%N.J9`*<\"]?Ff5PZ1LHYLlAi7\FpY[&WK\DQD9g6 at 1@dqRZF@)(%cgH!qs'I.dpHB:1N"I[X7bIbrAA;!qduu5B&A`";\C at 6c\pQNGb^iiFE4#N0YqAL$.q-d'e\PhPmrCf~>
 endstream
 endobj
 200 0 obj
@@ -1226,10 +1226,10 @@
 >>
 endobj
 201 0 obj
-<< /Length 687 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 698 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%!9lHLd&A at Zcp6Zheme=bqQ'0]]<)KG at UmJ(dJsVkU`\(XVrqB\,#qSnl`FW0Fc("HNG.<N`GFo`s)DI&s!2J_-+RC/$#fU[Y at 0'>!'^a9AX8 at -SYL*jpI;pZd#]<I&6>?j^2Lo*2bD,h4]+#;J/?`l0NC#,[>utIe`?,I,=13I:haktIKJEY"GV&TMGBYiS;(9<ULpe48;$-i^bR%s.(il)\P7n-S!_Sq/_8 at _*ig1NG7+Vg`BP0,.+shK8:?s(;3Z[Pq,9nGOq[^u"M9k<+W_5_eY!HjS^i,+nj3Hde=Wa>8?kepL*FlhW(V[lCUFkZY[)iUZWV(q5M5Cr6Lq)\1W<'cJmF,D>o[>-eDs+ims(nuOe,-N:jVTjq at 8gBpYcN^$f%&Dsq-TjY5dZq@;kb[Ji?K,@"`Xto#*=tW^16"c9Qd'`@$mR*iUEdX,7%Q$I9\I-]4q><Cmc!jU!!*)ic*o,!0cg3DT5Fsg"[`G*G9hQ-&8lfX6W,b*KIb94P1oP1V<AZ^Vh+($rBFIq3.q_IgK1jl5IEB[#-:5R(Z8oI=<%mk?qO>2YZ^bA-YK[l*O,iV^MMb9FV3"g8V]18aNu2iiQ#UOB'?2riiJr8dS2_E>>N&ptbisRm//Gi3(HfFsWfuU,;W`gd]2 at Ooq3/pGSBnWCIg.hKCe%*T^W99XfW~>
+Gat%!bAs(+']&?q=saX7l7K8SB9LhOFOJBT6G$sD+BZRh2Gh3<q!T^S2TXP/N]3,KO,hMr&+0Pgbt!ME!if*/HPjG@"C_0P85[/nq?"#<.+k9_2ilqKgnLDhpgd5'&SqP#kPua45*24b@\cG/_r#'gmP^P'SgA)^MHdH\U(4g26)j-nmgBe0VVd/!*e2*q\Rc=)dGri6LP_p+klX)"F>&4j9O1Pl#\`"e5)3!t*?bON>h^)#8Rr3Sg8 at sG3['=CL'CR!P$TuJK+g at JVtDLQg?3("Oc^78m5sXJ`/XY><Qn&L6 at eQ*$be,tG$C/2AXu,`^__[Y,c3))s"3$m9KArF2-`rb>d?.Xc4li-Vhht!N*>^ZQc4UMo.LbWK?1-$s'7#"HLTO4E6"o;$PT#(KI^#1d_Becn3p2A5d6j&-`L#g>f9</&7:&LJW.MV*HMj5XpTjn5'&BI8KQDu"G,7Kj,sKV\de[Ib, at l%.`p,ldDS$G9R."^-VesCa<=S'BC5qErb>;GF!-\GLAeF%9pESQ=h3s- at 1?Y<Lu6IJA7_;1>K3qMq/Y%6k$nu!0_D^D$=Y>bF56Cp6Y"p.J)8N#EX[WEs.UeR2"*p*nhi0s+bUeiqC/Ce@=:>CS8',[<oYPY"7K%_F_p&:4o>k0f%)?N(_h=(]_gVDd$?.C)g at gj[e=R=9Agg@;a'5,+kj5`~>
 endstream
 endobj
 202 0 obj
@@ -1241,10 +1241,10 @@
 >>
 endobj
 203 0 obj
-<< /Length 652 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 667 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%!9lHLd&A at Zcp6ZiPme=bqOV62-<)KG@[$ReJ[Cq[(0MoPbo'a1-'"m.18%u'[IIh(-]Rd[?qXg$SX<7R9)Bk22(a/jr!#+FG&ogI<!6G`K\p?%lHOYFVjI8YZJ5M at 7&OI).8Im6CGog%`.p?/teMW-hn#fp7nT[fFdl-5n1EHeZ(eDjHNF'rpM',XcJH+TKrV](!6to1Y`'9IS/K?I.`WUb"Z%7K.IoB6b65>BO<4YRa^(d\p?>'MC0#4mcg9X4;N94Ef)7XDtL!siFpjD+%([.O'CZ:BPJgNKV:at+r\?3+9c5- at pV1`"r+oQeHD&E'$.GcU51aL*M$DlkoSM6c`;o!8.,3uOD%$^'BG14`aGM33odkU0X1bfT$*SgR'a$f7!bcNm78op34$\W&\6I'.<o#3MVg/Y7*MmLUILk\lj=jL)b[r,^0UZ,IlGHT$,J4hQM6?ff=:F9?&pH9jW0.a3nb]ZlPTUJ,toitCVC;8I:&,YLt2Dj5>:&W/&Z[,Nk+el0D^TtA.gKQrg4q-DcA1+6]^RV4idc6BC'9+-$_cpaG]Wh^nQolXDFR at q,&'joFKHH[mo.!d4oXFj*oUcGE+nqbscFsEX>ED>3UUt&_;(tO:hA`AQ]A9<F%JH]1V#1ag/:kq~>
+Gat%!bAQ&g&A7<ZGYAV$nkJAq!X\-5MDRR1[?n<,g85i*ZD:*5Oo0X,LTQn[V9hY9E&bJI)<j?UhL/jh.%gTu at Lo6)7hBhS6&G_51)(9jJYG=(EV$.'jqdn^d:\4ILg[^.JW9^sl[fNn-q7B.H:SZ5cYQdQ_U!._:IVt[jsR"*?U^inb'p>ef+-LNiiG+^&C*>0;?@?K/NeK/Gdu0Y%4R)>jKD;g##6:`Bi7AB^`DQqhA"WL16?T/-fZ>+C`uTXBr,1>N'i2O##cY-SencO&j.70c+nUI<P4Dh!Ui64jX"f/\#!Gq09.H6E.Y+`J at f97fUK7]?)8YXKY%Ue\"iWj>4;%90Wj8b;W*__LH4D6[[//qDWE!OGA1F*f"]J,RecC8JOpfJoV\9knYtT^EV$O$%pEUK at e>1":@o#37HBU6&OB([d?L-;k*=3>`Un.F!)l(N3%rM,DKIaLX`CDIl)l\lph^nUK<.9&EH!SC91`N3gttFTRBp?VJP;e`;*Vo_Og*#sh3sJ`<cRJD]3H&6Kc!3sr:jjf)i0nm9t?D$TeU&\Y@!W13<m@^J'elV(%4=TX-\f[gnKuEoolKf\um\^:4j)l<q@)-OnYdP9/QNF*HoAjGGc0*%#Va%hL.6:kkrZMmcuNqeBsGp4'!-hPlC^ukC-q~>
 endstream
 endobj
 204 0 obj
@@ -1256,10 +1256,10 @@
 >>
 endobj
 205 0 obj
-<< /Length 422 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 432 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%_]l(\@'SZ9D`>q5mY(%(RN1dUHKoddp;q3%e%ZLT$Fe#.D?agN4";HNp**`0mn+o"Mb37fP!LY/@ZA^JR,6HMG":2ta;rA?e_*RMJIBq/mC'l%*?^rVMK"\5Ri,ac2l4#Q*mWNTt=B"I$I&JQ4Q'k>iVWhIP,`[L`"Bj6cZ+7:j<d)<RS0Q1'Yk?ac2)62s-k^qu2cp'(';DYSi*`)14BP*di#I@=/*Sa>`'!Ws*`Z.+l<pYrhi8EZP\,b2/k2!I1dclglYf0Y;A\K216Tn%7t+I_fqmdk/2f!A[S`Z*<RrKJXD2P^;O'Q2B>')<(hHpHchhU/Xuaa,(I$^iU)=7j&M=-6=*Q/@(RF(loH^2Ms/>j*8mEejru*t1'U7!\[$8HpSfi3amKdA6MBQOZ&Y@'G5lLiM+l5?~>
+Gat$tbAMqd&A7TLHV>-Y[10S'R.PBsU.CR5WU575P9M;""`rnbQ\5nP8VnoLZe!FIGh+DikO-Fo.ZjlGV%/'96\3`/"j)jV#WW*@6aVKTaXZ/H.==DQ>dHCd;E*+$Q9a-^5QhLl7iTHA=50jHPbuOo`nfgG2QE-=_.EPk4*bI4g1kM6P3^Q7g779A$TTP#'RdOBlZ,!pOG*aMT5h/KKhic[4@]<m:J!8`V_Rp5]:DXmH$VX].N6lj.[)(2Rk31#A#0n<J2P:@81^!Z-s==b7P9o5A-9tF0^VI(Q'Io"`S))CAT:_M:KsZ@@1/i&dhBi$MrW+LTp\68WmKS4l^t6%[*hO0mocA)$."qN\bK6NSBqX9qg';.kI^PfN]WJq,7"7)8W=&\WUo+#U1'hddC\,aML)ZYJU21IC_XS09)\mqQeWY~>
 endstream
 endobj
 206 0 obj
@@ -1271,10 +1271,10 @@
 >>
 endobj
 207 0 obj
-<< /Length 1678 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1572 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%$=``U]%"@rSd-O,h4GX_p1HXu_dl8 at l2YK'%CaW0U6*]ZV]/mScf'E>3nrc6YG#J2 at J-ce^!.pk^=-K9E*<V)<102#DA\:^@@BhIDY\c+'@!Tg'Ht/E[IpXe%P[5=/(ouP^Q=jSuC3;E3cpks>$HK[1S"$@XbX3Fa'eQQte+WR:/(4XtY9H#l^d^RQkM$Yhq$uU_^88X8NCF?cp>t-2=662\)*M_M:'ZYUfY(+0Hmr"uP[gr:J`DeVj^8dU6lPjlPZ?-*<f7CF%Cs8!+\RW<*ade;?E^P9;qN#@ZAI>Foc.W!3.!A9OlXO+U!dat,hCS_rrAie</3OSM.[9 at s7mJXrY?e;I04kg)ko$.Uk*7M;Pu at P6lcF3,(\h\/?.=2/,7&BQ^=pR`j(I"0U0Q\$Kpa3+"0f9<8a15gZ8Tu?S\b;T0Le!KjJuR,nB:cF7cK9*KB:e+/H<Lo2k<nhc9'r;H?A;#dubsis3^9D"()_JVcaLQcmoOhm*"Is*AkDdt4/o433WtPirRQkW1Wm]KeN,8'=U=+0%<H?L=&]'dC\"4_48WDX*,%<_0_*\')B2i7]e2\<"i/@PrK86/1+L<b=b^"6^"]4lCldRsMoQSj(F2Yk+FJj*Yi*?i4LgV at PJE``a(3,6&Es<<80spQ5Mr8-!V-G[/fO6JYcj36"MkS-ZBno3*,\`JUT4H7p7:SEb6SgX_'0gNK^m,8Ia$.;_JIkS28TKn,`[5BZKndZ,8l23(/i!u`0k>ndkDknZQ89P[W6X[Emhb=>i=iLh\L#W7_o%cI(E*PItHiGfrXp0CP+cg,+gfg23Ve.o+ZWhqDYX_QjI at 27E3g49KBb?tDWH#94;Bb$Ql[#h,WXe at IT]nVbB2D.Q[25JkO?HMGR"D!gfq*A5]R at Y`3I4=_o5Cht.epMD?;B21B\up.WNWJ:S!#YIPFaSYJ5Km0DYU_"'0&?Wb58S''$$9,:#Xf"6`MLtZaN&F%)J'YfQ*sAp$;&jG3)PZd%-UEWIBKnNF6'/oG2P)+49r+#Rm#'b9fST%(F#4-\c>ndR6Ef07EUm;ScPtA#6L#Y7E_u7bWB-pmsnJr<Euo1l6o5!RWA$hdlo&)7UtJ[n)S`+Xpspd9h=-Pg*PI4o[TG\_)AS>gg#Y4H:YD_D.G+3>':IO!39bT>0b*%Qnd>-TUh%bpg7mV]jXEu:UT",*W@=iI5YM[b3]$"TQ at kQ![Gi_d1MHo9Jll"-RC3T<>V'>(deBa$<QiJEdft8+3P<@D:f0^KXk]M+O,h.0&,JJYT/Gk2?3BPHbA'LQQYVpW-autVU at MR:?YM5i7".^&9p/!a at 2PUl8!7K)SDC<Hdksc--M>i@'phlrOGhQW71jNpA04KZ\RZ&;fB]sgjbe9(Q\>uC%t-N:/OkV)Ub@`/%X"u<X5AF2".2<7F1=Y#ob/%Km`<>f?`kZZ]WAs%hfV6Ufmos:bpe<MGm^DAn.CbZ>k.KgjJGk%6#Ojq\9cr6:]eWj=+T<B5c%WG%urE+V"g*Y^qu,U'G[&r#aNl2n^M)7+sFIlb<2/TeU!,c<St"O7cWSqZ-*-fl"jA9_mthO)5ulb/tpSkZ`?WnI`e+Dh=t at L\>&^ccpNX[[MT/J)eVbDd:L=E*(C%UC(c&-@\^,=8djN.N_qT(5ZO0-=Ad(X'RoK$et[dkl49F~>
+Gat=,=`<%a&:W67+S*n%&)*1>E_/<*!P+L((U947640LQ"%B=C-9Mt`ER\?f]uX=tZJ*/K1TR)4RtJ&]=\jLXZOP)FfJhCYM.o(J/Al"JQJl7_)C09a:L%D#)LkJJ at 7m_^^Q%pT9Zf4DP?hQ_NIZ`Y!V%o8CeIC5`7893Kk3,'k&FGLil[WsQX?5"0_U%oZNuU<YT]+_I!5WEhZFn\3slrd26(%lRJR(kQ&eOKoL6B53`=Hsm[]9kZ]K+*a</9taBK5ci\%mPK8;sla<.=]$GWu(_9e,oba95M"J5pdQkJ=kX3*1&\o?U"F`$/T(MD(#9Vf3rF0%3h*/MiSn36oPo$lXD7cKj=lTbCNdU0nfVAI'i>o1&&-cP8fF.La\&k1l,-u^bn,rFA!plA["q&1k at PqL(t+nca*B?MBd\1]jt&h6]A2G^]#4iG`6YMM\EED-!$Y at S9_EifhY>Lc]bQu>4:W'^M.<mq,27CFk'W!ggVBs][u[Ef4!5A1#6<JNFsCRNf67:/+ho2g=$g;_-+#A*/"Sgd\XI0_muC;T7)iWe>-.X+ql2K+N<>.</^pg6123REAL\N at ls3%31nQ?-/N>HTX8^85C?`5a at QZ\r/o3s^q)*@\Mn7\dPhU/cVn4C`]D\pXX_)<I$.^UddT(QWO^b\tVF,*TD#)bGfMC>fY6R`%j:rUbPi1r&IF\+e)'B$:"f!`%cRpJj->ciM\,,K[EC+2AH%fPHd44 at qlIigS(AG#oKcf%S=$O&S at o1=7(u8l7Fc(BM/9f[8ppa=NtF8*uV>HCcDS\]B8K#=mO[!_.ahE9u?9F_+fn3"?]ChCVju(2J*N at G`\5oPb.B]Ec$7[cU$coWcKP`]Lb!E25`r>UmMGA$RNmZO5>W]-d*PkdhI\TM^dO*TbtP3f?tKe=eGi0`VI[!,`U6Mn9k6K^JU[f*0Olb5CdLY#6lImk^V:qVXUbdauZ70Q23>]`GiAXPgsoWl$)BBu8hA:&:61OiGCDhoYD5=Z*SVC<`s%S2RddO^8l12YN5F"jI/Wdpo+h![GmSE!EZI(H;6[7]ot\gG*IkDS'kQnNYaiFNpZm?^A8Xg-/U(Z\g],g:(udk&.R.7MMDf6Qk at BeJph/WKVp7Fcjdc0iW+o:n<#>h;=7ikHWR[Bu<\Z-d3$8JM]#TqUn'YJ`Sk-Y4u at 2]1]YWiZd at aW!AdUWmWra-?L[%nW+o,e`#O#j?h*[2+O,FQB-N'?aLMqcLR;3YZ_IG^',<0/9QKDK5U-dnZ[=el<,[YrHDK\O:hLC%DP`G'Ga-9+YBS&U?emkFWdPTZZ_rjHH**^OC`SCq:rTUTAAhQd#@94-H6in`<9TtR9a.<.4o\MZ-M^gG-W2.+7#Sn_14I$[Ks0ec/=PYN2<,Jl6F1\M^J`f$$%a+#qpT9pV[#N1VN3^)'[N&XK;<]n)@HT8AOLn4TK!fTP^;OMuB5AR.B6[AN>E$P^5eOo8HusLR&Z/o[IAn0'psQ>A8GqBK+iupP*8rlcBt=^BAQ$it"#U4*'%c<'cNBjMU%jh7lK#A<5S_bhDFJ_&a^%2-(_29R[4`i9R?~>
 endstream
 endobj
 208 0 obj
@@ -1286,10 +1286,10 @@
 >>
 endobj
 209 0 obj
-<< /Length 250 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 241 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gas2C3t&nj&;9rX'jE"Rf"FSZg'Y*h&B*nQ,(r>dReSkiTC9`iJe)C]@<^jDG&#!0(5!kXYb`Jp$45c`JlM-#8YK\!#?V4hVCjQU%G83eC%)>X8Xk(Q,cm+"U^O$n]K!L&WO%!YO^c<:;o0*I.X0.k_kfj576Z6VEGWjCMq!V_=1Tnt,fX5`R_1Zt:l;*:g7G3EHBL4Iqlan&gI6C2ERD%jC0-pTZP.uf03XS3[ofDNJTX):*Y6t$_Z~>
+Gas3,4V*,u&-h(+^Z%^&3.%L`l:QY\K8Hk&E?GCL6ij,RJ%eAL=H'fPc$_^@3AI'P5`Ej;gBe155p/N,YX/XI%GK<^42E8dmq(&F\o!>b"Cf?/1IE(TFmZBOd-i?d"h+c7!KuD(ODg0/cq(9*:2'9cD,]EZ,^861^45RUen@<5ZOH(r_+q("k!#AG6EA"u7H2_,ec$,H7IT9>XW(VQIbUjAj=d&p$8[m?I_hJedK>;X7?I~>
 endstream
 endobj
 210 0 obj
@@ -1301,10 +1301,10 @@
 >>
 endobj
 211 0 obj
-<< /Length 1348 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1395 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%#9on$e&A at sB#j at sg@)\"t5$R*PBi:Tm;'<!g93h\+9Wa0*P!_j2Fc61lO<UZtA8/`20/I+PiUHAW8A3i\^AEb33(&8+WE+TE\ADPpJ(VYI+G4A>UG,ETc,oiurEF99GM_66jqil34WJ.b(m/>Pb!QWje&nj4:>'.E58F+Ao>=[i=o1D8mqB[T.NhQ<.5%N(Es2MBPe7%+FmPhRWL2!UVe3p980PibYYBZ[.%@nUk%&04?='(oKm7WO8s1'$#Y&NoC\T!<\h0KY<.7PRV?1b/8c#3KVo6Cd>&N"-?2'iO-\5mtEd#)oZgWqH'l/W#$tU=()'AW`GG967PFeX":P0pX`7Om+i6UE8WVp*Tf-JBK9!ZYmG?J]Q1.==(=Yl#@PYK>(r<Rki_*0X%3[;tXA/-UJU[d`&3^X)\C;8BY[fQW2<!;X8("g`uME-c->3ij`H-qY9MhT:Xjc6aKW<ii, at h1h3AKIPtdqiai=!l5N)4_U?(Tm(fe"W[c#ja0O\%JZYZ"OT-3r$sCqp?;0N;i@`1Qo;o=uQ$ejl<.SRdPR#gb0&oQ97r6P_VM[6MRVtZkf`S:C9f?g$&\rN5n]V,?5YK$YsL.i1GIbmASU@"kX!G8p0mdl>8 at Q`OKkC[.JGrhk4rSpH$$I at f7Qn9M"gb9O)_TlXjiG at J["\/(9"Zc9Hp'm;i3Ui]$SsqR^DG"jK_KKaMCbgKc*t!a)RBHT/OY#k at E$7:DX`nX=3dlpZfZln&m5*2^39fuKsil[%!A#- at 9.^r1%4]e^oirminqm2al?(]:SP><ogDkQ<'+oFXh%gRG7V&$Qt_e,<$+Fc>W%U1=&(CKkYZ5Hi]n"%ka9r#_W4]Qm_D/44EIC=kTt9$Y`I*8c.]O<d.<#qaN<:Ip@?('K1OMVnt*G%10Iie0K;=Eta=b+]p^G'*(pU?B^V[$.T/bK#HVf8m;0%'(b$"E"%\G#KJ0ZTkG$HQ;<n^.a6U$7EtCX'E0G2#B!.p=3X]]k4H8JjP&Hkl#Rr)Rj[)=@t-VL5#2!81j0uqehPbMU=5!p45\"KpTJ>68Y:a/\J'+`P:?D!L*F8?*m?@"e\lG=QF6.5k:jtV3ChlBoXT>3J_KVq-5Z#=-IBLj<,ZOY\uS9D$G&a-r^hAgD,3hiDn?Se7HqcE/me/(C5Ya-g?1g`SQQ>Cs=B at GPFQL3+!H`QGSR%*&4`1E45*34M8`iQJV\!>s>0'a6V-E0,+sjj^TG#Q7ObN&]Wr=fPBsU.8t\M-*_0PgN?Rtm!JC+0kFH"0Z<gHml.:CqEn)/!(N,4fmo>>($]f(<N?Y2\!uVIeM:dXc*^[e at .cu8-o.<S"K)2+kYYs-~>
+Gat%#9on$e&A at sB#j at sg@*OQC77eqKfJG&(+t\o-kbTm5=f0b<D93COc+6 at CHh\lr,tmP>^<DQ3L,4n.iTSO4n_K7'J.k?!?sPD%i,O=#;#P?p&/5="Mc%XV@!rI_>lL06q-EJkYl7e!iW+aKJHBro9XKAI"=4YgL`J-MA_h=q=KS1cjt9bu=>*iq#Y@:.b=b]P$&0EfGr]d."6de<BPL at J:X4lMb at rVEF-1AO*%[fcfnB]dU>A25a]t\L7VV'ArPaNQ+<I at H3[9M!Aest7V/#Vb*g9lJPF?>TJhSE*KK:dsYL"P'@ru8lE5b.:h<!^3a*Mqnn=(<6EK&m.Z2Pf5a7GEpXl2B6:_mQ at BWlR]rK$kqeqZ=/WoZ#`"Aos1U!D7. at q3H0hDE1WX.!`A;*BM;2]s2qCqZ)]?AMJnQbiNAcb1WQ!F":ni3s=-3`H7I:F4*!gIc^PHlVIc^NnZGS]dGBqQ_t8NMsZ1W9L>>7%$md#F6ql^)->CR]@$ufq>HP1d#^P%Lh)"aDI,BnrU>@7r/$7Zh`f:W<`I)5][Z]mBrmn-f,9&qJOTV'5po?0)^lE#Z50i';?'h;+Y(cd>B<2NbFAB:PR?:nT<^#_Gt&f,n^&b::XTZHEmZ6#>nRY4fJ&kSPk>7qArgh]]lW'n4kobHl:S\-50)"1]o)->2OJ#lmfk0<I7cLqsM.I,Zi%JrFq2IaoAKRbI4UIM%.$_Ks8qkY!Q7ug"Ma9UT4e7%kkR.Y(8X9/n`%mV&52Q`s,3NfY6[o/*tusN@,Un5c=K:i+u[A7d6I(IH)6 at eIH'CjNV7W2hUhQ0SVli(e_cCfXZ4](ds)Um=+)fcD%Qq`7jQh\$A3SeTAc"$n1pV2h+I at jc,TVateY1e:QOt=Z#-6Dt2'Y-INDPTcL?V9d92aLLGB=61(`*ZZTc8BDT7W`I;JMnnMjjntCMuL+Ua"NkG'QO([2u+*fqO<fR#JhO:55?11:q5O"M]BJNRO:PDj`SlL`TS9_Uqq^_sFoc/^(T6-<j"D8M at mQ&ln>P]b*kVYmO5)\2Ep-UdCU^W<]^PT3HdWgpc-tEf at WYQq\D>k%oY<e,]+"(kF`>OO]K*J/a492?RIP*bGs,MM(WdR^odaP1'T!(&[J1*dD35D[\gEUd,b=nQS6V3X7(Kb"pog]t`$r.Jg,m]FB6$1GVCp+'mG9S at -*hS7=nn!,cS:r at 8;oGV"5hR^5?$MKA4cRoCrJ%fEVAc!#9E9o!ZOfZS\L=^tFK-;6e_P<@s6:5Pl4YCb/iLmo=c-;WX'n]+b.kD[A?0=APk8:R!V]3kfQZ3r-D`,#4m(a4CkZ`oHJlF.ifj>p1m^DR?PNT!Ei>dg#Nas_ilue^OAQ]dY+'1h;2Fo'Vqqn"'IC!^=,hHOp&~>
 endstream
 endobj
 212 0 obj
@@ -1316,10 +1316,10 @@
 >>
 endobj
 213 0 obj
-<< /Length 603 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 571 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat$uh/Ac:&:`lHYkga;jbeKcJ4Q`j9'O57-;EU(RAL,R$n6mr_US"WT,e2j6C(<XR'Z8UEPD$mm+jclKE`!LfQ[GMHB\R+UP*Z*K.:9%.#FS<PJ?\GB4NUsGM$85H*s*ca:Ao5rKJNO#,+$;HlV7D7D7C=eSLb3bU"_AMMK.(Qu%n"1H0HJ<*>@X5V)lW'ZF&oY^^.V+W[FJ at -W8f9!LY>Xij/4X1HN]Hoj/HS]DC2CN]/PV"ILW=aQ.+X>5HJ_J2s5Cn&b#YKMLOc2,bKgM?\5m=9ug0&i]5Oh-phqPA\U<Fq_#a7M8NDk[=KQF76pe\^+=#WZ;BB\?UY<%J^gd8oPUD3'Y)R"@]XokTj at Atj*?/G;+L0kTCn/5-'0DJuiV)H80deS3O&#:(']TleaBjPWY_%Va,XR&-sjQr<YO!i_!j1e&kC>6cFb+oVTh-qMW&Qu>Eri=^#t5o_6ADU5--+og]b/2]m(OG<d*ND]cdgR9_O'E-o[J%Zf,5A!p/FrTTPJ=Jn>Z*B0tm(G;1hYs&)f!BMeeq%+lRMbM*G9;$Rbh`Vlp0\05'f_YQ.:d/Ir1CbA:tI8l%;K<KogjQ52rI2n~>
+Gat$u9i'Ou&A at 7.=IaPsG-F./LfZ&=8B[]^8enn%W`l_%2A.8HP,doQYFT2_6uc at +0(sPP]f0</cB=))6Pou!17(hC:Dff)@tZ$"7V+QTP%9X7gZ!+u3`iD,eu`1]k"S^<9<qGP"T-4q=&in._;F[H9CeWaT1;SS!bTTkQilL+8Vl<#&K(4:le476>o)ONKO5O,'+\%J>RuCHeZO>)@oT at GcIf$E&7d':Wj]m\>lEC-PAK]sIpZc6m]YdSGcL4<]SN6)]6Tm<p;]g)[s at S6hHO'pFeZb%%d&sYG^*1e!+W^./u>LUBa!q!;P,R3A;jti/O8;=^S8qXUhhb$,s^]TMhn_7k*olTU;PTXU',61O*YeuKPB at YfS;hm%["W(J;7F?/TtR(\CR7:$*r2CBCk9ILa%mQ2:X._oX,W1r1tkpS0f#C7&W<1WoL at r$2OOle%ApNb4nJOd:eV`keQ>)DP+egD]^=U[meb`KDfoWkQ_,Gc6[;4jLP<bFFMrQ;L61<9`:s!`$JcSlg0GJI1^lnZq,`WqIV5k6hV1IDZV.ph;j,(?j2Q]rrCIk/^j~>
 endstream
 endobj
 214 0 obj
@@ -1331,10 +1331,10 @@
 >>
 endobj
 215 0 obj
-<< /Length 1998 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2102 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GauHL95iiK&AI=/(ccjX0j!g6Na"?U(5jg!\u3+E7]%APA^QbkHdc?ZTh(#-=jdL;'EJ9\R.KBX5)qhpmlil0)_W=*ic"PdS[3UPF#OU,\Jm2YM&Wso-uheHKU_pSo>gP`d?O;sqel#gB)e(J)@%OFUJ9eq`-#@noui%HQ]bYIh at EE0`c[(^bm\Wq-Q/',OXT^aeF-1/T14\,<[*?U'?7IS6,B7c&'!YS2Xfp)Pe9I:_9r+:M:XONqfk;.:2_\1;*r,B[4VE_ii5\pNPI1,V_](LF2a*o<[IEY,u]8[&0I-=atb9Qie*l!6lmM;U at iNF:uK-gqi_0G]OBnp]j`DZ;rYE?/Z.PP-;s4cauO<8,.a)Bq52:\9O2.[f at B2%\N!EQ[YQE!+G?<?1Mu?4$.^5jWYW#1F#=MS_bZ(,lAQS:VqS4VIU\$]:ZmV+==r`=S(`HsNlO-eTm\d7ZU3^"N:'&-)sXsIPImiY#a]k]84,h^)Caa%,YHNB!At%e)5#+GCibQIL0'7u<B7=P?YZ(m\)tsN'bJNe[Fs%VZWWLX1,Z\d'!ZUZ(!igd8"5K9Bp]^&$/XHRS7[AJM`Ah#PbK+$5f%$;hIMMV:i=qRqc%>TkMY,q"fYXQJ9jq*ZY&*nX=D,LrG,MZXec,*4O*-6>d'dY6k%VO^?S4HLhN1>)WUrWb6tF57TLG+:5<X"Skd=7gZ<_VG\$Vf\5&\NEdEFpmJRDtc2)I!GhGis%e$:*p(OF\K6A&jaq*6qp6STK5O'd>hCZj]E)r!bIoO7a1u;o54mO4b'p:'D&6FVg3k]:sEK"8Xl\mW+Y7.iJRC`F+GG[6l'PRcBA]&<:?OZNmS!!iu4;_++[sJ#EVpC)GF0nCtNgq8VWWrtk^Qkq2TD'=oMee=r.p2LfVu)XCL9M,lPZ+D0G)5V>"`l7aYqsW)-Z`?VLV;?+DD_ZMe/UIo#].a'YMn.YG-]`G=ibK at d+FRoKh?+rO&VO_Is3<)*]!jN,QX,gY=1f_nR,Ir.;=OIaI8e6F<IS6IDnFRBGt*EVYg'AGVV0,_n-[q<Z&-8(M*<Z::tkkNp%NWk&6- at RM>+HY*C1-OAT(<p"ZEOH"SpJVV8N<.,6`Qi.9,nrEPI9GW"#W9[o#\&FoT,BX at IZ$u2!k/0DS>lD\QQc%1)eWa:?h;e*/3iMVMm%BJHg.t?=@p!ri0;2erl6\khZ%<p?=Qkc,XfGehRO(+8?Do\u3[mHh8'YFYL6;Nd5I)fAXYf$/t!i)o9+U.5BPIGZEeG9IL!"RVf\V_P;+3Rj3U7pqd5%(+OXJ'&U4^V&=9M<bG&u%MHfTuGS?oW*@JPb/s9q\l>B_%hA':]F"hQhWpmJ`K.7^CK#\!t6d(IiI;N9,V:8HRB4BX2&`<sb5qO-Ufe1_ASKe>eoRqPea at c"6WQ0WRhG at 1>F?#4h-#L*rm:R"/,p74WVnPTNoo(-(#JmtL7KRp^X#0U$MUr"jn6<9(Wo+GI)Tkc-/a[f8("2sfRZ-Ym7QO>RJr8)_Xo8pL+WVe$&,GQ6fL!AnO(%#=V2#!8H1P7JUi,ml+1AM?^'B+FZW(i at fPNmpAQKpmr7_jZGs$VfrU;=L_T)bOZ/L"38uQ!k(Gl`>0F5k6V`5$YTT at j_$i[Vsb=+B^bmrL/R,2B_ERi_m[1jp4DEY.79!GpDNo23EKGQ-BjRZ%c8;[M,XKb6j^p)9%>teAha2OTRQ,lNo9Tb)X$:O`hm93lr07[[U'?*1OmM!-81EKZ_/9'^,\!FkqKgA)/7SY4G,AD&ANZfDmue(OC`"a2A>s\t1)2B at L!`-U`e6Xqqb$%23T3?34^RXqR"4&L3'-Y\N:fJnlet:_67I,9 at Vu_\VN8Wpk`W6@[r/1+GdG6V3&VlrXVjp7'+T,UTK^n^=5!mA?jiMQLg50t`C,(#7([k1KNKo/G;i#P-pSmVhdG]0DE;E1o2orRug&_`%>H06\N4du at 3ir7QM)+(60kITu;5&??*7`0gQ at 7EN7@~>
+GauHM997gc&AIV:0_SBl=>P7f2Q%nc!\&^*D;A.H"4sDO6=eK?-p-k#mnfguTe%_K9<l9ao.B.IiQP-q@=@n<.9lufag,ljhVWU:QTK]U_2l>:ZBY-H^IU, at jB9,t*u9>YJ!Zn2?^`p3^D?.-mFF*<8X_2n+="Vhl`FMh9Un^u2LF=E,n&TTSl4&/q1/S[0-Eh#C9BdmSj!T'nMNh$&2-daSq;P[Wt:MnMrh[T\$G'PJg<kP1F=_ELA(09TK0d8*$cDYUYODtEQ1rmPUhL=Q62,dQHp;PH5dmSa-fJPECN8+iX":R`Yf`4/19]g0c-s91Q!@e:-BR#Gg?OD?g8Lt;4*QoO'FU'(U9PMMc%]t5_3Sf2J8LSQT4`A$=6f#flZa,0jPQc/5Zg;QU`OhJOq1"VR&^p]3+aE?LS&kqE,u<qc)<m_[jshjl'=H"03^gEmn^+bMbDc-FBu=Eft,rR_aBmBhLUuEcbAW&E-Lt&J7tX9IM5P-:sfl)2K`/$[aRrUPi5q/QU#K<I<_W?YYqifBSA2Q/KfYEFJ-qgI[\%4>f4$'QJ:q(#Mp2FtS_?Bu(J;8hR8)N[)Bf73"`WajH)"+Q9aYhc,D`=D_0C]20GUcb[,tG1&XHK4[hn]4Ts!asmdtqUMe(`fYg)SjBqE2sY*9&PG!_bPFLL+p=+35UK=>4OL0?A>XmGE2Z)8QuHl-m=&D+mb!!=?RHDPGb)Xpo)8fqApq8"fQO*bc'r^S_b:@IT\LiGnBJ89h'Fo5O!Y4'2n/R13%N>E5AFhR(p>2YSop:\\s$n-i)bgV3a at X:fZ12^11<l'$%jgXV!``uN+jgn7?TrK.<qu[MZlmUPSEu<K8$nL2="U5IC;PS7r'A[`u.dSCJ_5+>M7*pC!33[q">Q5"l"K3RCZq=_/2j#MQ%AWH6i.<KK5C)=P7/6K=S"U_Ob",f92n"8PVA\7BY]'Y at 270.oko51i0@Ud-=SEKi2]l+6bV5hgV1E?-e=YQpd%m]U".-o"dZ$-lKg,A-;$*g(W#)?LT%L,RpTpcs?J2/K"n\`Qgo_/M(&O'2j3c#;.X]&6!)\oM+jr)hN4[2Tk+m,3kYl^3AfLDdB#J\pR^MpMERt(:`R9k6u">X0M##,\AHX#jWt5$h9>ue0Xcj5((E$6eb-JJN7FF0'ZtWAWs#(k*\@AVr6kkIpMHdebGcK(r[D>(]1Achc79sP&]9o?J2g),UHUaqS#u!7]Pl4DI,JTUF)s#ht(`/Yg)_jC.<'r5R?"[V/GTu;sQOS,</q4jsl+%I4T.ofaUsC%A>-Rfj$K&\>M.*LY#FEWtV3e@,GkTiPFQi]@dJ_h)#6Aqh1aFniXg`ODc0<=4-Gr\M#3YPB3dE>6s5!.Yt&bclgNiofT/eXD'0kYJ?^(a%6`iE#i[o9a^RCN`B$*4Vu>adXRYB7ggH_Y&jg3eI=1iS-6r-^Ut:'SaT<pFL+/e@;bC,q#,Q_WP8YM at N)d26lZ at pPrQS/0&%:*[:j5b+m>:AS%)bm"_6$T7QETu-gVkb9<T2G1^s#8rqu9kjNjOS9J#\.`(=:0X[`j[mpXX/nGNOI[*rX)m%%Z#AufOt9ZLNK<o#H3LM*9_$K6+ULOlYr"plYj=*&sO)(,1g4W!C at 29:INPf8+,AMMF(\]nS1"J1Kjl.-#Pn:6f>9JcFHT(79=P!doK6I5:c`1tXX)Nk8hQEh0YVRnYQ5?-kF*/Od<$iSB$JFge2&Gl*0J:b6Fg/&u90<Ac[]-R[F5<qm\f0:o1-C]RYTE<tuOm&6P!-:^qmc4R?T8jJo;,`3W/iX7TL9A'[+1[L*\JfJP990'5 at M>hPZl*kO`'qc2 at GUgV58>>0I6Jf[4sA:u9LCAd\`nj,F;->#D)E@/344=0)7'[;q'p$'6B7)g/sEd%T:#O!-"6MiM+KD$/9&Y+*k]lXHp8osJ7^++I>9$sR^;I22%TIg8s3^s_K"b@>@U^sDO-GJ\i'!LSm][og)H?S0Eu-4jIs(GUM<$]ZmP8<#XWgq'iM'gc'D63Xk9e at C67lhVOuF`J*VRdFC(e`%/2jKefLmq>O:g-^&,#TDbM>f:@=VL/FE7$I2O8,Wa1Q-X8ZIqoCl2~>
 endstream
 endobj
 216 0 obj
@@ -1346,10 +1346,10 @@
 >>
 endobj
 217 0 obj
-<< /Length 276 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 343 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GarW44`A1k&;GE/MAs[!_fd#L0I"o<982F9\e*OlO at Y$2l//]#O at 5hj/bef#H1,WhanEUPUI`4I6D5_7BFG*hkh&k!ULIVLE8$g at O$7*99:FqHXL`RoU!J/NDRo4fC[*g=R\m2'=d;&2/4Bd#?p>G4R2i$]W6<<Al$]o0_7>uc?*:?qs7+ZCR\MS^leV5AaaH:5-]SfJ9+ZS5NEL5YacYr=6d#3J':rur4Dq-O7]&Y-YB]rk\=[oX'NhHr-Y,MGS<X88(U#M#kneH9@#G~>
+GarWu9i&YL(^KOlT7Z*<!qKB*4YG-7(Ltm_oq3=)bgoP-mHY/I=LE"U^dInqJS/2<gP6D>JdJLe+Ku"`Ot\;[S;![]$nD[c"+8eOS$Vc0W;6/4G&7GG,k5-<2sBK%_pM8fEF!2pI"g,2K]Y&Vb*(^-:Zu-^S%i(d6H"B2l*oL*G'^0cbW8t*PXS7p(bX!r1)KiUUn("&(s)>EgU9K at LCO!6r\?bL$&W68;o4SMp<GY"Y?q8.W>iVAeh+uu;kl3G]s#6'fGbSH,m;Me)!3*fS;%51K5KsdIdL_+=WoL-^TBnTkp>7:]_uC6H/4ego2Ru:SC"JV=t)(qa=$3g'b-5@~>
 endstream
 endobj
 218 0 obj
@@ -1361,10 +1361,10 @@
 >>
 endobj
 219 0 obj
-<< /Length 715 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 726 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%!9okbt&A at ZcI,$m'od at 0Y?"pcB%olW/>-sWr#>.[APX&tW]DM&4 at M3,m+fel7ah2mTj#=kS&q0OA!L=:J,``L=7i3BC_Z1A2Mumui6k#5!pj)Tsh<B:U$RB("M?Af".R_4<5XddXX3/32fL9\Xh'/o%.E_<H=:j=MhCTNAq31QSHV<'77n?iYqL'mZI=Li2fHiXN1<)+AG#_Guqur'-lD,7(WI0Zf\'h.W-^5PD7^`N(V!BA>JJY(S+f'c"+%$H5(O:^fS9LWe&&X]XT3/s4FZqa.JR\j4U)ru at f$-sVrY:-;8t]:r(FiL[i?d;<]"VA6+ZPZ*@O.jeS^<uO6dXja7+6Hi1$_-=g(\6GSk$=<Z"nbsKY$H&-hse/bS5D.<9<I+;5Kf,3iS]F$$CmB&44<2^tH+gn]Z#'kfe2eTeOPV&J6D`fZ>M^Ac=iKTOSfIBp27GW+L;3<OE8f<GlpsR[RE`6Hd-gct at 9s9\8sI',qr1N38Z;YfTmo[HVsJFKmGG`C8V(T'FXk1 at l$+>%X8Rp,Aa`A'1j!n.r]7m\ZE4DEAR`*DYNJcZNjcH1b#=)*b;(WmitI,6fUUh#nddoO%e!I[d/\DC]/l5%_YG<3"]pbL]E0Ah;bmjNiNsde8atq?c+W+u[_UR7)Q&kL+i,)2?oUH$`$KA2MB&+44"BFEDka:APuV.DkIUV3#iCJt\e,5H1Ks[f~>
+Gat%!995Pr&AI`dI,$m'p"OG!V;4$m<,JIH;(lbsPaDS&J^g'1pYXS1#T,mA'e/^4k*p;G4N>4<pCq!A8I4<,5[Y[AJF!dK8K\'Yi\2&d`$b'AmW3DHpYZ:45?JU)(g-qKl2d8/$5!n!.<^NS/:K*d2OQ0nS$Xq30D>-J6[3*dpRMjU88k&92/&033Q%<VWnk_.3Y.AU_+W!m.;"EFLq8s<-)iLMOAU#q_GCF?((Tp-;OHP at Jr/VH at 7u4Y`.Hbo:$2PP"W'9FOJ:UN"LZ1kD+b`35d0'ep(JC7Q*kZk'>I0ti']h`V8GFZI=5"Il^sCqigAEM'K]+iRN-*Ch9<4m#d\f2+haK1Q-jC-nN[VkiITIr*E1Ga*]-Pn6lM+r0=OGeWCG+W$(%?,s%ZRncHdgjMq't"(u(oB#9<+873"(9ljU7B58(R.8"*(3, at .o@^6?P++V[;[R30Uu2i+8N)"_P&6U&V(.\Fl+pmNroWpj#2V09T8cXCR0en(k]C0laLneG>.ol40r1:p]]XOJ`W(Y;.bTcsH;/lL<rb6^6UArsAT[4Z?'^\)<9[doeTh,VUAb$2SsQDrA5X.r0(<n&5iZ;CQdCtGLJ">,Q&p\s@!.P$?"aG'C2<au)ckjJ0<3E>H],tF$m.5uCtkgpIq/:s81GmN.apuO]"Xe"MmEkpBfZ7i=F(46E0j/J_[OC#?\Gq$VT+Vg)]X at s%eIf[5@]hA~>
 endstream
 endobj
 220 0 obj
@@ -1376,10 +1376,10 @@
 >>
 endobj
 221 0 obj
-<< /Length 712 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 733 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm9ac=h8&A at rkqD]^^VYB0PdL:d26A*We>S%.$dnVH>$+9r"^Sa6N'<cD-KH`jU:;-D%b-/t^@IWt("^"%n_B_BS)dn3_#6RY]]p+=?+pA6nnDiXSb0;O5$,Y"(`;rF<2+.^=TI(-[Qc3lA263TZ`H>+U`V((K#]IUu<ibZd_8Xs\:"12uV"MJ!25Y*1=ceu&52B(n!\^G7/#9sM9.FOgU_l_#*Q-pBBVOZ'8l,=.g at fQhCa[n)<K,38-j:L^"=)8r;5k]$*qSgu\/R'?ILH+Cf[W.C=@7tEKABP^6Z*8*"JpcT+sH=U.5o)%mnn6^ojY$Vj at jQLOd`Cp`d!Z*0mCh?RJ-juXCLH3QH?R2IEmtgQMSN*[FIo?qU*f4Q0t-K/1qDFe_6J9g[tM?aB?OpU*-:"fs)Qp\Is`G.+ei\40p33.AZ69,q5*UNDT;N4CjpVpW7O?Ub\hAf:TG'/`ahUJJ8XJ>DC7m:(q-+9q^*?KF/.la*sST)`&J&Fcr-%W at o3FEQGZIeR+6+,Kd[NN\oX+VB+6d[:0$2kEK9+1K\ZG at V=2SHa9`3UW2qXEg)j?nZ!cfLQlaBShDCXd<9aq?EB9&%'a/#%qT1P;'l?1Xo5\75KDntrh=3Wrg5SKf9+6J:]V;?dk''YnB8L5h92!jaK;/i1U<q$J0an*gkXoT]6EITgr]*m[k!e3jqe?AS`F.SM90E~>
+Gatm9bDt%*']%q&]UY+_n_;=jU_tQg"G9/WYlPW.e7g/h;3DWjIub8Tc)YPD6J^;^4nmaP\Ms86p\Fsq=@/`I&:4\!4UdGJ at 3>kE5kl<K_*O06D`828VJj9]&:?;_%PTXB#'9oSdQ at e(TVU3aU*BW6bBd/)X/N&A,i at I1(#b/.c$)KbGC*sSX6q;#Nh;JLhqc;4lJa#/&]/V-E\:gXTgCBkcXBcgB1T3__m3)C"VqmEFNj(?jc&`-1dX&:6m*7U^+^%Xd>S1q'1e7,0ETL]EmkK;*9PLMB0W[V.2b2`fZ<Sf"ZR)*@;/#Ojn=f#gicIck]=sA0CmBGr\[@[]"4>CgCIoe</P#+o7H8]E!D]AlcOe=.Tk7k"XagDYqk"^W:+dOXLT6(UCo2EFno?F;46e:UrX?bLgb,2`[pWZ9ua88#Z6]3+miA;do_Gp',9d=K:T_Gku1.'^J[rZ9p:=1C0)D'9um.4]5q4lh>?M^;X^d,`/#9b4S7KTR#L5c0]o\JFBK_c0o2gtek!*oK6^V?Z&\*a;(YaTLlgB=?h0d.MQBm;,ho6.RF8=e at .gNIP?lU8=+&(6X4"=rd^4hI>5*t2SJC8V0/B=;SsDd6NZRVAkMpT/k*ZUdCEJF=0=)9[+VAUeY?rL0Na8"^W1T7L?q[aA!YG]I,,ZTc"7N/dBXW)IF3'?"R^3;=PT%KsUN[f=%>@[&7D#nQ&T3o9JBY8Rfhq_L=&6_a~>
 endstream
 endobj
 222 0 obj
@@ -1391,10 +1391,10 @@
 >>
 endobj
 223 0 obj
-<< /Length 648 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 666 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat$ua_oie&A at B[G]\J)j\G*.+O6Z/=qhQp$$oEYb#P+R($QqAqbe2>C at P?g_P(T(4jL^.LEu`o6ig="JL$9ffL-Q!pL/RYEgIDY8>H5W"^Vu%dRrDJ?Qf1(U,]reNuCLo7:8gcJ at sEYR2O`pp#Z`8$1AiLb at NXt3KIQJ\n]rIY]iR?KCq;#j-)f*B0noB1DDrq$Cm`aiWOUcTi?"Rqn0+LqL4B\k:[TViHVG/NS"CsN+Sc:M.u2@/3-X*.GBR5\!p["CMUNH8-rd_KER4??B6agVWCRB9:UBMbb.et1oD!mQXh"VJ$r.>*lTCWSBF+8UGc7ZCi.SL<u&aq'G\@>SY3Pd:a at 1JWj!#R;-r,92T?H7jkqI;b9fmL6$<1,;r(RW&1&K.A5".^lG'p<9A@[D0Rj.`q)e`fnDEPN2GH,[+')6U9AMJ^e]<+V]HJ98n<9m"2uj^@[-VXBCp<9p_0g\`bViSP\Lsu2AU[RY;%*cMI`dPU*\2Auk;os3C?);Q&CHR#eC==1Cs!WS&bem\+R."D$sJ)qR_&.d5EQP0>l*9^HI)4LhJ"tSIkL(?4nS at r$+H9F<G]riPsg,uA_o([L*6fgE-;p\X$Ig*L`V_YUL91ToK0&fiGR9sA:@8k$'>/eL#$g9~>
+Gat$ubAQ&g&A7<ZG]\J)jdXaS6(LBj#Drf#Zoofmjf6\F($QqAqi[*n8sUL,n3p"=E+X<,q2e!_+"=u<&d=F\6=:U<JD:Y;8K\'Yk"l?oOpZS at I7c#<#C_3a]gHdiO\9Yd'*&\q+;BBiiZ=5k>-B_lgS3Q\JMlCMA+cB()59Wf';A*#9m[<=_<>`lSgXOHf>:CI]V\5/W6h4$A"'gM#apo at 0:O^FYim6+a4dCD,:6aF#j!ds5V1!Q_?V>U$RfHC*.!XVVNGp0Gq=<hIChR?]!fWQ7nOV>beP^1\$PjF=rt%r9i'Y$:'bB^?Ij1+n at bDBkl-i->q:^[%P_&`"n/h?g1"uYVS6b)-6/P[*pE"P]0ML/`4+YAK$dgj]Pi`XT$,5I>*_mKg<OcWOn[Y]d1bV6@:Uu6C[+-q[;4MJ/?g[V\d_m!!!E2_3ddF:0An9/WdUlFcs;^VRn4(JF&%5923%cI at D]g/*K1GirAiQV%u&\lk^9QACNQ!E_k7<i'$%n5'jEgWkpF`!B$K_B,6YP<4\\YQD\H&@]Aq21*K?XDaCNlRBW8$I1\"hZDDMtG*h^bNVE8"[jc'&8Y_TS)j\6%,NhJj].:JE.^\]t&bEMpZE8C6FY#h:H+HO6)&'9*k@$"^=)bl3ohf&VL^rfWLr!Oq9E6/~>
 endstream
 endobj
 224 0 obj
@@ -1406,10 +1406,10 @@
 >>
 endobj
 225 0 obj
-<< /Length 1036 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1061 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%">Aoub'RnB35^c8$iF-PDl!(01d\a%men?_[*ZSW%<%o2W[aDJ^5(b":"HlHkfZ/B[kP?4V04u at k,7=^kZ'Oq(Z*lH%3V%e<F<)h&*<KL'Z^.$PF8eQ`G&.&^Q<tqq=O9pD5/I\4&@r5<QAD(PQ(ghEp=?NT;ZAG[D8!YZpnlPFWgB6hV$F\n$:Y3R(]pNLZj$tunDJs3XnBbus7s_TYoc9i#GK!u+1S!47oX`uZWDpBKRo'p5'%ffVP$3T0PmG`\IOqg1iB>ll;gRWXRj]qmhME*'EZ<D9(eq2<Z0ql$+B;Td!%TZ#+TW.JfchO=F&J8V;/m0E!)qakj:oXq!J^#d((\<ffDoggs`?+0k/0u&oX<&HG*o<,m,b]K*.q:]$cod`pi(E.JJR06X+b6khTI+VW5+CK(:\a=1mcFSSWt#DL/HD\ZV[M:7@!8R0<c_G'Rm`[:9BP2L!U^=Q^DXE]7:dfQD`]qT?fRXGi$I09Vi4A1Ak:Q8gHh9G>gX37"M]$tI7FSf,R/Iq;(%(ciF%3\2JJ"cH"6)&5_2;j/HdK!B>-q+9_c4p!LG]c^SJ at fjaYlC&tA8Tr11$LmO[Z[HSmbQtC%PUlQ]GTAe^=DZ"mO&U9a5$Z?N[S/CSHD>&6X[G$bp;[988JaZ$_XOLJ<>,kkke!d'h'p",M at d2j]7Pm>i'#ZB)Fhc2)\>U;VI,VIO>>X6n:_lP/?'T<oa)aHKPnL_QBW:[%CK)H;WPJ3!a>@kMhJ63p-FW-6Ed#q4R,WR)f%g]->1>`4?&;QHW#`jEQ^Khg\)J:BZHh`>9*?+*i.P#K5aL%+Ws$?AV52^)95\GBQ,]/[:1?#U,K:@=CKg04JoeB\t3ZkW$S41cLhMQ4[9(s^-IhjlVH`"3+e:$0 at F(Li2D(E4QW)=e#!\g^a1RGd9OTo%tsW/WM-]Kmn"&ihpm:j!MPMr,1^]m:&C8A-_d at .60J6bEqW^#>Ldd06U9^#W7R&7(!MPJhe)W+iK##aB_9%oYE/jUk7k`!Pefmtrt!^IV^;~>
+Gat%"995Pr&AI=/TU`;cj5Ll9]k,`re>cfRh5H[;#D\ZL/WUUimRC4VHOY_^&-uK[Ym5d=q. at X=ICGf]s+i8j!p!MME+W>O)745U6-D^4[N(n at c_8oNZ$n;H=Mf!X?e5([6r=?GEe+A$!/N+Wj!!>iW":VE3%T\KjAEM'Z'L2H.i'(W>Wo]WdTrQE9Fk)$&teeQa>jo]B,HkCE/r$\Mog[gZ^[>rZ67K=&;, at s3$uFlNe0Bb;Sc\c)#nUqa/^mP!mj5#e/K[?8"e@%!8 at s)Zd:.Bm$arCDf2rDcSjOKr_E$WKZ\>Fb4-t=QO-GVSSm$_5(uC:4Pb/B5?M1]ibH\[<[gGPZ*A?*B0+B\.NT81d^:W$aYo':g9[U(1ZH2'$?,jeoQ\P4=p at Za+[4Cq]obqm at rV5V'h<mZ5LooMHM.ujnSmh=B5%s%45T&?XrN+7R]`b[Xu^6bUkr3C<D`1.QA#OB"4-dICH%i9D-!N'mD`>"?jr.cW<b`X,06OSLpD,#We`K!LFD)j%/!irH4d=D<L at EUnN0C9H!]!O%OI81>6no[WYAUQ6kllX<6-cV]]eI*<3qC=X))sB0R\g-U_fuo&n-&7Ggog<mpB4<N"(IYd*oQiR+QrAZk^P#&!p^m#-,,6%W3'R4Vp5/SnhQ7<2N8 at lTNOBE@&%1gHb%5lZZ9a%G0guTN0`$]St/+)Z4Ht7 at C%o[FQDqGf<=Ynf<oqBb419RfoAYBcrQgY=L,SCbmpJ?:Rn,-o9XNT2D2VQ2GFX1Wq#ONVPYQb&TXoq".!NU<j_r5'@f&[S/L;(OqDO0cuG2K)k-S":#u1/]Hsfe3VM(\c at MUanm**B4nnZLRH1Uo3cSFWOt8':o$I[c`:/KVg-:0gN4If9;@i4IMtF"#SPf0c*JYKn]oC,+,2lh`MB_(fbPWD]KB^RT0At>0MA^r'5:J8_n46HmFAg8m7XH?\Grt?jD0+@<JH%Ud`pdserPqA=_45&m`V at o]ZUTKf<aB"H!;qC.0\3FoiR*&Q#eIGI at K&pq[6t=nDLm$>AV4B=lTM1n0Ym+nfL#$X53~>
 endstream
 endobj
 226 0 obj
@@ -1421,10 +1421,10 @@
 >>
 endobj
 227 0 obj
-<< /Length 175 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1000 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gas3+]aDVA&-Up?T41DE>^,YW>TM2.64gR=.nO1W,K>8;mqF%*,23Mf_cIa.2\@MjYaP\(.3tNPh<S4"@kD()*+lfu=7I8#fTt)X[rFUWJoX8(B?@-V:t)".RlHb!PE1!W-LfCmkJc[LoPN4XG#s7n?e1.t/p\!L1PDt("G\`cBE~>
+Gat%">AqtE'RoMSa:m8QC4&V>j8l&n$u'BKJd$B!*k^!:,>r/60!,'oVb(VbCRS"HWDEG_lZ\B8ANG20JHUc0*!^1AK>DS_!bd$2?l6\0-4u&J'Vt'Qa4VJ?Mt>k.OFB$b-pZ-a0VBJ;E$M#1#)o2jO]CtU:jS_6C-Bln-&SOhf3/o0Gok1Le,[dC at a+3'WeJr'_X65UKbY#='iJ*<OgddX3.uj20Pi9WL-Q0Z?p=*S<I9Oc2*YRr";K6!Ekdm.5OC2IF#,Xj0G"=SnHh5A'HoH1.7u9:Yg`4qi=t^SJ+[#^mAUe?WE8dE2e>#$6ELX;[91Wp-f'hWaht>=qY"3=IrNFRa4tJ!%&+V4AV;L_Lp`TX[G7j;Cl,tF80Sb:$Hn-Irl3- at W/p(T=4km\.?;O/4H2*9'0O3>9Tg'Zi(ZSF?=R?'.5+q"\h]7*-\MMb,Y@>:eWEkBJ(?uK%DWSDal=Qqs4gHepsNeM/O[lCV=oU34lOr5Tm3[)P!l!<dVr6'Ub58X=H)ej`t<jO=*OE3p at _%B#XTXP5dD,+4>X\4$nQ&<.D`?U=I_\pP$"jH%6M]Q(Z$j5TX[eZ6WKD'94+'QI-F<''l?[HK_n9;fN.dVBhr*cP]AVL,V^RBe9<l8&mknVJ77dH^9>Ht*j%?[og#l&3+e"cAM%'P\Kegj*+g:QXV1fF[H@>-;5dY?V&okQ%XRsul%]9[5[Hpp!TP:acq/5/Rm>dYGl46U)tekM&@&`Fs'F3C.NW_0aiS[XKZq(l at 12uWoL?s?X2?*qS-kY(p*CX_E#'5WI+=+t]&YqBoWjDPX.(%u\TGPKR%@=4U%\>9KUM$98\-dS=:"@5]ZtS\l$>+33+2g(I_DeXQo9n;!r=9iB1;SKnABG'C.QT_UbB$2&qF]*Lg<5V@`JsbHD^-=^#=ru3cL=NNl(.n$eOY0:V-i"m]e/AOm/V&^L:fK7$,_YcS!]*72c5JnD:l&S&l at 4'SN%-#[3Gl!JPEq6N~>
 endstream
 endobj
 228 0 obj
@@ -1436,10 +1436,10 @@
 >>
 endobj
 229 0 obj
-<< /Length 988 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 652 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%"95iQ=%)1n+pb]@nXQa08nmMXSXog^!"h&a3 at G!k?jM[E1GIH9Ys*f"T7$dDJMZA;rlQ[kL,H:!Np?iS#&-jm[ZPa1;1DE+G6NP'N#\-C+N`hIHK:`qj at P'6c?U=PATP/j`LN3ucA!#UY0JCt7XE9h0jZ:W.9'/b]f"0#SnhLJ*D9lRBTj?PtJD*VK?1nW,^t4f$>olGkkOl.l"8tqVmhqSVI3/V*(g'JaOZ3mT@\.\A*]H]LIsY.8(d$<GJ0s&>4.:%._,Hd^#8-5Y*CQL8D'7^5Q5dFdUg!&Kh5dD$67o6\Y(W+!n9NgfQifs-U[LGB!Ue7#J!T_>-3oa/";"*be5`nmel$WAM.;XcOMrR(C>fN6MkZ@,fiW*V8"9V`q=.RXA32-ja'OaG'hn+O798G$-Y$Hk1$QgpBh1c':m*)OOP#,cbhTo*61t?^iLW;%AEiN/g&b?%i7()*U+*H"bj,kE-==`#?6:FbClnSGd3tP%:@C0aF_jqcRB,c7g\q)=/.mO8ocWjkW5RK at f:[U&qHbJeHmKS-#\.b]f6Y#A:NC(RD])6m2!@=&<0i4Paq\NB=Ls[1H']0p&ajh(Cb'mIbL736WB;&BOs%OXEue$%gb46b^kfUQ+"QU37ot[tl\SZ6A!ZmjereMNHfE5fEV<gOSab:_RG2kE]W1X-qD!M0=5PG)0OPs_FnG8BB*Q:_-1M,I(EI\8F*%(\]-fEi9g%hPI$F<:b+Ef_WmSil+k-qVIXZd3\uF3L\&:#I#!"@^pGG_X0R1Ei_,jnK<>T,fM4O"un`K7WTNhr?4di=P2SSm2;TR'LND\1i2tDZEBAm]nagnQE",Jr=&`(.p8gUCf`Y8H*C#;7cQD?HtT/P`,Z"`1XFd>nAJ>p6mFSfu/[kn\NC]#p=NG(P8h]KfSE#9UAELY8QFRS8X>o]8mDCVYl6aNe'ONkM`Y#G at nREXaU\UAJ+>q.Ol+mSkE;/>_ej[lt*~>
+GauHIbDr&G']&?q?Ht+]qYaO';Pm/)<Mr_PBJs]DKU<0JJu:lfakt^#'4)i(2AHk10DD!sq_EA(nE(r!=@/`IQim\2!t:9<0TZD]+>ejGE"MHR\!o%uhV<])+T1:s*+7hI*9[O at UbW3ETVT(``&@L0no at U]7:L>%DR2c/k%V9;"Ui0tpRCW)aEI<l!>MX^C6tRAijmkSM+W+,jE65;GRd,:"X5[#a9Q`-`OS-!3Z76rM_Z]bBHRi+XGgK2(d4/sWkok[YopCKnh_1Xn8M)E7 at n,l)JbPjd)3MEkPYXuY+CStT8>p0jb$L`4]42jA\L=o:"Ifp8uOa^Y#<rM[ss?[#?+k:\#p3bBp4K^%!UKq"LB7`H+gE>0H%8J;n-BUFYqVS<t*8RFPg'_(h8Y)eL5i"7@^:%ASSR)q-sQ>R^*.m5KE#!\2Sc(+$0s.p9<;YqmG[mji2C+rCP21.o"3KEgKWf_M[;7.sCm?`9!6uEC*,'o<k6[6ERX;lZ?W_*P4oV-X+_0L.]t+8o82>6'tNjrH5EIAP at SWf#N&=pLZh+7[CQ/1%@3[l6S?2k=*"SoKue'U<5YA3>!0E--&MXKu'tTT2YVYc67DNWRf.mEW_K_CN(("*<h)fU>JP/eq;$IA6tP]<q7oa:RrU~>
 endstream
 endobj
 230 0 obj
@@ -1451,10 +1451,10 @@
 >>
 endobj
 231 0 obj
-<< /Length 633 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 901 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GauHI9lHLd&A at Zcp6Zheme=bqQ(6Dg<,JH].$pq=CbH9`%4U3nrqFCu3gbt;EiHQ"_n>_eB&Bh:;=N]m6UV#G;%d9D%1'iD6P,s$%Os#[.Z'l_qL8#nhV29,"%AhsPX#@5<#6]8"[a;<SS,]S;2&!k-@'%KD&/F;O_3?P'N/qn^'V]#rSFB;D'X"cT@<A1II#?]q'a=bp2T#kkj;W<3BR!.1K8u at P9V)U"I(g)kl-rLnad.2%(di^bnik$IHGUi$2ta%f"d.*l%+TCZjCh.Dr:57j*6gn+ahS94!LU(,+1eOMX=hj1O%&8JPfOLqUDfF2t.CI%^qlY\KU-jK9:JejIo-oiI/pZg195UiJP#O"*68NabaF\gPSqsj,AP$b%Z:.jgn!TW\i&)c6C:5,kmW(T at 7omI'NR]3*mjmk(hciI:(Y8[_gaV:OggXEPf:,CXB at kiJHN)@e/&F]<3Ja,UaZebW--0$j]2tGc)M8[I#_ at C>JIGfe=S"On52&cg33".Y)3kIG61'hUnoif;12+ at pZ','a?6PB_f<LN<A3H=8Y7a%e8f$p%g,(+=/,t at Mo?ageHjI+AP0EhQ1_1.P+2DDo#`/:QujOB\lmY2)?ZuE'Hs"[ZZ+ at Q=$IO~>
+Gau0B997OU&AIm?pk3f:C>r=]+G&#Wb5l=>cphsS%W:Pg at FKJCKAH+aE?;6QVJ4t=HLX\lS&[JJEGiY4X7l`>%^?"B]^W^[JUhB^#]L28i!0YtT7Lqd^0Z5P4*;"HKCFLZ0n;Ar?pFqs_MuDK(ik3hKZl1la\"-p?)Vk70?^@doBeD;@b)B'ID_FVC"8]><`M?+86O at 8Z%<tZ)ugDN%0VaVnu6^kK#6j&]ou<eNt@)5+X_q0+8Hr<I\0^4q1o?s@=6I14:I at 5B3=Dh+E-=p+FNIN9Re.q0oX'Q%#NS?]m*A#_i!ojXOMN0ii11VHniO:52Nq8+3/Jldb\T1PUR([0lt<ZLKtYLHDg>6D*-o7@#19>k*pr"=_;e4):KjR*G'sN:<A<fF!HST4[k$\1N"62+R.OMX+ArC81SQ'CI`m<qo5X6B4TV at 1\l"(5UqjiGLY$>+pY'3M+U/9M2A6TVIXQZE@/.qH:k6V9%"b>.[G3X=iISA5?;UARN+*""3;<"-5BjcJI".<5TB)`U7;jrU/iqL\<Fm!l27#1Bg1f=Y>jJFkZBaM9OF$E<pnXo?6?b`N"T8uC.TOCZ1.CGFhOZ'2&RuC&pUA2S$S%"b"kSI-!!^8ZY\s_F>_>!!KFI[a';=uH_m]E;3ZkheT\$PMY+/GF[#\3Zt+NjT?R?)"<8,"C8[!'A!#n8gRQ$ZEM6VU\n`u_cb_V:_Q]3C_f<T[oa_d;(T:_R6(`IjkFD;Q#!pU#7Hm8N2WeirS"Skj",Ln;H(D"N#`K=*r=c\U_l2P&?LMOE at Ncl5rkF-*VI"rQfD>2$;XK.ZC_6G,X_QPQk:=TkJ-6slE#UEYG$dV=*G9!_!8=#-F".l[(S;I%iMiMHc/(EmGFXok`\JXa4t=H.j<%a?2TP~>
 endstream
 endobj
 232 0 obj
@@ -1466,10 +1466,10 @@
 >>
 endobj
 233 0 obj
-<< /Length 882 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 198 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau0B997OU&AIm?pk3f:C>u^^"OaGT%S._9NSo=H\>dr19p6k6G0@)0H*hbCk8mGQ1Xhcfk3^rYZSrs45S=8DN+W/nbn(0I%fq=c.hi#:=E"hS_2kWMH>Th$:Cqu\<XbXo[i/IiM4qf"J^1PFd^>L`7;:1M5-O6,bu`M)N`iE024lu,Al,Y#W-ZsUENJim(d4%khEAI\"qIn5ioB6MHp`ns=;+!qJLh+Z6E8ner?e`@o?Ktq=,+0fAkLc\d`\:\Yig]_4S;UKJ'Bgn*_T*rd at g0t_/*q-GgI2'aX`9^Q7(\2$r;;aH[cl&8BBGVoAV5TX<?Mu\%X:mc._6$f7+s:&cifWchVT4pnkBp*KoH:lCCjBU#L*r:kqLV,<E4<'6!Gfo.=%^Niklej*@a77k["#[eEEB9"jIpD!VeM$PF/lKtGseUIk;_2\qZL"c5Z"MTk;>$0"X^*;>]KM;trfQR:9X<]e-i[QfdhMfj-gLeuq&N.MC4j?P!F2h2D*HXaW%lEW.J*P9na6fn99G[WcOBjR:W9@;4)bAqu5qQb/.!d_KG`]Qk8H)`/_:2LMK/P;.(ft4+L"fOMVB5aO)T9;$'*1LX1mP_WCC7>#%)AT\CFueLbCJAY&P))<S&#P6,oW_/Lr9W0(m$;]R*9[@l*c)"Pc+5;^SjH=3g%+X@`hi25d4`B,M3]-%1sVoiYe0MGig5Me';]+19M[fV;KY;0A-`W?;S"^FZ[!A-(:Q?^"&'h'gD at WGbpD"E&Vq\O)V6.#ak:!:c9c%<UaYn&A0R^XK@/LrA at b@]fbjWNXW-*qEBaDGSN3VF;;?l3hu+?hs(,_"Ooa:aJYbs at in;r:D)bPVe=MahHFo=(QBr1SLR"RM62gtML-A9~>
+GarW2]aDVA&;9q/MQ%j:?M8jAma;;5+Z at 2[@\I6VKb:)o^Sa at cO_n]CLRkVD<&PN3W>I3b98k*0E#oJ+7VNA%O]<,"l%F3,h#%&P487>UAgW1Yi6%g^I':_22f+9;OAd*o"jI]d`nuLc,D[b!HYLc?32!)_e`f$VS[*`dAL#Pt4#=Ws/aI5/="]H5 at R'MrK>KA`~>
 endstream
 endobj
 234 0 obj
@@ -1481,10 +1481,10 @@
 >>
 endobj
 235 0 obj
-<< /Length 198 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1417 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GarW2]aDVA&;9q/MQ%j:DYF'MQSr4YYn=,P$^E!50OiQ+pG@[SZH_b&Yk(kWo%H?5%`'9r,j7cbdO8eVXMgk>_I[\B-Z$-c4reM>H+;/)d,([QPQeAGpU]c'j*p?aPhI:`BGp%irRSgeD\Y at dQ^4Ge"ta\jMSI!EZMC!5CBsO>'D%^FLe<CXD#M:e_l*J7JTW^b~>
+Gat%#95iiK&AJ$C#[<rmMO5,-;30M<fG)tI2aA=WQ`;GNRBh[jP*_uNl[N8>U-qnFm1d-N7N;p$RjUG'(;Kha"Y^*.$Wbe%$oSJ1K^+1UMEi"(3<iW<K at MULqrWb%k\]fbYkhWsi;eUIK+](*+OZ2o6Qh at r0<qD)Z8sh=A8QB,/.pGpD at 2%p97<OG9fNlR6gSh)#,C&ISDFs3/2V[fP*3;LLh!)r>SMen-G at LlZ'"+f.$L:'aZ;:&!\co]jr$`-SqnS\9gtN]b at M=[(A!NieBb>jBW5:L51Ika:?@$cXP$jd%q?#eT(WL5pu\fUNU1UZ;ikK+/&fceU]2P26+c-h/Nqf)+V6#`CWlO`aPs2;K2NWH#UI6GOM%o2TNc<c2&"Ek\YgaS=F'Q4b:U,T'5N>tmfk?=\[$#5SBZ^mPNh2s>\un*LPp4TBfTao+Y4sB5\REA6G/M9H(JZb#a$:F0X:@4-A!5_BS<'P:5Pc^TD<O"BurpkC*G7.k/U7dnaC"(Ha7/GF8BjeTWN%"2p+p]9ohL)pQR>o_,G&%Jl`SY5sST,H*OVirFa4j5o[WcHZO?J-jQ0r^8<qGLj"@Mp.lJT__12TKj>A(eA6HDaZ^OM;)']Y'-uC>4`=#QJ_nk$5iO>=!+D/7%oYd=4\RjVJoY%%/]WOp:l>/H0QWJOb*UE"*[.k]0BV9(HYI8NQ:'<L.2^iNY6D)\V)ZRJ(4B2r;O9M&#6T00efI2dQ!G&%8M+T2[4jgq_ENLq[Z_!9!+B75e)rA#mMj./7,lL,A'LI-.c5qkR;+TWe.SqEN=i9Cg9e".H$)MHF*,5X'9kJa[ksZ=4oU?P.lML`CE at S/Zj.8?lA1Wh"5WX2UW<8GA`_L+[b(4pdC1>fea.u'IOo at gb9/oFNi^L5JRK]\*&[Dn2'$\)R"_b%X17thIQK5YSW)lLX-5*l>Q-,Ejo!#B>f528k"H>dog`1gLKb`G+S)8[1-P+8Y;b&Eb*GCHSY*s9o=)o83AHH?^i8#$@9q*P36=IX7D=KMD_51##TTp)a,)J1,g_K3U-(JrbQ7\dG>,,RSQaZum8d3,D/XaU!`oW;#U]W3XOmE-MNY<Z2fkQ0`hOp`+c6N at 97urKcL?kKKc$U>n!-$7+M+8(97q>12&1?9%53WKqGK#RmY;7:gK$jNrBF!3&o$GU;/Q]\@uAB9?/5?eM>Mpo"Z?fq0?Ys+`U.BB7!_TuC(.rKG[sO>$f/-Yc3e`=M:L[R)8UYYb<5$iJAODPd(C$`<IsWdoZ*u+V7bI43ddX<2p]_.k,E4S&S=k9>EYC%e3g-hqTf7LEj"Xq)SPeCkfjck at Pl#!8\<V%[AWhga[=rnc#JfF`OGi[g8Rg>>=[4;]aiSMe"BnBZ1thtDG4M>;Wd\t[bMGZM,X'`@h=[&qYpPAm?oO~>
 endstream
 endobj
 236 0 obj
@@ -1496,10 +1496,10 @@
 >>
 endobj
 237 0 obj
-<< /Length 1375 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 173 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gasap=c_;q&:XAW&5o1j(2Hr5FR at fef`EUS!,[_0e4$'r. at XG-E_(Kis8,\<,uTL/k_1hP2o?NY`K0?(YJ9#rVB?;ujWY+V$Q+QnK)nB6AgUph:_F$!6h&FmCOVoe_8!h_GE%I](`Lm8&Z5nFa8iZU>a6[C-s#qp@"k=e_fE/*lVFmdE^?P^jDNX:JQ4a/'Z1<9lj7[)pE_ej3?s8$8Mc"tlc`B.UISlo]@)EGAZ>A+\Y9Uh'.Aad0pK.B>fEDA<pZWWIX\&)7igm^WUf`iW_S.%^:V;"Lnl.fYu1<JG,GH(WqCCqJ1M#e7-j!i+li%(3]0uYfcDX`&eLt?DpRO<8BD_=XL7$nK/ct*-!GXV\e]0h0r_gV7p<-[($ED^[AT&S,0b.sZN3RF0&;tAZC,h#I!iFo?X'[f_W at Vhe:OtH+31MR7>RKf]F]"d0[$aYkZq`@02*FB*#h<fV`2K at KqPuNgEH1]4J\7`\ZBi5S8*QO[+Y at 9g0.9qXG.].:KOn<21MN5Wba6_F?EI+RWT[nOE4`jbJji::"ih4DVb4n0eOoA9X/e[QZZkp3?0R'Udj3GJctL;)_9_sjfP@`kAJrUl_>\!0Nb&[6M_</4ku:R-UpTJkllj<cuTICD1:+EC<p>3Bc!#oqW^$uXL_;G$H.lO8bHA85E1HbHG5cioAR*[4Bcl92lE=\-?h"[].T4*FM9GoogW4*+J,^I_nPhHW\3*g\$a_*[VZBk##Jt7k[I3$L]A+ueURPqjiVj'5nh23e&M0K'ft6KA(bVI;q)EY`EOR%+3J@@RD4$oS=b4B>R3rb\Pq5=F3jfYeA8`aGO#H]9QPh at dWNK$TT3pea*GJt^1YFAOfmR[H=PZkV(20gEcKqu30s5V:O-'/CE:='giE&:_mWN>L)XV<9Uo7Tje)2"M$`HY>[(FGAGKPi2q]0gAl?KKm"BX_K^SfK;:bT'O;QnA1csj8H'W*e[=l!M<%7;!q<7coo4JQq][S[KG%b#[o8(=&aRkiUYjgnjB%nhe'86R&iBr]n5Vq#CdqBYfSbp%SZ*gV*C8#XU?W"LPHZ-nUE5sYf8Hbb91"nih=U90j9V.S_EJu$U1$X;@7dWj^iL]Y7$j)*U;=j?'Djm]=2Gb>lP^inV?&4Qu$?kS1YbPr?9@\-7&*'_,W"DB0O at HpNc"OoL/:VZXdn.jf4&38c@\8S'__b_>1Tr%)8)gTd=]+WQ:Q2>W@!`YpN$,RE-U6&akW<#VP8#8fZ7cnt-\di]93K\0?0uQ"9LO!`f`"e?]:oc"hF+#b*'Lcgkie_e'VATu[D<-2WToiCigY4,RKk0j5e".E*U8o_6+Qc#nSp_K(_^0ak4\Hg15*noN<-;P68GJ0Il>2uao~>
+Gas3+0aki`$jGQP^ETE_`oMG[D_BPU5nL>YPMV-`Y:0)DHWmD,8<ud&j(f+T)b"1EZil=(&EIk`ia0rc*D(n7j'f23Ehk!&dC.C>gnsm(o:?Zp4*+!fL^Ee%g<@)MjFW\/R)*i;X7XK2nN,agDXFG"b>p0je!g3T<;fEbHo!EN~>
 endstream
 endobj
 238 0 obj
@@ -1511,10 +1511,10 @@
 >>
 endobj
 239 0 obj
-<< /Length 235 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1791 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gas3-]aDV1&-1WO:N9l+oXm"PPHKU#3!`tOE@<]0K!tZci8^;qU'MsP*;B'\'p^G;!`D?:19_343&2!)K*1jZ!_i_fjC$<<MonQW/jnB;eL?4ueJ`L'R>,D0%V%@RmP4(EXurb8:\u43"uC,C8/]3ch`73.9$=BrJT+_3<$5O.q<[7:@2i8"\!J"nWDS,m+P-WV\0bq0Y+C+<m:I!M?WIa44XEqMVP9.D"No[k;u~>
+Gat<A?&tL6nGRe>\k;@\P]a5+Nmp[foHGTm7V]9s9<SjWQocfL-5^dVIp[g;*j`X_eS6DVfJB,f)=r$$p%lAbi!>Itfb[_mo5o[,=8oE;&`bu]&th2mSGgk2qrUh'UpnW6cMjT7$68ET"-R=C^naJR0gUqW'h-6nHroflZDVG=Z9sg6Vd!e(K)XiU,9`2#*opI4^sjnm","sjcm2;l-;9(iltTtcG?*3L?;4BaEEd/'7j/?We`Tl]VV`bijSYm"\B-$&LLa%pblPFh/3Gk]ZRApIX23Z)clJAMnI%JtkfE at u"M:D/CYlG"HI<Tb.a5&[-)8(YX:7Tbim4Irq%n9CQ;JeX=t^-`j9LfVE7[3p7p<<QA"s;U!VW at .X5&=,9$<6P/IO"O"s-&On`CTjNCXd:(=etgfF*+\P9c!];JdXQB&e,G_faZsCKEdDRV&W\SPclBZ\'Uk+d-K;MFE>4eHK9mcJg*QH5pFEVCKDIe[?jF(kqNERL0&cMAh!cl]Us:RNtf+a.!;\l5/<)&WaC*SYb7<`<"Ri#"T23E'Jh]=]u_3Dq*UK%ap9!%_^[q:R+Hm\un\rRh(2^\'Ib#Qo](0=\B\QSPpshSXiL<UrM!jqnh'"hR/i;3GW<ZEogtecM2B^9g;4.R^I6.eak/FfB8TEHtArq(LW:?ei<ir&jUMjl5aO\gX3lS]We[uciNW0%jca0^8spH_mCDHgC'g';ZnTNAAY^#'X[e8S>'u(!:(E%_3lHn.(D_mN`tc$ej-JaMeHZ68t4UJ]&G2BW$_Hie*/aoeiB#</+Y:0!Aln*.Ksoo:7G,t%uoU,D:7!%fr;\_)#YR6&rs*Q6<U[/L9_XD_kg:'<,bTdCh'5N)Q at SQJ2(IHUeJLAChd,5-9(7tY05;b<h\9V0ITsRqoKA!T2\rQRi&$]j5pmK[?F/ir)F0%J"0#:n[mubffQ+4Q[A6KG<cYO4,BCWL87\gY99,.C98I%$pseVLQ@%0aGkSk<1m(t0S$%YOJ)HU_@$c_OSNV$.J_UPROspJVTHI-rd=J0?S"CjfW"))cSoW_[clTBF<F8Y,jj:<)-X,4S56R%S/dER?9c>JEM+#iZunaN1#@cXA4o2Z\Q-':&V^mqB<rVED$TgB6Un\.OB%L^JTEgR<&V$1e#-7d';:3C>T.&JY5O*34VAlrA",_`FE=K8$3gP-JjI*ZV?.%ZMBF--drEZW0V=?RQ7BJOS6`)54p1Og01<,_]!07l7D]#pp+$\mP'ur="Pn$Zn&HgdCoKUHGhDMJ+,4DBki,PpO!7YOFu]IO'j8FhlS5g@*[GdOM.9m):2dcJ,HTdIC'dLi6GSJ\0R'fmkk]Ek54o[#l^"=i<S$e2TUfaq5Me,6of,sRaDkRDY(:W#cY:!>'o3-L?t(jWM&`08)tE2U-pUI*)$mdcCTIjH*mI#@\Ps5a]Xs/"<C?^!Wb1)6\HK-?GJ^rJ8r#@0.$$ppL:nRB,fD*e&nR+#mqG"pMQI])2c,V>@1nN9B'%KoIa%df?bc"so3-&(s5Q[u/Me8M<Jq!pSgT!>5E#nD&/d]d]U?OLY6PgnP\u)#GGO#CWW2U8F.HT$hG,YA;UY#:a`ej7r8 at Kq^;">]*"\@u"THX9_,Jejr4XT?lXaj(;3?a4O^gVGAb1NJcbA(C49sWB;E;9Q3PJX^8)RD7>TsWP^\$:jg/.Yk_r5]7];YJQpuUMN9%Li[T%dDYVRV#JO5f$bYJ.#TC5RENTKj!5rS!O;L-!<(moOH%o7Jf5]Z"sSK2LOdjT+abBnOc;q(IC@^bl~>
 endstream
 endobj
 240 0 obj
@@ -1526,10 +1526,10 @@
 >>
 endobj
 241 0 obj
-<< /Length 1516 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 245 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=,D3(GM&H88.JPrJl8f'/CSWd5+GMSIcg7EE<ZsT8N+N,PV&n!G90E8aEG4:k1&lkutm(r;mGfGpXle1;Gf>8-*X`ZP.Xo/Z42ZLZ1G&0n^D'(cH@',L at hhs/0OZZbG=R4j(QZ$;:Eg[n5jIk.f%!e9-Q<@?(\hB at 0h:>/GHE`]q0+KV#9>,f:-^ig<HE#OS6-2F8P(E<,hpAOMG:e8-FFt/1>`?NJQ88G!'i"84kDCp`NWd1Z,9A3#%_^N/&E2?Z:ddco;KU;m#'T2&O"]RiGK4aUk27b*X/`6?>3qM at 8soV#D+ViIQo3hni-7U>If9Lc85mCX*V&b"#_ej#7BGd&HR)&/jYdNE*83^"o3:QT_I#mk&iLIN-(J3(HdON>="u-Y at rSQ[AiK2jNoN+YN\r[)Rn5,GF'g6<6)=[(<[=Npl%6N-$k@%56XlH1%4qsO8rFXoK[9#')KHg(!9G\RJZFc<`Y\ka+%[=%Q3GYTHE;-2daVJHl'oXJA^t!f^Tbt8-Dq/0;j9O^_Eh)94j[R(Bq"+O+G.0EpVD$[%jLH*2DDcLCS(.j\,ctiVh7DPG?F;W+nn(8pf1'-K;^OM2eR*N?("tYemI2'a&9+)Wle,tT<bmr7:MW2$(QrBc3nLV;0/D'V!>72VJI%*aD4FaZ88L4.*=7>2\Y,g>4m,'\s3aR6);EW[FH"XGJI4j0">XJ'?)eZk<UFdm:Gp:3P$sq;@N]#3(h7g]NgR&\e5^+d?Tr/DPTE7$i:^H`K.e6q=49`LuT&r_TNjI29q<PPMcNs;-k`rE,dA!Os#BAG&l6j.6'm<]fm],fp32rfW1J=9?WX_-dr.&)t3H;*'hHArj9VPD.CE:h.YP1JZPBrZK*mI0Srr(m,(NZ72PRP*+DjuH6U;1j!0L-PG&?gd&MtT- at cT"M/Q[u!$U%X"$Tj6J<*(.?2.*^MH&0hq*:WiH[7?h*^R+Oq67q6U#:E3q]3Hk(LOpS7OD$oGnGp]e#G'nT-n[?"i1?I]&RA^H9U>T7l(!7=Ba0G2U!+Y at b8H;ER_>%J*P#j at J/-892JS5!S2'Y=n+,<.bFoOhd+`<2'oYoKhWut%7QE9-uTne[E at em4.Zf1f$KH>O>N_5!DH#cA`L7fLTZ\8=^8fFTV=sXk]Uf[e0m"40TL5B-Ko`U$*_Qb9b1:<Y0##l=Kbq at W&H?IHWZT[7/i at a#Ap3?fJ/ZmH2=+g2]A0S6sN6$H+`R8#I_mb#u!MIJ#MLj/ZTuh#P!:+Z.D,"paR3#b5(Pt#@]r;g]3%1aaZOF6fsqq/"DX0F_B"aM<1Y[@\1k(%t,D`Sb+s?]ILsAE&jbrmt`J(658(dRd]I#R$5TiQBAPBHEASMT$*&.i(B%qi*q.0b8p at O$[FHs35tIs at +fes:HHQe!%1_Jm&G,^%*#F:l)&siSJeCmE4)N&D#i^lbpKqphtaKs[eOQ"H^-fLa<)0[rq<e5DU%(?<_]Z3p3$(;4Zpfjj,T_[j0RtC50nt`bWaT-rr_n/#^Q~>
+Gas3,4V*,u&-h(+^Z%^"3.%LhiG,*>K8Hk&EBj[pJtRpVrd2hD\eoM3S,7GJk/:dB"#6eY>V7:l"G-26^^;Bl1mhAImL7iXr]"GT[]$76$mANm3&RKTfG*^9mJ=:'G2S\C1dKK]Hh,FDl5DQXa>".\Wie)s:ZbDWL\L`gCQ/O?T;>=X#.[ioRJV6O>#\G8QltqWQ$%D3o")r#;\bS:^.FgWDr,5fs6?j75;O)JBH-qC08.tIZ2~>
 endstream
 endobj
 242 0 obj
@@ -1541,10 +1541,10 @@
 >>
 endobj
 243 0 obj
-<< /Length 243 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1321 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gas3-bmK%f&-1Yc5/eN5i&(>kY$M8nF9nVS70fkn"Of,YHMc9X,)DW00L+GgC>!tX5nFs6_%r!&A/rYq#O]b<L*VpU^n+pqbO,UZm]3e<lMs7[$mp_9J_?pcDu%bi#-\3AoP=YXf_=SgW(i5U;Br\d)i)m7B%^aC?p(MM7\F'Jq5eX6YVf)@gCmbc8GlkSgl,Rqk/X]>4'.\A=BGAPmiK5hX\f#I-#qh#,c\tH`(,+T2?cT5~>
+Gau`S?]Us?&:`$(5[15DPo9lHN6Oqr[+F-!Y,YN>2sO&b#EkIm&qQR(p@@TdK>BGKE[RE"RtnuCq>6ZOGl3$(=M4hY,QL\[SM#<YY^i;uJ']DGpg+YE5U5Wt:Yt"'YK;VaGlN$S?_nJ1TJ%1Y:aZ7*,"*+G'#7NljnX at n(4u'D^<H at Q,i\CQ/J2$RpD\dA=hRA_dOZ('W>-8e85mYe#("nBP\UC'l>,!Xl?l\',4D?Z(gI>u&4A3eV;<hMQ$hk.iisf`=Rm&S&XiefCOlCT7Gp[''tH_=@2&H2\9fj\XssR`M;MP7K)a#[)6556/<9"9<W\K!j)AQ(Vk8tD3N8#tdD?J"+XX>`UH$aNQ<-da#luc8U!.>eGLh6i=`*tW"d(]k3'\TOJV2$S0d<5"7351:Pa12&_5n#Q(KXaB46]SaWmP)qX+BGoWp7[L@[iV5.W<VY29h0.NU!+T#=9**;^/\IZ3 at uD8tE/PY7*r=q\C=BRCE9S,Piu7;;PKVqkIt2in"AbMG;$,VjIV/(26&YZGHB$Ee*Fhg?3q@"(jO at CKa>s2up.[G;/Xl(&<AK`\h[SUr::%d0s:.'2+NM)oTX,gF\@M(fM6jf+5X at i/Rmp(?puD8.MMOj[2)h#EkW_hJ\Fi]Gi97,DdL:`Vmi`bcGQk"^8D3h?'dnT%qo-[uOBN;=D,##^OC"<lKtXGE3M(SMR,qU.!i46bIO>95+31g8f*_I%m:@)h?f at giMhfVa[0F/YLUEQqU/'0d)VEf6ga'&cjhNi*UTL=?0'VDNbme+:)q-&.$h5!,:c<'.\9YT:L7CC4K8\:`AUJXW%U=!;ngBV;IT#=^&_:+^2]"ic_OY=X&#ZSNB3ANhWH_a'#0_IG-I8db7H*f&rbYq6n8lnuUJ$79BVXr[4a]OdAF:#1?d;9j8WpUg0iNH_o^(3NDa;2d)]_1o>:5";G5V[i1i&-0glBFZaMBcF4AL2oTCoNM)'P+#`k;P'FR&+1#7mjVbcgS,LXgk$]*9(eP8PWtV1$.93G.>cep,Q'Bg+[`2<QMNpe3b:qck&reZCHI<BDJ^E#/][PK5*Fi7)>5-]l8Fh#`YgYE`kpqb.fF"8;`O"&Wf&#Hl71k>(*Y8;.rI4M5DBo1MGh%QX=oFO]lW(7nPj:79#>&E%5;D$iSiQ7jk;8Iai8"+Tq?geSA#^V_Y=8F."UjG*),^>6Hu/.'pG&tegpS0%%$3-J/$F75U at +]@=ORV at bVB(9X1I[-2dMN-6_BB%G[<$e[ZC3<NQ<UQHXZO5b:g]EFRdE2rHcO%KcmnJBATGgH/*s'DG6&3rrJ'WeK4~>
 endstream
 endobj
 244 0 obj
@@ -1556,10 +1556,10 @@
 >>
 endobj
 245 0 obj
-<< /Length 1301 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1048 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau`S>Ar7S'Roe[&2IWdJ=.`Q8X'Qu5e<aVLETc(@kZ"HA=Kk2aHB1f>Q+#7B[J"Q=gADLB`&G3OQZ>.$P2,IB8^u`,;I'l17M]j4!Pf$+7Y/JJ]MedHkq"N^%_:"9=j9shETlfGMifkJm0jo,Dpo6pani[MTn76,o><FSr8k-jmg0Vqk6&q5G+G6GAsiCbLCoSG!d+fa[FF:[]=%67'>1:SY7*pB/I3X%OHqM8LriMZ)H,)*EP"L+BF.LM#k!A#/(-M6r4lr7219a![ki4IlB^bF^7UJ'7[C_V>-D'F'dI'=srUq5r">P*X2_c^\hj!%r&_h!O"29&IW9qs!YA$Seq&KZAbK1iJ9dAMiCC)/'T$V[L9$IiI6<o+EgR!9h-;GI?mBe1fZ+rYr1iFg)3rAekXfZZ4_:c6:QdJ&QS;0=fg&o=r!qB\g5s;RS<6#Hn[G'3b`UD-(FEdTQIX8pl,:\TG\V4gq'usM8T0Q+Ap]nU:YG(IIUNo"l6KUf^0HL+PA:t8.<HSA)@<eUM640FU+9oO^4,J\\oP6*W6C67o5fONdtKc)@&TF4<;Pb,sCcLD=X8_@^>*Y"9hB`_YE^$NsXT/b(_JGgJ8%ZU>Hu:T2!ts'8B'=1/+1rdr<+mZcT`W7%TlJA%+_hC>W-DF]Xg^3]C)"'dNOgDPVqY-FYa:2MG@=@XlJ0\r+p>Pf;`u+n-0*9RGU?).j4J])h,d>O0p)Ss<$TZ%,^U0cCfGL'VBEa0+[2:_k4ha!&1^QEand>2?&(l^edRL1,VPOPb`!G!,;0/]C$7Is$RC&WE9pT%pp1OAU[p"HpMo,."Xg6pn?:1W3:3?1CmsG<1&)>jl4VCj2(8Me9``d\X at b`2jJ\<Ja_6Wb#>D5,D\A>l$rs2mTCYVY%CE#rSl.^lf#'qWrp+VdWt`5/h[2g6d[ON*&%_Xc2ErW at G<TY1I^i$+,`abMm[2WM#$mT3h!TJ at IgETC[1XTT8KbB")jUqTsFA#a?g+ar/U,Pc.#rW#$hI"n:e1>N2BVj?eR"4YY[V'9+[lHINL\;&j=<hWQK at p9?)aWLJ:jV$NhA3D19Ypm&eTCk5CUiYc8;V73]9#pM2E4p$3.oBtkf/,Yt9<?L/)q?L?meS,7;dr.bt+2dCo#kdLUCq0?pGg8&]$`D"+<X]"p:eQ'_Mjq#<"E9J9rNLW2.H8$Ram++VZVR9DK!/+DW5>@nH<Ki<:J>h2q'T#uD3rT^T9ln1m0gUUR0PDG5c7]@:e at 8>?8h[7Hb8VdMulC#T"B5u5X=6f5Z+2dG"@VhrrJ["dD#~>
+Gasao;/b2K%"?O+d+btG_Uu.?fmW1t($K'ci6Z;XYjF`!j?tpso%?dDr;2[h4,Vg`1DECU;'Pgm'Ige$c5)HQ_D*<-KU2Eb5jMR/!qR3PL*8f=8V+ki/[sruc$`_%[?A:Bd2XqHBbI3Uh;!XDT2aY9U>V$\l5'=`b<NT]!O.Bg62U_95S,;KJG8o5$I)X"ZhT,Ta=&<'j]R%YI!dtX&JPGhoskNL'f67?+]2nB<UX,J1^/JKPRo@#)XZV9M:-*\,>OBbX%4)*&;7u_FbLh_0pmT<-7-ueo!NFFo1EpAP"k>Z6+flFMW+mIo=])7<_O'^W2V*b*TGg*C:E#8R\m`%/9Z:ki?a2ZV.CHlo`)`^o9.=U>5q@?2gdiO)q?T8*?B#+&n2;*>ok$7\WcKSh`l^F:M3<j9<AF^R3)=8laIAHk"Mr(A<dnAe[]n'S324die.;DrimOd52Q;s;*':8OI5f4Y&s9YM%(*,fiIid3'aTi<@2`lXT^-#/BUTb,I41QA6Ha6/%V]!CW6:qK$t.i[ifI'#2lnSe_!h0+I at dT9_pe);$9JUdp at mD51Y_G66YZ81.)'Rl5OrlFWiOdAS7Fq-k^mrLX49[V$dS5b!tNYQtj3o`PA]r1?uDd?b`U5[[-M$W>9h0%dgjD?%Ed(?KLmYccEUfYDm.'C;DUlR!^a0P%oDf`fbN!i8MMn)c<#fZ,E-.f$C#MC?:!4h@=JActGSDjgH_#':0r$),T<+.<kGsC>Q5F2N;@u<I:Ak.s(B+F`aWWX+j8iSs0U7S4:;]n+b%@5g49h7jBce[1i+\ceR\I_Tnl-r8!i9W2ARn]Fo!_2q at HCe2'JpTU>Rnp:QRdV<GN0K6cCiCkNFJ>M*8'm/,Ri"':ILrF!,*WStISl.Lh@`&.#+>fg5E6:beVg[nG/XUDeB`JDJ59NQ)7B,QKMqtD_h\eGlt>#-uZmIc67[g/Mjd])]h=7c=Ve5\?U+2o(#otthDDtertGqejg6VO(Tfh=5%$'`d8T"S?g2prP;Mu-7(K@%%g$m0d at FWpbeS7PmD~>
 endstream
 endobj
 246 0 obj
@@ -1568,53 +1568,71 @@
 /MediaBox [ 0 0 612 792 ]
 /Resources 3 0 R
 /Contents 245 0 R
+/Annots 247 0 R
 >>
 endobj
 247 0 obj
-<< /Length 182 /Filter [ /ASCII85Decode /FlateDecode ]
- >>
-stream
-Gas3+57>=^&-_S%5/iLBoXrA^FtW":+:-Z=5qseh9ei-phIr`<,.B]&4at)"e]+=;1&;07!sip15uFgubDN)aJ&B052s*@u4JL`Mg;A?-:GX5+dC_9e<!#PA6gnY_3CfXFFkP#I9_m,TZ%Ospk*jTW<$&f&B1W'a2,!><-M+LEq+=G6UG??~>
-endstream
+[
+248 0 R
+249 0 R
+250 0 R
+251 0 R
+252 0 R
+253 0 R
+254 0 R
+]
 endobj
 248 0 obj
-<< /Type /Page
-/Parent 1 0 R
-/MediaBox [ 0 0 612 792 ]
-/Resources 3 0 R
-/Contents 247 0 R
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 345.52 637.683 367.18 627.683 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://uffi.b9.com)
+/S /URI >>
+/H /I
 >>
 endobj
 249 0 obj
-<< /Length 1022 /Filter [ /ASCII85Decode /FlateDecode ]
- >>
-stream
-Gat%"gMYb"%"6H'k\Y1A.)+nSpFU5`TL1GABXV>_qk,ohU<Sf_>=k-qT6uQuUiSEs#]qJW4=!A<2m^om4p1n<;&"Ub3qC(,j9*a+Hp at et!><A5+:;^rn9ct8F"S9gpE^X]PeoEN at KJ0Zd)?O$e1Ae1(.qnb="sO(3:S+#8`dm5J2-[me2Xs:4..P+32iN0e9jkrA42I?Qi$Z8K,+[*B2&&BJkA9p%n8Np1qp"b`LFdWK+#fs_BQ,KH?#U"fNn$"-Z\2q#\*#nf_'BA?%<MDJN,,>97F/m[r0Y]XXt0sZs^r;",oP\6;1\N/%+LAKL0.J)&rhM][AjUSkM%V.c<FDM- at Z#JkGV9=tWQR=]VPP8b.aU4$#kHo4(FD)$Sph_Fc%Mq7[)6g&og%]6i2J&,jb$c*'JdV%3KcL\Eq_F<?`q+HpWJE1 at 3e"2gH3HP$[72[d+(O4-nfYI`+DWSDC#K;I99#u=R+jA9k[aU at co-b>fn8]IPTkST_-i.LG!67ZbBgOb)M$[POq9'WoIOG_7O)4rTPVNKo+\ssR!/bc+(CRBr658u89WR^B>"kT*IU!ePIY>58rp1XYdmi'XY+)2NT-BJd?V9=(g/Pkr./B)idjCBe9Y1bhE8c==-MmWJa,OVtj\Ij]n\'cC4Hp=&T#e<'iY\GWjh-a#902.OBjNP9j:+'Rm@=`*(]Q9`]MADLeSS.hNZA46&JmBSrVHaST-#-,K,Ft^G*Hb5HgT6:G'dZIe-=f=iVj0bl#Usm*T:+Ec>](5sOV+mfCO_>Sc$^F2NN2!i<sb5)@+i'J92Xt`Il6k'&.aqS\7W1N&8[s.AeYKs4N-,X>k2`;fN,:rLN<oJ9PTL>EEo[Xmp37U32057+<lq at k"OnKp0g at NX4,@`pX\l3j@:a^@+o=C50JLqXhQ]<<]Mh#Xt10gDQe8l\-dJ^E\"l,*k at W\TrVk,J)mA?eIT"6YNAKXk!>+iA+EU$4gQUt84T:B2m_Os"MsTPEsJ>/?f)pWI?7lR?2ako:J":~>
-endstream
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 373.595 637.683 444.155 627.683 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://uffi.b9.com)
+/S /URI >>
+/H /I
+>>
 endobj
 250 0 obj
-<< /Type /Page
-/Parent 1 0 R
-/MediaBox [ 0 0 612 792 ]
-/Resources 3 0 R
-/Contents 249 0 R
-/Annots 251 0 R
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 582.79 626.683 614.47 616.683 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://www.sourceforge.net/projects/cclan)
+/S /URI >>
+/H /I
 >>
 endobj
 251 0 obj
-[
-252 0 R
-253 0 R
-254 0 R
-]
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 626.66 626.683 641.1 616.683 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://www.sourceforge.net/projects/cclan)
+/S /URI >>
+/H /I
+>>
 endobj
 252 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 345.52 637.683 367.18 627.683 ]
+/Rect [ 120.0 615.683 280.52 605.683 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
-/A << /URI (http://uffi.b9.com)
+/A << /URI (http://www.sourceforge.net/projects/cclan)
 /S /URI >>
 /H /I
 >>
@@ -1622,10 +1640,10 @@
 253 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 628.87 626.683 660.55 616.683 ]
+/Rect [ 156.67 604.683 172.22 594.683 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
-/A << /URI (http://www.sourceforge.net/projects/cclan)
+/A << /URI (http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/cclan/asdf/asdf.lisp)
 /S /URI >>
 /H /I
 >>
@@ -1633,7 +1651,7 @@
 254 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 178.61 604.683 194.16 594.683 ]
+/Rect [ 178.05 604.683 440.79 594.683 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A << /URI (http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/cclan/asdf/asdf.lisp)
@@ -1642,10 +1660,10 @@
 >>
 endobj
 255 0 obj
-<< /Length 286 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 280 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GarVI4)]a*&Dm at 9D@Am;T3oANU/7[j,]?6ZJfq?%\95m>IpYQp5Ua5*e(sc.]?H at t>QC*I8HbEL0Xq\t(()5IP^uS-WauU9L%FH5EVFh=s!%4Bo+e&.O9JMn:*Sad6Rt__:7nQAq9%R*#e#QR0\tfNY3`8p[Z4X#q77uTQhSWuMM5Dd]L47gf5dZ=@X!Gf=/3Buh5=<BAmEQ!^F`ag;tTe;/BEgaqJ\BAV&g'@ID0IO/s]$Ca:Yb/Hj)AfOj'n`@7g!T2k;*/L7&ZrqRFspj?LXV at -.~>
+GarVI]afWJ&Dm9u2p,Oq5;7s,UROh6F[-#*#uI``q">Jf5_uu4bMDo6GDSeiPQMRYME'f4&\&tk`#",h at 0.p9YnA5D)GZ2rAY7;m]`Ycp5'X%08j(3'#8(NQ6V2iC(k5PbFbR@`!A#[Z]BLMf20j!(['ai+_Ne81r4HZkJku<mrAg7mQkK#CF_B$2mqtVhU".j/B-Z1_F'IP.em,6^\M at 7Ln&E,lX[\B?X8;3M.Bs$'A)`V$TL;;7kW.$DaoCpd1H;(W-5 at RcY/hIU!Qcp$l2~>
 endstream
 endobj
 256 0 obj
@@ -2227,21 +2245,29 @@
 /BaseFont /Courier
 /Encoding /WinAnsiEncoding >>
 endobj
+332 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
 1 0 obj
 << /Type /Pages
-/Count 62
-/Kids [6 0 R 8 0 R 10 0 R 12 0 R 121 0 R 140 0 R 142 0 R 144 0 R 146 0 R 148 0 R 150 0 R 152 0 R 154 0 R 156 0 R 158 0 R 160 0 R 162 0 R 164 0 R 166 0 R 168 0 R 170 0 R 172 0 R 174 0 R 176 0 R 178 0 R 180 0 R 182 0 R 184 0 R 186 0 R 188 0 R 190 0 R 192 0 R 194 0 R 196 0 R 198 0 R 200 0 R 202 0 R 204 0 R 206 0 R 208 0 R 210 0 R 212 0 R 214 0 R 216 0 R 218 0 R 220 0 R 222 0 R 224 0 R 226 0 R 228 0 R 230 0 R 232 0 R 234 0 R 236 0 R 238 0 R 240 0 R 242 0 R 244 0 R 246 0 R 248 0 R 250 0 R 256 0 R ] >>
+/Count 60
+/Kids [6 0 R 8 0 R 10 0 R 12 0 R 121 0 R 140 0 R 142 0 R 144 0 R 146 0 R 148 0 R 150 0 R 152 0 R 154 0 R 156 0 R 158 0 R 160 0 R 162 0 R 164 0 R 166 0 R 168 0 R 170 0 R 172 0 R 174 0 R 176 0 R 178 0 R 180 0 R 182 0 R 184 0 R 186 0 R 188 0 R 190 0 R 192 0 R 194 0 R 196 0 R 198 0 R 200 0 R 202 0 R 204 0 R 206 0 R 208 0 R 210 0 R 212 0 R 214 0 R 216 0 R 218 0 R 220 0 R 222 0 R 224 0 R 226 0 R 228 0 R 230 0 R 232 0 R 234 0 R 236 0 R 238 0 R 240 0 R 242 0 R 244 0 R 246 0 R 256 0 R ] >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 1 0 R
  /Outlines 257 0 R
  /PageMode /UseOutlines
+ /Names << /Dests << /Names [  (preface) [ 140 0 R /XYZ 115.0 725.0 null ] (introduction) [ 142 0 R /XYZ 115.0 725.0 null ] (notes) [ 146 0 R /XYZ 115.0 725.0 null ] (ref_declarations) [ 150 0 R /XYZ 115.0 725.0 null ] (primitives) [ 154 0 R /XYZ 115.0 725.0 null ] (aggregates) [ 162 0 R /XYZ 115.0 725.0 null ] (objects) [ 182 0 R /XYZ 115.0 725.0 null ] (strings) [ 216 0 R /XYZ 115.0 725.0 null ] (func_libr) [ 234 0 R /XYZ 115.0 725.0 null ] (installation) [ 246 0 R /XYZ 115.0 725.0 null ] (glossary) [ 256 0 R /XYZ 115.0 725.0 null ] (id2254977) [ 10 0 R /XYZ 115.0 725.0 null ] ] >> >>
  >>
 endobj
 3 0 obj
 << 
-/Font << /F3 325 0 R /F5 326 0 R /F10 327 0 R /F6 329 0 R /F1 328 0 R /F4 330 0 R /F9 331 0 R >> 
+/Font << /F3 325 0 R /F5 326 0 R /F10 327 0 R /F6 329 0 R /F1 328 0 R /F4 330 0 R /F9 331 0 R /F7 332 0 R >> 
 /ProcSet [ /PDF /ImageC /Text ] >> 
 endobj
 15 0 obj
@@ -2349,7 +2375,7 @@
 49 0 obj
 <<
 /S /GoTo
-/D [null /XYZ 0.0 0.0 null]
+/D [150 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 51 0 obj
@@ -2361,7 +2387,7 @@
 53 0 obj
 <<
 /S /GoTo
-/D [154 0 R /XYZ 115.0 678.347 null]
+/D [154 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 55 0 obj
@@ -2385,7 +2411,7 @@
 61 0 obj
 <<
 /S /GoTo
-/D [162 0 R /XYZ 115.0 678.347 null]
+/D [162 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 63 0 obj
@@ -2433,7 +2459,7 @@
 77 0 obj
 <<
 /S /GoTo
-/D [182 0 R /XYZ 115.0 678.347 null]
+/D [182 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 79 0 obj
@@ -2517,7 +2543,7 @@
 105 0 obj
 <<
 /S /GoTo
-/D [216 0 R /XYZ 115.0 678.347 null]
+/D [216 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 107 0 obj
@@ -2547,61 +2573,61 @@
 115 0 obj
 <<
 /S /GoTo
-/D [230 0 R /XYZ 115.0 725.0 null]
+/D [228 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 117 0 obj
 <<
 /S /GoTo
-/D [232 0 R /XYZ 115.0 725.0 null]
+/D [230 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 119 0 obj
 <<
 /S /GoTo
-/D [234 0 R /XYZ 115.0 725.0 null]
+/D [232 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 124 0 obj
 <<
 /S /GoTo
-/D [236 0 R /XYZ 115.0 725.0 null]
+/D [234 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 126 0 obj
 <<
 /S /GoTo
-/D [238 0 R /XYZ 115.0 725.0 null]
+/D [236 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 128 0 obj
 <<
 /S /GoTo
-/D [242 0 R /XYZ 115.0 725.0 null]
+/D [240 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 130 0 obj
 <<
 /S /GoTo
-/D [246 0 R /XYZ 115.0 725.0 null]
+/D [244 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 132 0 obj
 <<
 /S /GoTo
-/D [250 0 R /XYZ 115.0 725.0 null]
+/D [246 0 R /XYZ 115.0 725.0 null]
 >>
 endobj
 134 0 obj
 <<
 /S /GoTo
-/D [250 0 R /XYZ 115.0 687.009 null]
+/D [246 0 R /XYZ 115.0 687.009 null]
 >>
 endobj
 136 0 obj
 <<
 /S /GoTo
-/D [250 0 R /XYZ 115.0 599.683 null]
+/D [246 0 R /XYZ 115.0 599.683 null]
 >>
 endobj
 138 0 obj
@@ -2634,345 +2660,346 @@
 >>
 endobj
 xref
-0 332
+0 333
 0000000000 65535 f 
-0000086303 00000 n 
-0000086846 00000 n 
-0000086939 00000 n 
+0000087336 00000 n 
+0000087863 00000 n 
+0000088550 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
-0000000352 00000 n 
-0000000458 00000 n 
-0000001520 00000 n 
-0000001626 00000 n 
-0000001787 00000 n 
-0000001894 00000 n 
-0000003922 00000 n 
-0000004045 00000 n 
-0000004446 00000 n 
-0000087092 00000 n 
-0000004582 00000 n 
-0000087158 00000 n 
-0000004718 00000 n 
-0000087224 00000 n 
-0000004854 00000 n 
-0000087292 00000 n 
-0000004990 00000 n 
-0000087360 00000 n 
-0000005126 00000 n 
-0000087428 00000 n 
-0000005262 00000 n 
-0000087496 00000 n 
-0000005398 00000 n 
-0000087564 00000 n 
-0000005534 00000 n 
-0000087630 00000 n 
-0000005670 00000 n 
-0000087696 00000 n 
-0000005806 00000 n 
-0000087764 00000 n 
-0000005942 00000 n 
-0000087832 00000 n 
-0000006078 00000 n 
-0000087900 00000 n 
-0000006214 00000 n 
-0000087968 00000 n 
-0000006350 00000 n 
-0000088036 00000 n 
-0000006486 00000 n 
-0000088103 00000 n 
-0000006622 00000 n 
-0000088171 00000 n 
-0000006758 00000 n 
-0000088239 00000 n 
-0000006894 00000 n 
-0000088298 00000 n 
-0000007030 00000 n 
-0000088364 00000 n 
-0000007166 00000 n 
-0000088432 00000 n 
-0000007302 00000 n 
-0000088498 00000 n 
-0000007438 00000 n 
-0000088564 00000 n 
-0000007574 00000 n 
-0000088630 00000 n 
-0000007710 00000 n 
-0000088698 00000 n 
-0000007846 00000 n 
-0000088764 00000 n 
-0000007982 00000 n 
-0000088830 00000 n 
-0000008118 00000 n 
-0000088896 00000 n 
-0000008254 00000 n 
-0000088962 00000 n 
-0000008389 00000 n 
-0000089028 00000 n 
-0000008525 00000 n 
-0000089094 00000 n 
-0000008661 00000 n 
-0000089160 00000 n 
-0000008796 00000 n 
-0000089228 00000 n 
-0000008932 00000 n 
-0000089294 00000 n 
-0000009068 00000 n 
-0000089360 00000 n 
-0000009204 00000 n 
-0000089426 00000 n 
-0000009340 00000 n 
-0000089492 00000 n 
-0000009476 00000 n 
-0000089558 00000 n 
-0000009611 00000 n 
-0000089624 00000 n 
-0000009747 00000 n 
-0000089690 00000 n 
-0000009883 00000 n 
-0000089756 00000 n 
-0000010019 00000 n 
-0000089822 00000 n 
-0000010155 00000 n 
-0000089888 00000 n 
-0000010291 00000 n 
-0000089954 00000 n 
-0000010429 00000 n 
-0000090021 00000 n 
-0000010567 00000 n 
-0000090088 00000 n 
-0000010705 00000 n 
-0000090157 00000 n 
-0000010843 00000 n 
-0000090224 00000 n 
-0000010981 00000 n 
-0000090291 00000 n 
-0000011119 00000 n 
-0000090358 00000 n 
-0000011257 00000 n 
-0000090425 00000 n 
-0000011394 00000 n 
-0000090492 00000 n 
-0000011530 00000 n 
-0000090559 00000 n 
-0000011666 00000 n 
-0000012265 00000 n 
-0000012391 00000 n 
-0000012476 00000 n 
-0000090626 00000 n 
-0000012610 00000 n 
-0000090693 00000 n 
-0000012744 00000 n 
-0000090760 00000 n 
-0000012878 00000 n 
-0000090827 00000 n 
-0000013012 00000 n 
-0000090894 00000 n 
-0000013146 00000 n 
-0000090961 00000 n 
-0000013280 00000 n 
-0000091030 00000 n 
-0000013414 00000 n 
-0000091099 00000 n 
-0000013548 00000 n 
-0000014206 00000 n 
-0000014316 00000 n 
-0000016365 00000 n 
-0000016475 00000 n 
-0000017651 00000 n 
-0000017761 00000 n 
-0000020167 00000 n 
-0000020277 00000 n 
-0000020735 00000 n 
-0000020845 00000 n 
-0000021401 00000 n 
-0000021511 00000 n 
-0000022412 00000 n 
-0000022522 00000 n 
-0000023804 00000 n 
-0000023914 00000 n 
-0000024967 00000 n 
-0000025077 00000 n 
-0000025901 00000 n 
-0000026011 00000 n 
-0000027198 00000 n 
-0000027308 00000 n 
-0000027688 00000 n 
-0000027798 00000 n 
-0000029585 00000 n 
-0000029695 00000 n 
-0000030019 00000 n 
-0000030129 00000 n 
-0000031265 00000 n 
-0000031375 00000 n 
-0000032223 00000 n 
-0000032333 00000 n 
-0000033243 00000 n 
-0000033353 00000 n 
-0000034114 00000 n 
-0000034224 00000 n 
-0000035421 00000 n 
-0000035531 00000 n 
-0000035870 00000 n 
-0000035980 00000 n 
-0000036961 00000 n 
-0000037071 00000 n 
-0000037465 00000 n 
-0000037575 00000 n 
-0000038630 00000 n 
-0000038740 00000 n 
-0000039424 00000 n 
-0000039534 00000 n 
-0000040883 00000 n 
-0000040993 00000 n 
-0000041909 00000 n 
-0000042019 00000 n 
-0000042717 00000 n 
-0000042827 00000 n 
-0000043949 00000 n 
-0000044059 00000 n 
-0000044387 00000 n 
-0000044497 00000 n 
-0000045663 00000 n 
-0000045773 00000 n 
-0000046880 00000 n 
-0000046990 00000 n 
-0000047770 00000 n 
-0000047880 00000 n 
-0000048625 00000 n 
-0000048735 00000 n 
-0000049250 00000 n 
-0000049360 00000 n 
-0000051132 00000 n 
-0000051242 00000 n 
-0000051585 00000 n 
-0000051695 00000 n 
-0000053137 00000 n 
-0000053247 00000 n 
-0000053943 00000 n 
-0000054053 00000 n 
-0000056145 00000 n 
-0000056255 00000 n 
-0000056624 00000 n 
-0000056734 00000 n 
-0000057542 00000 n 
-0000057652 00000 n 
-0000058457 00000 n 
-0000058567 00000 n 
-0000059308 00000 n 
-0000059418 00000 n 
-0000060548 00000 n 
-0000060658 00000 n 
-0000060926 00000 n 
-0000061036 00000 n 
-0000062117 00000 n 
-0000062227 00000 n 
-0000062953 00000 n 
-0000063063 00000 n 
-0000064038 00000 n 
-0000064148 00000 n 
-0000064439 00000 n 
-0000064549 00000 n 
-0000066018 00000 n 
-0000066128 00000 n 
-0000066456 00000 n 
-0000066566 00000 n 
-0000068176 00000 n 
-0000068286 00000 n 
-0000068622 00000 n 
-0000068732 00000 n 
-0000070127 00000 n 
-0000070237 00000 n 
-0000070512 00000 n 
-0000070622 00000 n 
-0000071738 00000 n 
-0000071864 00000 n 
-0000071909 00000 n 
-0000072080 00000 n 
-0000072274 00000 n 
-0000072494 00000 n 
-0000072873 00000 n 
-0000091166 00000 n 
-0000091220 00000 n 
+0000000363 00000 n 
+0000000469 00000 n 
+0000001525 00000 n 
+0000001631 00000 n 
+0000001792 00000 n 
+0000001899 00000 n 
+0000003924 00000 n 
+0000004047 00000 n 
+0000004448 00000 n 
+0000088715 00000 n 
+0000004584 00000 n 
+0000088781 00000 n 
+0000004720 00000 n 
+0000088847 00000 n 
+0000004856 00000 n 
+0000088915 00000 n 
+0000004992 00000 n 
+0000088983 00000 n 
+0000005128 00000 n 
+0000089051 00000 n 
+0000005264 00000 n 
+0000089119 00000 n 
+0000005400 00000 n 
+0000089187 00000 n 
+0000005536 00000 n 
+0000089253 00000 n 
+0000005672 00000 n 
+0000089319 00000 n 
+0000005808 00000 n 
+0000089387 00000 n 
+0000005944 00000 n 
+0000089455 00000 n 
+0000006080 00000 n 
+0000089523 00000 n 
+0000006216 00000 n 
+0000089591 00000 n 
+0000006352 00000 n 
+0000089659 00000 n 
+0000006488 00000 n 
+0000089726 00000 n 
+0000006624 00000 n 
+0000089794 00000 n 
+0000006760 00000 n 
+0000089862 00000 n 
+0000006896 00000 n 
+0000089928 00000 n 
+0000007032 00000 n 
+0000089994 00000 n 
+0000007168 00000 n 
+0000090060 00000 n 
+0000007304 00000 n 
+0000090126 00000 n 
+0000007440 00000 n 
+0000090192 00000 n 
+0000007576 00000 n 
+0000090258 00000 n 
+0000007712 00000 n 
+0000090324 00000 n 
+0000007848 00000 n 
+0000090390 00000 n 
+0000007984 00000 n 
+0000090456 00000 n 
+0000008120 00000 n 
+0000090522 00000 n 
+0000008256 00000 n 
+0000090588 00000 n 
+0000008391 00000 n 
+0000090654 00000 n 
+0000008527 00000 n 
+0000090720 00000 n 
+0000008663 00000 n 
+0000090786 00000 n 
+0000008798 00000 n 
+0000090852 00000 n 
+0000008934 00000 n 
+0000090918 00000 n 
+0000009070 00000 n 
+0000090984 00000 n 
+0000009206 00000 n 
+0000091050 00000 n 
+0000009342 00000 n 
+0000091116 00000 n 
+0000009478 00000 n 
+0000091182 00000 n 
+0000009613 00000 n 
+0000091248 00000 n 
+0000009749 00000 n 
+0000091314 00000 n 
+0000009885 00000 n 
+0000091380 00000 n 
+0000010021 00000 n 
+0000091446 00000 n 
+0000010157 00000 n 
+0000091512 00000 n 
+0000010293 00000 n 
+0000091578 00000 n 
+0000010431 00000 n 
+0000091645 00000 n 
+0000010569 00000 n 
+0000091712 00000 n 
+0000010707 00000 n 
+0000091779 00000 n 
+0000010845 00000 n 
+0000091846 00000 n 
+0000010983 00000 n 
+0000091913 00000 n 
+0000011121 00000 n 
+0000091980 00000 n 
+0000011259 00000 n 
+0000092047 00000 n 
+0000011396 00000 n 
+0000092114 00000 n 
+0000011532 00000 n 
+0000092181 00000 n 
+0000011668 00000 n 
+0000012297 00000 n 
+0000012423 00000 n 
+0000012508 00000 n 
+0000092248 00000 n 
+0000012642 00000 n 
+0000092315 00000 n 
+0000012776 00000 n 
+0000092382 00000 n 
+0000012910 00000 n 
+0000092449 00000 n 
+0000013044 00000 n 
+0000092516 00000 n 
+0000013178 00000 n 
+0000092583 00000 n 
+0000013312 00000 n 
+0000092652 00000 n 
+0000013446 00000 n 
+0000092721 00000 n 
+0000013580 00000 n 
+0000014239 00000 n 
+0000014349 00000 n 
+0000016398 00000 n 
+0000016508 00000 n 
+0000017682 00000 n 
+0000017792 00000 n 
+0000020198 00000 n 
+0000020308 00000 n 
+0000020766 00000 n 
+0000020876 00000 n 
+0000021431 00000 n 
+0000021541 00000 n 
+0000022465 00000 n 
+0000022575 00000 n 
+0000023859 00000 n 
+0000023969 00000 n 
+0000025037 00000 n 
+0000025147 00000 n 
+0000025980 00000 n 
+0000026090 00000 n 
+0000027295 00000 n 
+0000027405 00000 n 
+0000027786 00000 n 
+0000027896 00000 n 
+0000029730 00000 n 
+0000029840 00000 n 
+0000030101 00000 n 
+0000030211 00000 n 
+0000031361 00000 n 
+0000031471 00000 n 
+0000032434 00000 n 
+0000032544 00000 n 
+0000033472 00000 n 
+0000033582 00000 n 
+0000034353 00000 n 
+0000034463 00000 n 
+0000035683 00000 n 
+0000035793 00000 n 
+0000036122 00000 n 
+0000036232 00000 n 
+0000037226 00000 n 
+0000037336 00000 n 
+0000037730 00000 n 
+0000037840 00000 n 
+0000038906 00000 n 
+0000039016 00000 n 
+0000039714 00000 n 
+0000039824 00000 n 
+0000041191 00000 n 
+0000041301 00000 n 
+0000042234 00000 n 
+0000042344 00000 n 
+0000043055 00000 n 
+0000043165 00000 n 
+0000044326 00000 n 
+0000044436 00000 n 
+0000044702 00000 n 
+0000044812 00000 n 
+0000045998 00000 n 
+0000046108 00000 n 
+0000047225 00000 n 
+0000047335 00000 n 
+0000048126 00000 n 
+0000048236 00000 n 
+0000048996 00000 n 
+0000049106 00000 n 
+0000049631 00000 n 
+0000049741 00000 n 
+0000051407 00000 n 
+0000051517 00000 n 
+0000051851 00000 n 
+0000051961 00000 n 
+0000053450 00000 n 
+0000053560 00000 n 
+0000054224 00000 n 
+0000054334 00000 n 
+0000056530 00000 n 
+0000056640 00000 n 
+0000057076 00000 n 
+0000057186 00000 n 
+0000058005 00000 n 
+0000058115 00000 n 
+0000058941 00000 n 
+0000059051 00000 n 
+0000059810 00000 n 
+0000059920 00000 n 
+0000061075 00000 n 
+0000061185 00000 n 
+0000062279 00000 n 
+0000062389 00000 n 
+0000063134 00000 n 
+0000063244 00000 n 
+0000064238 00000 n 
+0000064348 00000 n 
+0000064639 00000 n 
+0000064749 00000 n 
+0000066260 00000 n 
+0000066370 00000 n 
+0000066636 00000 n 
+0000066746 00000 n 
+0000068631 00000 n 
+0000068741 00000 n 
+0000069079 00000 n 
+0000069189 00000 n 
+0000070604 00000 n 
+0000070714 00000 n 
+0000071856 00000 n 
+0000071982 00000 n 
+0000072059 00000 n 
+0000072230 00000 n 
+0000072403 00000 n 
+0000072597 00000 n 
+0000072790 00000 n 
 0000072983 00000 n 
-0000091286 00000 n 
-0000073187 00000 n 
-0000073388 00000 n 
-0000073530 00000 n 
-0000073808 00000 n 
-0000073935 00000 n 
-0000074095 00000 n 
-0000074344 00000 n 
-0000074507 00000 n 
-0000074640 00000 n 
-0000074785 00000 n 
-0000075092 00000 n 
-0000075391 00000 n 
-0000075530 00000 n 
-0000075684 00000 n 
-0000075799 00000 n 
-0000076135 00000 n 
-0000076415 00000 n 
-0000076560 00000 n 
-0000076841 00000 n 
-0000091352 00000 n 
-0000077055 00000 n 
-0000077189 00000 n 
-0000077321 00000 n 
-0000077552 00000 n 
-0000077708 00000 n 
-0000077902 00000 n 
-0000078051 00000 n 
-0000078282 00000 n 
-0000078414 00000 n 
-0000078573 00000 n 
-0000078755 00000 n 
-0000078949 00000 n 
-0000079149 00000 n 
-0000079314 00000 n 
-0000079452 00000 n 
-0000079637 00000 n 
-0000079858 00000 n 
-0000080070 00000 n 
-0000080282 00000 n 
-0000080499 00000 n 
-0000080688 00000 n 
-0000080865 00000 n 
-0000081089 00000 n 
-0000081301 00000 n 
-0000081501 00000 n 
-0000081683 00000 n 
-0000081911 00000 n 
-0000082112 00000 n 
-0000082286 00000 n 
-0000082471 00000 n 
-0000082675 00000 n 
-0000082882 00000 n 
-0000083054 00000 n 
-0000083226 00000 n 
-0000083486 00000 n 
-0000083734 00000 n 
-0000083956 00000 n 
-0000084222 00000 n 
-0000084379 00000 n 
-0000084598 00000 n 
-0000084802 00000 n 
-0000085088 00000 n 
-0000085251 00000 n 
-0000085379 00000 n 
-0000085513 00000 n 
-0000085627 00000 n 
-0000085738 00000 n 
-0000085854 00000 n 
-0000085963 00000 n 
-0000086075 00000 n 
-0000086196 00000 n 
+0000073203 00000 n 
+0000073423 00000 n 
+0000073796 00000 n 
+0000092788 00000 n 
+0000092842 00000 n 
+0000073906 00000 n 
+0000092908 00000 n 
+0000074110 00000 n 
+0000074311 00000 n 
+0000074453 00000 n 
+0000074731 00000 n 
+0000074858 00000 n 
+0000075018 00000 n 
+0000075267 00000 n 
+0000075430 00000 n 
+0000075563 00000 n 
+0000075708 00000 n 
+0000076015 00000 n 
+0000076314 00000 n 
+0000076453 00000 n 
+0000076607 00000 n 
+0000076722 00000 n 
+0000077058 00000 n 
+0000077338 00000 n 
+0000077483 00000 n 
+0000077764 00000 n 
+0000092974 00000 n 
+0000077978 00000 n 
+0000078112 00000 n 
+0000078244 00000 n 
+0000078475 00000 n 
+0000078631 00000 n 
+0000078825 00000 n 
+0000078974 00000 n 
+0000079205 00000 n 
+0000079337 00000 n 
+0000079496 00000 n 
+0000079678 00000 n 
+0000079872 00000 n 
+0000080072 00000 n 
+0000080237 00000 n 
+0000080375 00000 n 
+0000080560 00000 n 
+0000080781 00000 n 
+0000080993 00000 n 
+0000081205 00000 n 
+0000081422 00000 n 
+0000081611 00000 n 
+0000081788 00000 n 
+0000082012 00000 n 
+0000082224 00000 n 
+0000082424 00000 n 
+0000082606 00000 n 
+0000082834 00000 n 
+0000083035 00000 n 
+0000083209 00000 n 
+0000083394 00000 n 
+0000083598 00000 n 
+0000083805 00000 n 
+0000083977 00000 n 
+0000084149 00000 n 
+0000084409 00000 n 
+0000084657 00000 n 
+0000084879 00000 n 
+0000085145 00000 n 
+0000085302 00000 n 
+0000085521 00000 n 
+0000085725 00000 n 
+0000086011 00000 n 
+0000086174 00000 n 
+0000086302 00000 n 
+0000086436 00000 n 
+0000086550 00000 n 
+0000086661 00000 n 
+0000086777 00000 n 
+0000086886 00000 n 
+0000086998 00000 n 
+0000087119 00000 n 
+0000087226 00000 n 
 trailer
 <<
-/Size 332
+/Size 333
 /Root 2 0 R
 /Info 4 0 R
 >>
 startxref
-91421
+93043
 %%EOF

Modified: trunk/thirdparty/uffi/examples/Makefile
===================================================================
--- trunk/thirdparty/uffi/examples/Makefile	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/Makefile	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,13 +5,10 @@
 #  Programer:    Kevin M. Rosenberg
 #  Date Started: Mar 2002
 #
-#  CVS Id:   $Id: Makefile,v 1.1 2004/06/23 08:27:10 hans Exp $
+#  CVS Id:   $Id$
 #
-# This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+# This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 #
-# UFFI users are granted the rights to distribute and use this software
-# as governed by the terms of the Lisp Lesser GNU Public License
-# (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 
 SUBDIRS:=
 

Modified: trunk/thirdparty/uffi/examples/Makefile.msvc
===================================================================
--- trunk/thirdparty/uffi/examples/Makefile.msvc	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/Makefile.msvc	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,13 +5,9 @@
 #  Programer:    Kevin M. Rosenberg
 #  Date Started: Mar 2002
 #
-#  CVS Id:   $Id: Makefile.msvc,v 1.1 2004/06/23 08:27:10 hans Exp $
+#  CVS Id:   $Id$
 #
-# This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
-#
-# CLSQL users are granted the rights to distribute and use this software
-# as governed by the terms of the Lisp Lesser GNU Public License
-# (http://opensource.franz.com/preamble.html), also known as the LLGPL.
+# This file, part of CLSQL, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 
 BASE=c-test-fns
 

Modified: trunk/thirdparty/uffi/examples/acl-compat-tester.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/acl-compat-tester.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/acl-compat-tester.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -24,7 +24,7 @@
 ;; Place, Suite 330, Boston, MA  02111-1307  USA
 ;;
 ;;;; from the original ACL 6.1 sources:
-;; $Id: acl-compat-tester.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;; $Id$
 
 
 (defpackage :util.test

Modified: trunk/thirdparty/uffi/examples/arrays.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/arrays.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/arrays.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: arrays.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)
@@ -21,7 +18,7 @@
 (uffi:def-constant +column-length+ 10)
 (uffi:def-constant +row-length+ 10)
 
-(uffi:def-foreign-type long-ptr '(* :long))
+(uffi:def-foreign-type long-ptr (* :long))
 
 (defun test-array-1d ()
   "Tests vector"

Modified: trunk/thirdparty/uffi/examples/atoifl.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/atoifl.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/atoifl.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: atoifl.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/c-test-fns.c
===================================================================
--- trunk/thirdparty/uffi/examples/c-test-fns.c	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/c-test-fns.c	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,14 +6,10 @@
  *  Programer:    Kevin M. Rosenberg
  *  Date Started: Mar 2002
  *
- *  CVS Id:   $Id: c-test-fns.c,v 1.1 2004/06/23 08:27:10 hans Exp $
+ *  CVS Id:   $Id$
  *
- * This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+ * This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
  *
- * UFFI users are granted the rights to distribute and use this software
- * as governed by the terms of the Lisp Lesser GNU Public License
- * (http://opensource.franz.com/preamble.html), also known as the LLGPL.
-
  * These variables are correct for GCC
  * you'll need to modify these for other compilers
  ***************************************************************************/

Modified: trunk/thirdparty/uffi/examples/c-test-fns.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/c-test-fns.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/c-test-fns.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: c-test-fns.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/compress.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/compress.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/compress.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: compress.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/file-socket.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/file-socket.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/file-socket.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Jul 2002
 ;;;;
-;;;; $Id: file-socket.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/getenv.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/getenv.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/getenv.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: getenv.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/gethostname.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/gethostname.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/gethostname.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: gethostname.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/getshells.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/getshells.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/getshells.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: getshells.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/gettime.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/gettime.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/gettime.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: gettime.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/run-examples.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/run-examples.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/run-examples.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: run-examples.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 #-uffi (asdf:oos 'asdf:load-op :uffi)

Modified: trunk/thirdparty/uffi/examples/strtol.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/strtol.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/strtol.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: strtol.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)

Modified: trunk/thirdparty/uffi/examples/test-examples.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/test-examples.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/test-examples.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: test-examples.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 #-uffi (asdf:oos 'asdf:load-op :uffi)

Modified: trunk/thirdparty/uffi/examples/union.lisp
===================================================================
--- trunk/thirdparty/uffi/examples/union.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/examples/union.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: union.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package :cl-user)
@@ -69,7 +66,7 @@
 	       #\A
 	       :test #'eql
 	       :fail-info "Error with union character")
-    #-(or sparc sparc-v9 mcl)
+    #-(or sparc sparc-v9 openmcl digitool)
 ;;    (util.test:test (> 0 (uffi:get-slot-value u 'tunion1 'int))
 ;;	       t
 ;;	       :fail-info

Modified: trunk/thirdparty/uffi/src/aggregates.lisp
===================================================================
--- trunk/thirdparty/uffi/src/aggregates.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/aggregates.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: aggregates.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:uffi)
@@ -45,7 +42,7 @@
 		       #+lispworks `((fli:define-c-typedef ,enum-name :int))
 		       #+(or cmu scl) `((alien:def-alien-type ,enum-name alien:signed))
 		       #+sbcl `((sb-alien:define-alien-type ,enum-name sb-alien:signed))
-                       #+(and mcl (not openmcl)) `((def-mcl-type ,enum-name :integer))
+                       #+digitool `((def-mcl-type ,enum-name :integer))
                        #+openmcl `((ccl::def-foreign-type ,enum-name :int))
 		       (nreverse constants)))
     cmds))
@@ -64,7 +61,7 @@
   #+sbcl
   `(sb-alien:define-alien-type ,name-array 
     (* ,(convert-from-uffi-type type :array)))
-  #+(and mcl (not openmcl))
+  #+digitool
   `(def-mcl-type ,name-array '(:array ,type))
   #+openmcl
   `(ccl::def-foreign-type ,name-array (:array ,(convert-from-uffi-type type :array)))
@@ -79,9 +76,9 @@
 			  (if (eq type :pointer-self)
 			      #+(or cmu scl) `((* (alien:struct ,name)))
 			      #+sbcl `((* (sb-alien:struct ,name)))
-			      #+mcl `((:* (:struct ,name)))
+			      #+(or openmcl digitool) `((:* (:struct ,name)))
 			      #+lispworks `((:pointer ,name))
-			      #-(or cmu sbcl scl mcl lispworks) `((* ,name))
+			      #-(or cmu sbcl scl openmcl digitool lispworks) `((* ,name))
 			      `(,(convert-from-uffi-type type :struct))))))
 	(if variant
 	    (push (list def) processed)
@@ -98,7 +95,7 @@
   `(ff:def-foreign-type ,name (:struct ,@(process-struct-fields name fields)))
   #+lispworks
   `(fli:define-c-struct ,name ,@(process-struct-fields name fields))
-  #+(and mcl (not openmcl))
+  #+digitool
   `(ccl:defrecord ,name ,@(process-struct-fields name fields))
   #+openmcl
   `(ccl::def-foreign-type
@@ -117,15 +114,15 @@
   `(alien:slot ,obj ,slot)
   #+sbcl
   `(sb-alien:slot ,obj ,slot)
-  #+mcl
+  #+(or openmcl digitool)
   `(ccl:pref ,obj ,(read-from-string (format nil ":~a.~a" (keyword type) (keyword slot))))
   )
 
-#+mcl
+#+(or openmcl digitool)
 (defmacro set-slot-value (obj type slot value) ;use setf to set values
   `(setf (ccl:pref ,obj ,(read-from-string (format nil ":~a.~a" (keyword type) (keyword slot)))) ,value))
 
-#+mcl
+#+(or openmcl digitool)
 (defsetf get-slot-value set-slot-value)
 
 
@@ -139,42 +136,54 @@
   `(alien:slot ,obj ,slot)
   #+sbcl
   `(sb-alien:slot ,obj ,slot)
-  #+(and mcl (not openmcl))
+  #+digitool
   `(ccl:%int-to-ptr (+ (ccl:%ptr-to-int ,obj) (the fixnum (ccl:field-info ,type ,slot))))
   #+openmcl
   `(let ((field (ccl::%find-foreign-record-type-field ,type ,slot)))
      (ccl:%int-to-ptr (+ (ccl:%ptr-to-int ,obj) (the fixnum (ccl::foreign-record-field-offset field)))))  
 )
 
-; so we could allow '(:array :long) or deref with other type like :long only
-#+mcl
-(defun array-type (type)
-  (let ((result type))
-    (when (listp type)
-      (let ((type-list (if (eq (car type) 'quote) (nth 1 type) type)))
-        (when (and (listp type-list) (eq (car type-list) :array))
-          (setf result (cadr type-list)))))
-    result))
-
-
-(defmacro deref-array (obj type i)
-  "Returns a field from a row"
-  #+(or lispworks cmu sbcl scl) (declare (ignore type))
-  #+(or cmu scl)  `(alien:deref ,obj ,i)
-  #+sbcl  `(sb-alien:deref ,obj ,i)
-  #+lispworks `(fli:dereference ,obj :index ,i :copy-foreign-object nil)
-  #+allegro `(ff:fslot-value-typed (quote ,(convert-from-uffi-type type :type)) :c ,obj ,i)
-  #+mcl
-  (let* ((array-type (array-type type))
-         (local-type (convert-from-uffi-type array-type :allocation))
-         (accessor (first (macroexpand `(ccl:pref obj ,local-type)))))
-    `(,accessor 
-      ,obj
-      (* (the fixnum ,i) ,(size-of-foreign-type local-type))))
-  )
-
+;; necessary to eval at compile time for openmcl to compile convert-from-foreign-usb8
+;; below
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  ;; so we could allow '(:array :long) or deref with other type like :long only
+  #+(or openmcl digitool)
+  (defun array-type (type)
+    (let ((result type))
+      (when (listp type)
+	(let ((type-list (if (eq (car type) 'quote) (nth 1 type) type)))
+	  (when (and (listp type-list) (eq (car type-list) :array))
+	    (setf result (cadr type-list)))))
+      result))
+  
+  
+  (defmacro deref-array (obj type i)
+    "Returns a field from a row"
+    #+(or lispworks cmu sbcl scl) (declare (ignore type))
+    #+(or cmu scl)  `(alien:deref ,obj ,i)
+    #+sbcl `(sb-alien:deref ,obj ,i)
+    #+lispworks `(fli:dereference ,obj :index ,i :copy-foreign-object nil)
+    #+allegro `(ff:fslot-value-typed (quote ,(convert-from-uffi-type type :type)) :c ,obj ,i)
+    #+openmcl
+    (let* ((array-type (array-type type))
+	   (local-type (convert-from-uffi-type array-type :allocation))
+	   (element-size-in-bits (ccl::%foreign-type-or-record-size local-type :bits)))
+      (ccl::%foreign-access-form
+       obj
+       (ccl::%foreign-type-or-record local-type)
+       `(* ,i ,element-size-in-bits)
+       nil))
+    #+digitool
+    (let* ((array-type (array-type type))
+	   (local-type (convert-from-uffi-type array-type :allocation))
+	   (accessor (first (macroexpand `(ccl:pref obj ,local-type)))))
+      `(,accessor
+	,obj
+	(* (the fixnum ,i) ,(size-of-foreign-type local-type))))
+    ))
+  
 ; this expands to the %set-xx functions which has different params than %put-xx
-#+mcl
+#+digitool
 (defmacro deref-array-set (obj type i value)
   (let* ((array-type (array-type type))
          (local-type (convert-from-uffi-type array-type :allocation))
@@ -185,7 +194,7 @@
       (* (the fixnum ,i) ,(size-of-foreign-type local-type)) 
       ,value)))
 
-#+mcl
+#+digitool
 (defsetf deref-array deref-array-set)
 
 (defmacro def-union (name &rest fields)
@@ -197,9 +206,57 @@
   `(alien:def-alien-type ,name (alien:union ,name ,@(process-struct-fields name fields)))
   #+sbcl
   `(sb-alien:define-alien-type ,name (sb-alien:union ,name ,@(process-struct-fields name fields)))
-  #+(and mcl (not openmcl))
+  #+digitool
   `(ccl:defrecord ,name (:variant ,@(process-struct-fields name fields t)))
   #+openmcl
   `(ccl::def-foreign-type nil 
 			  (:union ,name ,@(process-struct-fields name fields)))
 )
+
+
+#-(or sbcl cmu)
+(defun convert-from-foreign-usb8 (s len)
+  (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
+	   (fixnum len))
+  (let ((a (make-array len :element-type '(unsigned-byte 8))))
+    (dotimes (i len a)
+      (declare (fixnum i))
+      (setf (aref a i) (uffi:deref-array s '(:array :unsigned-byte) i)))))
+
+#+sbcl
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (sb-ext:without-package-locks
+      (defvar *system-copy-fn* (if (fboundp (intern "COPY-FROM-SYSTEM-AREA" "SB-KERNEL"))
+				   (intern "COPY-FROM-SYSTEM-AREA" "SB-KERNEL")
+				   (intern "COPY-UB8-FROM-SYSTEM-AREA" "SB-KERNEL")))
+    (defconstant +system-copy-offset+ (if (fboundp (intern "COPY-FROM-SYSTEM-AREA" "SB-KERNEL"))
+					  (* sb-vm:vector-data-offset sb-vm:n-word-bits)
+					  0))
+    (defconstant +system-copy-multiplier+ (if (fboundp (intern "COPY-FROM-SYSTEM-AREA" "SB-KERNEL"))
+					      sb-vm:n-byte-bits
+					      1))))
+  
+
+#+sbcl
+(defun convert-from-foreign-usb8 (s len)
+  (let ((sap (sb-alien:alien-sap s)))
+    (declare (type sb-sys:system-area-pointer sap))
+    (locally
+     (declare (optimize (speed 3) (safety 0)))
+     (let ((result (make-array len :element-type '(unsigned-byte 8))))
+       (funcall *system-copy-fn* sap 0 result +system-copy-offset+
+		(* len +system-copy-multiplier+))
+       result))))
+
+#+cmu
+(defun convert-from-foreign-usb8 (s len)
+  (let ((sap (alien:alien-sap s)))
+    (declare (type system:system-area-pointer sap))
+    (locally
+	(declare (optimize (speed 3) (safety 0)))
+      (let ((result (make-array len :element-type '(unsigned-byte 8))))
+	(kernel:copy-from-system-area sap 0
+				      result (* vm:vector-data-offset
+						vm:word-bits)
+				      (* len vm:byte-bits))
+	result))))

Modified: trunk/thirdparty/uffi/src/functions.lisp
===================================================================
--- trunk/thirdparty/uffi/src/functions.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/functions.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,25 +7,22 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: functions.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:uffi)
 
 (defun process-function-args (args)
   (if (null args)
-      #+(or lispworks cmu sbcl scl cormanlisp (and mcl (not openmcl))) nil
+      #+(or lispworks cmu sbcl scl cormanlisp digitool) nil
       #+allegro '(:void)
       #+openmcl (values nil nil)
 
       ;; args not null
-      #+(or lispworks allegro cmu sbcl scl (and mcl (not openmcl)) cormanlisp)
+      #+(or lispworks allegro cmu sbcl scl digitool cormanlisp)
       (let (processed)
 	(dolist (arg args)
 	  (push (process-one-function-arg arg) processed))
@@ -48,8 +45,9 @@
   (let ((name (car arg))
 	(type (convert-from-uffi-type (cadr arg) :routine)))
     #+(or cmu sbcl scl)
-    (list name type :in)
-    #+(or allegro lispworks (and mcl (not openmcl)))
+    ;(list name type :in)
+    `(,name ,type ,@(if (= (length arg) 3) (list (third arg)) (values)))
+    #+(or allegro lispworks digitool)
     (if (and (listp type) (listp (car type)))
 	(append (list name) type)
       (list name type))
@@ -63,10 +61,116 @@
       (list type)
     type))
 
+(defun funcallable-lambda-list (args)
+  (let ((ll nil))
+    (dolist (arg args)
+      (push (car arg) ll))
+    (nreverse ll)))
+
+#|
+(defmacro def-funcallable (name args &key returning)
+  (let ((result-type (convert-from-uffi-type returning :return))
+	(function-args (process-function-args args)))
+    #+lispworks
+    `(fli:define-foreign-funcallable ,name ,function-args
+      :result-type ,result-type
+      :language :ansi-c
+      :calling-convention :cdecl)
+    #+(or cmu scl sbcl)
+    ;; requires the type of the function pointer be declared correctly!
+    (let* ((ptrsym (gensym))
+	   (ll (funcallable-lambda-list args)))
+      `(defun ,name ,(cons ptrsym ll)
+	(alien::alien-funcall ,ptrsym , at ll)))
+    #+openmcl
+    (multiple-value-bind (params args) (process-function-args args)
+      (let ((ptrsym (gensym)))
+	`(defun ,name ,(cons ptrsym params)
+	  (ccl::ff-call ,ptrsym , at args ,result-type))))
+    #+allegro
+    ;; this is most definitely wrong
+    (let* ((ptrsym (gensym))
+	   (ll (funcallable-lambda-list args)))
+      `(defun ,name ,(cons ptrsym ll)
+	(system::ff-funcall ,ptrsym , at ll)))
+    ))
+|#    
+
+(defun convert-lispworks-args (args)
+  (loop for arg in args
+	with processed = nil
+	do
+	(if (and (= (length arg) 3) (eq (third arg) :out))
+	    (push (list (first arg)
+			(list :reference-return (second arg))) processed)
+	    (push (subseq arg 0 2) processed))
+	finally (return processed)))
+
+(defun preprocess-names (names)
+  (let ((fname (gensym)))
+    (if (atom names)
+	(values (list names fname) fname (uffi::make-lisp-name names))
+	(values (list (first names) fname) fname (second names)))))
+
+(defun preprocess-args (args)
+  (loop for arg in args
+	with lisp-args = nil and out = nil and processed = nil
+	do
+	(if (= (length arg) 3)
+	    (ecase (third arg)
+	      (:in 
+	       (progn
+		 (push (first arg) lisp-args)
+		 (push (list (first arg) (second arg)) processed)))
+	      (:out
+	       (progn
+		 (push (list (first arg) (second arg)) out)
+		 (push (list (first arg) (list '* (second arg))) processed))))
+	    (progn
+	      (push (first arg) lisp-args)
+	      (push arg processed)))
+	finally (return (values (nreverse lisp-args) 
+				(nreverse out) 
+				(nreverse processed)))))
+
+
+(defmacro def-function (names args &key module returning)
+  (multiple-value-bind (lisp-args out processed)
+      (preprocess-args args)
+    (declare (ignorable lisp-args processed))
+    (if (= (length out) 0)
+	`(%def-function ,names ,args 
+	  ,@(if module (list :module module) (values))
+	  ,@(if returning (list :returning returning) (values)))
+
+	#+(or cmu scl sbcl)
+	`(%def-function ,names ,args 
+	  ,@(if returning (list :returning returning) (values)))
+	#+lispworks
+	`(%def-function ,names ,(convert-lispworks-args args) 
+	  ,@(if module (list :module module) (values))
+	  ,@(if returning (list :returning returning) (values)))
+	#-(or cmu scl sbcl lispworks)
+	(multiple-value-bind (name-pair fname lisp-name)
+	    (preprocess-names names)
+	  `(prog1
+	    (%def-function ,name-pair ,processed 
+	     :module ,module :returning ,returning)
+	    ;(declaim (inline ,fname))
+	    (defun ,lisp-name ,lisp-args
+	      (with-foreign-objects ,out
+		(values (,fname ,@(mapcar #'first args))
+			,@(mapcar #'(lambda (arg)
+				      (list 'deref-pointer
+					    (first arg)
+					    (second arg))) out))))))
+	)))
+	
+
 ;; name is either a string representing foreign name, or a list
 ;; of foreign-name as a string and lisp name as a symbol
-(defmacro def-function (names args &key module returning)
-  #+(or cmu sbcl scl allegro mcl cormanlisp) (declare (ignore module))
+(defmacro %def-function (names args &key module returning)
+  #+(or cmu sbcl scl allegro openmcl digitool cormanlisp) (declare (ignore module))
   
   (let* ((result-type (convert-from-uffi-type returning :return))
 	 (function-args (process-function-args args))
@@ -94,8 +198,8 @@
        ,@(if module (list :module module) (values))
        :result-type ,result-type
       :language :ansi-c
-       :calling-convention :cdecl)
-    #+(and mcl (not openmcl))
+       #+:win32 :calling-convention #+:win32 :cdecl)
+    #+digitool
     `(eval-when (:compile-toplevel :load-toplevel :execute)
        (ccl:define-entry-point (,lisp-name ,foreign-name)
          ,function-args
@@ -117,10 +221,5 @@
     ))
 
 
-(defun make-lisp-name (name)
-  (let ((converted (substitute #\- #\_ name)))
-     (intern 
-      #+case-sensitive converted
-      #-case-sensitive (string-upcase converted))))
 
 

Modified: trunk/thirdparty/uffi/src/libraries.lisp
===================================================================
--- trunk/thirdparty/uffi/src/libraries.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/libraries.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,10 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: libraries.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:uffi)
@@ -23,9 +20,9 @@
 
 (defun default-foreign-library-type ()
   "Returns string naming default library type for platform"
-  #+(or win32 mswindows) "dll"
+  #+(or win32 cygwin mswindows) "dll"
   #+(or macosx darwin ccl-5.0) "dylib"
-  #-(or win32 mswindows macosx darwin ccl-5.0) "so"
+  #-(or win32 cygwin mswindows macosx darwin ccl-5.0) "so"
 )
 
 (defun foreign-library-types ()
@@ -35,7 +32,7 @@
   #-(or win32 mswindows macosx darwin ccl-5.0) '("so" "a" "o")
 )
 
-(defun find-foreign-library (names directories &key types drive-letters)  
+(defun find-foreign-library (names directories &key types drive-letters)
   "Looks for a foreign library. directories can be a single
 string or a list of strings of candidate directories. Use default
 library type if type is not specified."
@@ -56,21 +53,21 @@
     (dolist (name names)
       (dolist (dir directories)
 	(dolist (type types)
-	  (let ((path (make-pathname 
+	  (let ((path (make-pathname
 		       #+lispworks :host
 		       #+lispworks (when drive-letter drive-letter)
 		       #-lispworks :device
 		       #-lispworks (when drive-letter drive-letter)
-		       :name name 
+		       :name name
 		       :type type
-		       :directory 
+		       :directory
 		       (etypecase dir
 			 (pathname
 			  (pathname-directory dir))
 			 (list
 			  dir)
 			 (string
-			  (pathname-directory 
+			  (pathname-directory
 			   (parse-namestring dir)))))))
 	    (when (probe-file path)
 	      (return-from find-foreign-library path)))))))
@@ -79,13 +76,19 @@
 
 (defun load-foreign-library (filename &key module supporting-libraries
 					   force-load)
-  #+(or allegro mcl) (declare (ignore module supporting-libraries))
-  #+(or cmu scl sbcl) (declare (ignore module))
-  
-  (when (and filename (probe-file filename))
-    (if (pathnamep filename)    ;; ensure filename is a string to check if
-	(setq filename (namestring filename)))  ; already loaded
+  #+(or allegro openmcl digitool sbcl) (declare (ignore module supporting-libraries))
+  #+(or cmu scl) (declare (ignore module))
+  #+lispworks (declare (ignore supporting-libraries))
 
+  (when (and filename (or (null (pathname-directory filename))
+                          (probe-file filename)))
+    (if (pathnamep filename)    ;; ensure filename is a string to check if already loaded
+	(setq filename (namestring (if (null (pathname-directory filename))
+				       filename
+				       ;; lispworks treats as UNC, so use truename
+				       #+(and lispworks win32) (truename filename)
+				       #-(and lispworks win32) filename))))
+
     (if (and (not force-load)
 	     (find filename *loaded-libraries* :test #'string-equal))
 	t ;; return T, but don't reload library
@@ -94,31 +97,29 @@
 	(let ((type (pathname-type (parse-namestring filename))))
 	  (if (string-equal type "so")
 	      (sys::load-object-file filename)
-	      (alien:load-foreign filename 
+	      (alien:load-foreign filename
 				  :libraries
 				  (convert-supporting-libraries-to-string
 				   supporting-libraries))))
 	#+scl
 	(let ((type (pathname-type (parse-namestring filename))))
-	  (alien:load-foreign filename 
+	  (alien:load-foreign filename
 			      :libraries
 			      (convert-supporting-libraries-to-string
 			       supporting-libraries)))
 	#+sbcl
-	(let ((type (pathname-type (parse-namestring filename))))
-	  (if (or (string-equal type "so")
-		  (string-equal type "bundle")
-		  (string-equal type "dylib"))
-	      (sb-alien::load-1-foreign filename)
-	      (sb-alien:load-foreign filename 
-				     :libraries
-				     (convert-supporting-libraries-to-string
-				      supporting-libraries))))
-	#+lispworks (fli:register-module module :real-name filename)
+	(handler-case (sb-alien::load-1-foreign filename)
+	  (sb-int:unsupported-operator (c)
+	    (if (fboundp (intern "LOAD-SHARED-OBJECT" :sb-alien))
+		(funcall (intern "LOAD-SHARED-OBJECT" :sb-alien) filename)
+		(error c))))
+
+	#+lispworks (fli:register-module module :real-name filename
+                                                :connection-style :immediate)
 	#+allegro (load filename)
 	#+openmcl (ccl:open-shared-library filename)
-	#+(and mcl (not openmcl)) (ccl:add-to-shared-library-search-path filename t)
-	
+	#+digitool (ccl:add-to-shared-library-search-path filename t)
+
 	(push filename *loaded-libraries*)
 	t))))
 

Modified: trunk/thirdparty/uffi/src/objects.lisp
===================================================================
--- trunk/thirdparty/uffi/src/objects.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/objects.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,32 +7,29 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: objects.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:uffi)
 
-(defun size-of-foreign-type (type)
-  #+lispworks (fli:size-of type)
-  #+allegro (ff:sizeof-fobject type)
-  #+(or cmu scl)  (ash (eval `(alien:alien-size ,type)) -3) ;; convert from bits to bytes
-  #+sbcl  (ash (eval `(sb-alien:alien-size ,type)) -3) ;; convert from bits to bytes
-  #+clisp (values (ffi:size-of type))
-  #+(and mcl (not openmcl))
-  (let ((mcl-type (ccl:find-mactype type nil t)))
-    (if mcl-type 
-	(ccl::mactype-record-size mcl-type)
-      (ccl::record-descriptor-length (ccl:find-record-descriptor type t t)))) ;error if not a record
-  #+openmcl (ccl::%foreign-type-or-record-size type :bytes)
-  )
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (defun size-of-foreign-type (type)
+    #+lispworks (fli:size-of type)
+    #+allegro (ff:sizeof-fobject type)
+    #+(or cmu scl)  (ash (eval `(alien:alien-size ,type)) -3) ;; convert from bits to bytes
+    #+sbcl  (ash (eval `(sb-alien:alien-size ,type)) -3) ;; convert from bits to bytes
+    #+clisp (values (ffi:size-of type))
+    #+digitool
+    (let ((mcl-type (ccl:find-mactype type nil t)))
+      (if mcl-type
+	  (ccl::mactype-record-size mcl-type)
+	  (ccl::record-descriptor-length (ccl:find-record-descriptor type t t)))) ;error if not a record
+    #+openmcl (ccl::%foreign-type-or-record-size type :bytes)
+    ))
 
-
 (defmacro allocate-foreign-object (type &optional (size :unspecified))
   "Allocates an instance of TYPE. If size is specified, then allocate
 an array of TYPE with size SIZE. The TYPE parameter is evaluated."
@@ -46,7 +43,7 @@
 	`(fli:allocate-foreign-object :type ',(convert-from-uffi-type type :allocate))
 	#+allegro
 	`(ff:allocate-fobject ',(convert-from-uffi-type type :allocate) :c)
-	#+mcl
+	#+(or openmcl digitool)
 	`(new-ptr ,(size-of-foreign-type (convert-from-uffi-type type :allocation)))
 	)
       (progn
@@ -58,7 +55,7 @@
 	`(fli:allocate-foreign-object :type ',(convert-from-uffi-type type :allocate) :nelems ,size)
 	#+allegro
 	`(ff:allocate-fobject (list :array (quote ,(convert-from-uffi-type type :allocate)) ,size) :c)
-	#+mcl
+	#+(or openmcl digitool)
 	`(new-ptr (* ,size ,(size-of-foreign-type (convert-from-uffi-type type :allocation))))
 	)))
 
@@ -71,7 +68,7 @@
   `(fli:free-foreign-object ,obj)
   #+allegro
   `(ff:free-fobject ,obj)
-  #+mcl
+  #+(or openmcl digitool)
   `(dispose-ptr ,obj)
   )
 
@@ -80,25 +77,35 @@
   #+allegro `(zerop ,obj)
   #+(or cmu scl)   `(alien:null-alien ,obj)
   #+sbcl   `(sb-alien:null-alien ,obj)
-  #+mcl   `(ccl:%null-ptr-p ,obj)
+  #+(or openmcl digitool)   `(ccl:%null-ptr-p ,obj)
   )
 
 (defmacro make-null-pointer (type)
-  #+(or allegro mcl) (declare (ignore type))
+  #+(or allegro openmcl digitool) (declare (ignore type))
   #+(or cmu scl) `(alien:sap-alien (system:int-sap 0) (* ,(convert-from-uffi-type (eval type) :type)))
   #+sbcl `(sb-alien:sap-alien (sb-sys:int-sap 0) (* ,(convert-from-uffi-type (eval type) :type)))
   #+lispworks `(fli:make-pointer :address 0 :type (quote ,(convert-from-uffi-type (eval type) :type)))
   #+allegro 0
-  #+mcl `(ccl:%null-ptr)
+  #+(or openmcl digitool) `(ccl:%null-ptr)
   )
 
+(defmacro make-pointer (addr type)
+  #+(or allegro openmcl digitool) (declare (ignore type))
+  #+(or cmu scl) `(alien:sap-alien (system:int-sap ,addr) (* ,(convert-from-uffi-type (eval type) :type)))
+  #+sbcl `(sb-alien:sap-alien (sb-sys:int-sap ,addr) (* ,(convert-from-uffi-type (eval type) :type)))
+  #+lispworks `(fli:make-pointer :address ,addr :type (quote ,(convert-from-uffi-type (eval type) :type)))
+  #+allegro addr
+  #+(or openmcl digitool) `(ccl:%int-to-ptr ,addr)
+  )
+
+
 (defmacro char-array-to-pointer (obj)
   #+(or cmu scl) `(alien:cast ,obj (* (alien:unsigned 8)))
   #+sbcl `(sb-alien:cast ,obj (* (sb-alien:unsigned 8)))
   #+lispworks `(fli:make-pointer :type '(:unsigned :char)
 				:address (fli:pointer-address ,obj))
   #+allegro obj
-  #+mcl obj
+  #+(or openmcl digitool) obj
   )
 
 (defmacro deref-pointer (ptr type)
@@ -108,35 +115,33 @@
   #+sbcl  `(sb-alien:deref ,ptr)
   #+lispworks `(fli:dereference ,ptr)
   #+allegro `(ff:fslot-value-typed (quote ,(convert-from-uffi-type type :deref)) :c ,ptr)
-  #+mcl `(ccl:pref ,ptr ,(convert-from-uffi-type type :deref))
+  #+(or openmcl digitool) `(ccl:pref ,ptr ,(convert-from-uffi-type type :deref))
   )
 
-#+mcl
+#+digitool
 (defmacro deref-pointer-set (ptr type value)
   `(setf (ccl:pref ,ptr ,(convert-from-uffi-type type :deref)) ,value))
 
-#+mcl
+#+digitool
 (defsetf deref-pointer deref-pointer-set)
 
-#+lispworks
 (defmacro ensure-char-character (obj)
-  `(if (characterp ,obj) ,obj (code-char ,obj)))
+  #+(or digitool) obj
+  #+(or allegro cmu sbcl scl openmcl) `(code-char ,obj)
+  ;; lispworks varies whether deref'ing array vs. slot access of a char
+  #+lispworks `(if (characterp ,obj) ,obj (code-char ,obj)))
 
-#+(and mcl (not openmcl)) 
-(defmacro ensure-char-character (obj)
-  obj)
-
-#+(or allegro cmu sbcl scl openmcl)
-(defmacro ensure-char-character (obj)
-  `(code-char ,obj))
-  
-#+(or lispworks (and mcl (not openmcl)))
 (defmacro ensure-char-integer (obj)
- `(char-code ,obj))
+  #+(or digitool) `(char-code ,obj)
+  #+(or allegro cmu sbcl scl openmcl) obj
+  ;; lispworks varies whether deref'ing array vs. slot access of a char
+  #+lispworks
+  `(if (integerp ,obj) ,obj (char-code ,obj)))
 
-#+(or allegro cmu sbcl scl openmcl)
-(defmacro ensure-char-integer (obj)
-  obj)
+(defmacro ensure-char-storable (obj)
+  #+(or digitool (and lispworks (not lispworks5))) obj
+  #+(or allegro cmu lispworks5 openmcl sbcl scl)
+  `(char-code ,obj))
 
 (defmacro pointer-address (obj)
   #+(or cmu scl)
@@ -147,12 +152,12 @@
   `(fli:pointer-address ,obj)
   #+allegro
   obj
-  #+mcl
-  `(ccl:%ptr-to-int ,obj)  
+  #+(or openmcl digitool)
+  `(ccl:%ptr-to-int ,obj)
   )
 
 ;; TYPE is evaluated.
-#-mcl
+#-(or openmcl digitool)
 (defmacro with-foreign-object ((var type) &rest body)
   #-(or cmu sbcl lispworks scl) ; default version
   `(let ((,var (allocate-foreign-object ,type)))
@@ -160,22 +165,32 @@
 	 (progn , at body)
       (free-foreign-object ,var)))
   #+(or cmu scl)
-  (let ((obj (gensym)))
-    `(alien:with-alien ((,obj ,(convert-from-uffi-type (eval type) :allocate)))
-       (let ((,var (alien:addr ,obj)))
-	 , at body)))
+  (let ((obj (gensym))
+	(ctype (convert-from-uffi-type (eval type) :allocate)))
+    (if (and (consp ctype) (eq 'array (car ctype)))
+	`(alien:with-alien ((,obj ,ctype))
+	  (let* ((,var ,obj))
+	    , at body))
+	`(alien:with-alien ((,obj ,ctype))
+	  (let* ((,var (alien:addr ,obj)))
+	    , at body))))
   #+sbcl
-  (let ((obj (gensym)))
-    `(sb-alien:with-alien ((,obj ,(convert-from-uffi-type (eval type) :allocate)))
-       (let ((,var (sb-alien:addr ,obj)))
-	 , at body)))
+  (let ((obj (gensym))
+	(ctype (convert-from-uffi-type (eval type) :allocate)))
+    (if (and (consp ctype) (eq 'array (car ctype)))
+	`(sb-alien:with-alien ((,obj ,ctype))
+	  (let* ((,var ,obj))
+	    , at body))
+	`(sb-alien:with-alien ((,obj ,ctype))
+	  (let* ((,var (sb-alien:addr ,obj)))
+	    , at body))))
   #+lispworks
   `(fli:with-dynamic-foreign-objects ((,var ,(convert-from-uffi-type
 					      (eval type) :allocate)))
     , at body)
   )
 
-#-mcl
+#-(or openmcl digitool)
 (defmacro with-foreign-objects (bindings &rest body)
   (if bindings
       `(with-foreign-object ,(car bindings)
@@ -183,7 +198,7 @@
 	  , at body))
       `(progn , at body)))
 
-#+mcl
+#+(or openmcl digitool)
 (defmacro with-foreign-objects (bindings &rest body)
   (let ((params nil) type count)
     (dolist (spec (reverse bindings)) ;keep order - macroexpands to let*
@@ -195,10 +210,10 @@
         (setf type (nth 1 type)))
       (push (list (first spec) (* count (size-of-foreign-type type))) params))
     `(ccl:%stack-block ,params , at body)))
-				 
-#+mcl
+
+#+(or openmcl digitool)
 (defmacro with-foreign-object ((var type) &rest body)
-  `(with-foreign-objects ((,var ,type)) 
+  `(with-foreign-objects ((,var ,type))
      , at body))
 
 #+lispworks
@@ -216,18 +231,24 @@
            ,pointer (* ,(convert-from-uffi-type (eval type) :type)))))
     , at body))
 
-#+allegro
+#+(or allegro openmcl)
 (defmacro with-cast-pointer ((binding-name pointer type) &body body)
   (declare (ignore type))
   `(let ((,binding-name ,pointer))
     , at body))
 
-#-(or lispworks cmu scl sbcl allegro)
+#-(or lispworks cmu scl sbcl allegro openmcl)
 (defmacro with-cast-pointer ((binding-name pointer type) &body body)
-  (declare (ignore binding-name pointer type))
+  (declare (ignore binding-name pointer type body))
   '(error "WITH-CAST-POINTER not (yet) implemented for ~A"
           (lisp-implementation-type)))
 
+#+(or allegro openmcl)
+(defun convert-external-name (name)
+  "Add an underscore to NAME if necessary for the ABI."
+  #+(or macosx darwinppc-target) (concatenate 'string "_" name)
+  #-(or macosx darwinppc-target) name)
+
 (defmacro def-foreign-var (names type module)
   #-lispworks (declare (ignore module))
   (let ((foreign-name (if (atom names) names (first names)))
@@ -241,7 +262,7 @@
     #+allegro
     `(define-symbol-macro ,lisp-name
       (ff:fslot-value-typed (quote ,(convert-from-uffi-type type :deref))
-                            :c (ff:get-entry-point ,foreign-name)))
+                            :c (ff:get-entry-point ,(convert-external-name foreign-name))))
     #+lispworks
     `(progn
       (fli:define-foreign-variable (,lisp-name ,foreign-name)
@@ -250,7 +271,21 @@
                                     :module ,module)
       (define-symbol-macro ,lisp-name (fli:dereference (,lisp-name)
                                                         :copy-foreign-object nil)))
-    #-(or allegro cmu scl sbcl lispworks)
+    #+openmcl
     `(define-symbol-macro ,lisp-name
+       (deref-pointer (ccl:foreign-symbol-address
+                       ,(convert-external-name foreign-name)) ,var-type))
+    #-(or allegro cmu scl sbcl lispworks openmcl)
+    `(define-symbol-macro ,lisp-name
       '(error "DEF-FOREIGN-VAR not (yet) defined for ~A"
         (lisp-implementation-type)))))
+
+
+;;; Define a special variable, like DEFVAR, that will be initialized
+;;; to a pointer which may need to be reset when a saved image is
+;;; loaded.  This is needed for OpenMCL, which sets pointers to "dead
+;;; macptrs" when a saved image is loaded.
+;; This may possibly be needed for sbcl's SAVE-LISP-AND-DIE
+(defmacro def-pointer-var (name value &optional doc)
+  #-openmcl `(defvar ,name ,value ,@(if doc (list doc)))
+  #+openmcl `(ccl::defloadvar ,name ,value ,doc))

Modified: trunk/thirdparty/uffi/src/os.lisp
===================================================================
--- trunk/thirdparty/uffi/src/os.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/os.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,21 +5,32 @@
 ;;;; Name:          os.lisp
 ;;;; Purpose:       Operating system interface for UFFI
 ;;;; Programmer:    Kevin M. Rosenberg
-;;;; Date Started:  Sep 2002 
+;;;; Date Started:  Sep 2002
 ;;;;
-;;;; $Id: os.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg.
-;;;; Much of this code was taken from other open source project and copyright
-;;;; for that code is noted below where appropriate.
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg.
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:uffi)
 
+
+(defun getenv (var)
+  "Return the value of the environment variable."
+  #+allegro (sys::getenv (string var))
+  #+clisp (sys::getenv (string var))
+  #+cmu (cdr (assoc (string var) ext:*environment-list* :test #'equalp
+                    :key #'string))
+  #+gcl (si:getenv (string var))
+  #+lispworks (lw:environment-variable (string var))
+  #+lucid (lcl:environment-variable (string var))
+  #+(or openmcl digitool) (ccl::getenv var)
+  #+sbcl (sb-ext:posix-getenv var)
+  #-(or allegro clisp cmu gcl lispworks lucid openmcl digitool sbcl)
+  (error 'not-implemented :proc (list 'getenv var)))
+
+
 ;; modified from function ASDF -- Copyright Dan Barlow and Contributors
 
 (defun run-shell-command (control-string  &rest args &key output)
@@ -32,27 +43,27 @@
   (let ((command (apply #'format nil control-string args)))
     #+sbcl
     (sb-impl::process-exit-code
-     (sb-ext:run-program  
+     (sb-ext:run-program
       "/bin/sh"
       (list "-c" command)
       :input nil :output output))
-    
+
     #+(or cmu scl)
     (ext:process-exit-code
-     (ext:run-program  
+     (ext:run-program
       "/bin/sh"
       (list "-c" command)
       :input nil :output output))
 
     #+allegro
     (excl:run-shell-command command :input nil :output output)
-    
+
     #+lispworks
     (system:call-system-showing-output
      command
      :shell-type "/bin/sh"
      :output-stream output)
-    
+
     #+clisp				;XXX not exactly *trace-output*, I know
     (ext:run-shell-command  command :output :terminal :wait t)
 
@@ -64,5 +75,5 @@
 				 :wait t)))
 
     #-(or openmcl clisp lispworks allegro scl cmu sbcl)
-    (error "RUN-SHELL-PROGRAM not implemented for this Lisp")
+    (error "RUN-SHELL-PROGRAM not implemented for this Lisp.")
     ))

Modified: trunk/thirdparty/uffi/src/package.lisp
===================================================================
--- trunk/thirdparty/uffi/src/package.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/package.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,25 +7,22 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:cl-user)
 
 (defpackage #:uffi
   (:use #:cl)
-  (:export 
-   
+  (:export
+
    ;; immediate types
    #:def-constant
    #:def-foreign-type
    #:def-type
    #:null-char-p
-   
+
    ;; aggregate types
    #:def-enum
    #:def-struct
@@ -34,7 +31,7 @@
    #:def-array-pointer
    #:deref-array
    #:def-union
-   
+
    ;; objects
    #:allocate-foreign-object
    #:free-foreign-object
@@ -45,13 +42,18 @@
    #:deref-pointer
    #:ensure-char-character
    #:ensure-char-integer
+   #:ensure-char-storable
    #:null-pointer-p
    #:make-null-pointer
+   #:make-pointer
+   #:pointer-address
    #:+null-cstring-pointer+
    #:char-array-to-pointer
    #:with-cast-pointer
    #:def-foreign-var
-   
+   #:convert-from-foreign-usb8
+   #:def-pointer-var
+
    ;; string functions
    #:convert-from-cstring
    #:convert-to-cstring
@@ -62,7 +64,9 @@
    #:convert-to-foreign-string
    #:allocate-foreign-string
    #:with-foreign-string
-   
+   #:with-foreign-strings
+   #:foreign-string-length
+
    ;; function call
    #:def-function
 
@@ -70,9 +74,11 @@
    #:find-foreign-library
    #:load-foreign-library
    #:default-foreign-library-type
+   #:foreign-library-types
 
    ;; OS
    #:run-shell-command
+   #:getenv
    ))
 
 

Modified: trunk/thirdparty/uffi/src/primitives.lisp
===================================================================
--- trunk/thirdparty/uffi/src/primitives.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/primitives.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,21 +7,18 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: primitives.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:uffi)
 
-#+mcl
+#+(or openmcl digitool)
 (defvar *keyword-package* (find-package "KEYWORD"))
 
-#+mcl
+#+(or openmcl digitool)
 ; MCL and OpenMCL expect a lot of FFI elements to be keywords (e.g. struct field names in OpenMCL)
 ; So this provides a function to convert any quoted symbols to keywords.
 (defun keyword (obj)
@@ -39,7 +36,7 @@
          obj)))
 
 ; Wrapper for unexported function we have to use
-#+(and mcl (not openmcl))
+#+digitool
 (defmacro def-mcl-type (name type)
   `(ccl::def-mactype ,(keyword name) (ccl:find-mactype ,type)))
 
@@ -53,8 +50,8 @@
 (defmacro def-type (name type)
   "Generates a (deftype) statement for CL. Currently, only CMUCL
 supports takes advantage of this optimization."
-  #+(or lispworks allegro mcl cormanlisp)  (declare (ignore type))
-  #+(or lispworks allegro mcl cormanlisp) `(deftype ,name () t)
+  #+(or lispworks allegro openmcl digitool cormanlisp)  (declare (ignore type))
+  #+(or lispworks allegro openmcl digitool cormanlisp) `(deftype ,name () t)
   #+(or cmu scl)
   `(deftype ,name () '(alien:alien ,(convert-from-uffi-type type :declare)))
   #+sbcl
@@ -71,11 +68,11 @@
   #+(or cmu scl) `(alien:def-alien-type ,name ,(convert-from-uffi-type type :type))
   #+sbcl `(sb-alien:define-alien-type ,name ,(convert-from-uffi-type type :type))
   #+cormanlisp `(ct:defctype ,name ,(convert-from-uffi-type type :type))
-  #+mcl
+  #+(or openmcl digitool)
   (let ((mcl-type (convert-from-uffi-type type :type)))
     (unless (or (keywordp mcl-type) (consp mcl-type))
       (setf mcl-type `(quote ,mcl-type)))
-    #+(and mcl (not openmcl))
+    #+digitool
     `(def-mcl-type ,(keyword name) ,mcl-type)
     #+openmcl
     `(ccl::def-foreign-type ,(keyword name) ,mcl-type))  
@@ -87,9 +84,6 @@
 			(make-hash-table :size 20 :test #'eq))
   )
 
-#+(or cmu sbcl scl)
-(defvar *cmu-sbcl-def-type-list* nil)
-
 #+(or cmu scl)
 (defvar *cmu-sbcl-def-type-list*
     '((:char . (alien:signed 8))
@@ -100,12 +94,16 @@
       (:unsigned-short . (alien:unsigned 16))
       (:int . (alien:signed 32))
       (:unsigned-int . (alien:unsigned 32))
-      (:long . (alien:signed 32))
-      (:unsigned-long . (alien:unsigned 32))
+      #-x86-64 (:long . (alien:signed 32))
+      #-x86-64 (:unsigned-long . (alien:unsigned 32))
+      #+x86-64 (:long . (alien:signed 64))
+      #+x86-64 (:unsigned-long . (alien:unsigned 64))
       (:float . alien:single-float)
       (:double . alien:double-float)
+      (:void . t)
       )
   "Conversions in CMUCL for def-foreign-type are different than in def-function")
+
 #+sbcl
 (defvar *cmu-sbcl-def-type-list*
     '((:char . (sb-alien:signed 8))
@@ -116,10 +114,13 @@
       (:unsigned-short . (sb-alien:unsigned 16))
       (:int . (sb-alien:signed 32))
       (:unsigned-int . (sb-alien:unsigned 32))
-      (:long . (sb-alien:signed 32))
-      (:unsigned-long . (sb-alien:unsigned 32))
+      #-x86-64 (:long . (sb-alien:signed 32))
+      #-x86-64 (:unsigned-long . (sb-alien:unsigned 32))
+      #+x86-64 (:long . (sb-alien:signed 64))
+      #+x86-64 (:unsigned-long . (sb-alien:unsigned 64))
       (:float . sb-alien:single-float)
       (:double . sb-alien:double-float)
+      (:void . t)
       )
   "Conversions in SBCL for def-foreign-type are different than in def-function")
 
@@ -145,14 +146,15 @@
 (setq *type-conversion-list*
     '((* . *) (:void . sb-alien:void) 
       (:pointer-void . (* t))
-      (:cstring . sb-alien:c-string)
+      #-sb-unicode(:cstring . sb-alien:c-string)
+      #+sb-unicode(:cstring . sb-alien:utf8-string)
       (:char . sb-alien:char) 
       (:unsigned-char . (sb-alien:unsigned 8))
       (:byte . (sb-alien:signed 8))
       (:unsigned-byte . (sb-alien:unsigned 8))
       (:short . sb-alien:short)
       (:unsigned-short . sb-alien:unsigned-short)
-      (:int . sb-alien:integer) (:unsigned-int . sb-alien:unsigned-int) 
+      (:int . sb-alien:int) (:unsigned-int . sb-alien:unsigned-int) 
       (:long . sb-alien:long) (:unsigned-long . sb-alien:unsigned-long)
       (:float . sb-alien:float) (:double . sb-alien:double)
       (:array . sb-alien:array)))
@@ -192,7 +194,7 @@
       (:float . :float) (:double . :double)
       (:array . :c-array)))
 
-#+(and mcl (not openmcl))
+#+digitool
 (setq *type-conversion-list*
      '((* . :pointer) (:void . :void)
        (:short . :short) (:unsigned-short . :unsigned-short)
@@ -232,8 +234,8 @@
   (let ((found-type (gethash type +type-conversion-hash+)))
     (if found-type
 	found-type
-      #-mcl type
-      #+mcl (keyword type))))
+      #-(or openmcl digitool) type
+      #+(or openmcl digitool) (keyword type))))
 
 (defun %convert-from-uffi-type (type context)
   "Converts from a uffi type to an implementation specific type"
@@ -253,7 +255,7 @@
        ((and (eq context :return)
 	     (eq type :cstring))
 	(basic-convert-from-uffi-type :cstring-returning))
-       #+(and mcl (not openmcl))
+       #+digitool
        ((and (eq type :void) (eq context :return)) nil)
        (t
 	(basic-convert-from-uffi-type type)))
@@ -262,16 +264,20 @@
 	(cl:quote
 	 (convert-from-uffi-type (cadr type) context))
 	(:struct-pointer
-	 #+mcl `(:* (:struct ,(%convert-from-uffi-type (cadr type) :struct)))
-	 #-mcl (%convert-from-uffi-type (list '* (cadr type)) :struct)
+	 #+(or openmcl digitool) `(:* (:struct ,(%convert-from-uffi-type (cadr type) :struct)))
+	 #-(or openmcl digitool) (%convert-from-uffi-type (list '* (cadr type)) :struct)
 	 )
 	(:struct
-	 #+mcl `(:struct ,(%convert-from-uffi-type (cadr type) :struct))
-	 #-mcl (%convert-from-uffi-type (cadr type) :struct)
+	 #+(or openmcl digitool) `(:struct ,(%convert-from-uffi-type (cadr type) :struct))
+	 #-(or openmcl digitool) (%convert-from-uffi-type (cadr type) :struct)
 	 )
-	(t
-	 (cons (%convert-from-uffi-type (first type) context) 
-	       (%convert-from-uffi-type (rest type) context)))))))
+       (:union
+	#+(or openmcl digitool) `(:union ,(%convert-from-uffi-type (cadr type) :union))
+	#-(or openmcl digitool) (%convert-from-uffi-type (cadr type) :union)
+	)
+       (t
+	(cons (%convert-from-uffi-type (first type) context) 
+	      (%convert-from-uffi-type (rest type) context)))))))
 
 (defun convert-from-uffi-type (type context)
   (let ((result (%convert-from-uffi-type type context)))
@@ -282,7 +288,24 @@
       (if (eq context :struct)
 	  (append '(:*) (cdr result))
 	:address))
-     #+(and mcl (not openmcl))
+     #+digitool
      ((and (eq (car result) :pointer) (eq context :allocation) :pointer))
      (t result))))
 
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (when (char= #\a (schar (symbol-name '#:a) 0))
+    (pushnew :uffi-lowercase-reader *features*))
+  (when (not (string= (symbol-name '#:a)
+		      (symbol-name '#:A)))
+    (pushnew :uffi-case-sensitive *features*)))
+
+(defun make-lisp-name (name)
+  (let ((converted (substitute #\- #\_ name)))
+     (intern 
+      #+uffi-case-sensitive converted
+      #+(and (not uffi-lowercase-reader) (not uffi-case-sensitive)) (string-upcase converted)
+      #+(and uffi-lowercase-reader (not uffi-case-sensitive)) (string-downcase converted))))
+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (setq cl:*features* (delete :uffi-lowercase-reader *features*))
+  (setq cl:*features* (delete :uffi-case-sensitive *features*)))

Modified: trunk/thirdparty/uffi/src/readmacros-mcl.lisp
===================================================================
--- trunk/thirdparty/uffi/src/readmacros-mcl.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/readmacros-mcl.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,24 +7,21 @@
 ;;;; Programmer:    Kevin M. Rosenberg/John Desoi
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: readmacros-mcl.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:uffi)
 
 
 ;; trap macros don't work right directly in the macros
-#+(and mcl (not openmcl))
+#+digitool
 (defun new-ptr (size)
   (#_NewPtr size))
 
-#+(and mcl (not openmcl))
+#+digitool
 (defun dispose-ptr (ptr)
   (#_DisposePtr ptr))
 

Modified: trunk/thirdparty/uffi/src/strings.lisp
===================================================================
--- trunk/thirdparty/uffi/src/strings.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/src/strings.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,36 +7,32 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: strings.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
-;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;; *************************************************************************
 
 (in-package #:uffi)
 
 
-(defvar +null-cstring-pointer+
+(def-pointer-var +null-cstring-pointer+
     #+(or cmu sbcl scl) nil
     #+allegro 0
     #+lispworks (fli:make-pointer :address 0 :type '(:unsigned :char))
-    #+mcl (ccl:%null-ptr)
+    #+(or openmcl digitool) (ccl:%null-ptr)
 )
 
 (defmacro convert-from-cstring (obj)
   "Converts a string from a c-call. Same as convert-from-foreign-string, except
 that LW/CMU automatically converts strings from c-calls."
   #+(or cmu sbcl lispworks scl) obj
-  #+allegro 
+  #+allegro
   (let ((stored (gensym)))
     `(let ((,stored ,obj))
        (if (zerop ,stored)
 	   nil
-	 (values (excl:native-to-string ,stored)))))
-  #+mcl 
+	   (values (excl:native-to-string ,stored)))))
+  #+(or openmcl digitool)
   (let ((stored (gensym)))
     `(let ((,stored ,obj))
        (if (ccl:%null-ptr-p ,stored)
@@ -47,41 +43,53 @@
 (defmacro convert-to-cstring (obj)
   #+(or cmu sbcl scl lispworks) obj
   #+allegro
-  `(if (null ,obj)
-    0
-    (values (excl:string-to-native ,obj)))
-  #+mcl
-  `(if (null ,obj)
-    +null-cstring-pointer+
-    (let ((ptr (new-ptr (1+ (length ,obj)))))
-      (ccl::%put-cstring ptr ,obj)
-      ptr))
+  (let ((stored (gensym)))
+    `(let ((,stored ,obj))
+       (if (null ,stored)
+	   0
+	   (values (excl:string-to-native ,stored)))))
+  #+(or openmcl digitool)
+  (let ((stored (gensym)))
+    `(let ((,stored ,obj))
+       (if (null ,stored)
+	   +null-cstring-pointer+
+	   (let ((ptr (new-ptr (1+ (length ,stored)))))
+	     (ccl::%put-cstring ptr ,stored)
+	     ptr))))
   )
 
 (defmacro free-cstring (obj)
   #+(or cmu sbcl scl lispworks) (declare (ignore obj))
   #+allegro
-  `(unless (zerop ,obj)
-     (ff:free-fobject ,obj))
-  #+mcl
-  `(unless (ccl:%null-ptr-p ,obj)
-     (dispose-ptr ,obj))
+  (let ((stored (gensym)))
+    `(let ((,stored ,obj))
+       (unless (zerop ,stored)
+	 (ff:free-fobject ,stored))))
+  #+(or openmcl digitool)
+  (let ((stored (gensym)))
+    `(let ((,stored ,obj))
+       (unless (ccl:%null-ptr-p ,stored)
+	 (dispose-ptr ,stored))))
   )
 
 (defmacro with-cstring ((cstring lisp-string) &body body)
   #+(or cmu sbcl scl lispworks)
-  `(let ((,cstring ,lisp-string)) , at body) 
+  `(let ((,cstring ,lisp-string)) , at body)
   #+allegro
-  (let ((acl-native (gensym)))
-    `(excl:with-native-string (,acl-native ,lisp-string)
-       (let ((,cstring (if ,lisp-string ,acl-native 0)))
-	 , at body)))
-  #+mcl
-  `(if (stringp ,lisp-string)
-     (ccl:with-cstrs ((,cstring ,lisp-string))
-       , at body)
-     (let ((,cstring +null-cstring-pointer+))
-       , at body))
+  (let ((acl-native (gensym))
+	(stored-lisp-string (gensym)))
+    `(let ((,stored-lisp-string ,lisp-string))
+       (excl:with-native-string (,acl-native ,stored-lisp-string)
+	 (let ((,cstring (if ,stored-lisp-string ,acl-native 0)))
+	   , at body))))
+  #+(or openmcl digitool)
+  (let ((stored-lisp-string (gensym)))
+    `(let ((,stored-lisp-string ,lisp-string))
+       (if (stringp ,stored-lisp-string)
+	   (ccl:with-cstrs ((,cstring ,stored-lisp-string))
+	     , at body)
+	   (let ((,cstring +null-cstring-pointer+))
+	     , at body))))
   )
 
 (defmacro with-cstrings (bindings &rest body)
@@ -95,134 +103,179 @@
 
 (defmacro convert-to-foreign-string (obj)
   #+lispworks
-  `(if (null ,obj)
-    +null-cstring-pointer+
-    (fli:convert-to-foreign-string ,obj :external-format '(:latin-1 :eol-style :lf)))
+  (let ((stored (gensym)))
+    `(let ((,stored ,obj))
+       (if (null ,stored)
+	   +null-cstring-pointer+
+	   (fli:convert-to-foreign-string
+	    ,stored
+	    :external-format '(:latin-1 :eol-style :lf)))))
   #+allegro
-  `(if (null ,obj)
-       0
-     (values (excl:string-to-native ,obj)))
+  (let ((stored (gensym)))
+    `(let ((,stored ,obj))
+       (if (null ,stored)
+	   0
+	   (values (excl:string-to-native ,stored)))))
   #+(or cmu scl)
   (let ((size (gensym))
 	(storage (gensym))
+	(stored-obj (gensym))
 	(i (gensym)))
-    `(etypecase ,obj
-      (null 
-       (alien:sap-alien (system:int-sap 0) (* (alien:unsigned 8))))
-      (string
-       (let* ((,size (length ,obj))
-	      (,storage (alien:make-alien (alien:unsigned 8) (1+ ,size))))
-	 (setq ,storage (alien:cast ,storage (* (alien:unsigned 8))))
-	 (locally
-	     (declare (optimize (speed 3) (safety 0)))
-	   (dotimes (,i ,size)
-	     (declare (fixnum ,i))
-	     (setf (alien:deref ,storage ,i) (char-code (char ,obj ,i))))
+    `(let ((,stored-obj ,obj))
+       (etypecase ,stored-obj
+	 (null
+	  (alien:sap-alien (system:int-sap 0) (* (alien:unsigned 8))))
+	 (string
+	  (let* ((,size (length ,stored-obj))
+		 (,storage (alien:make-alien (alien:unsigned 8) (1+ ,size))))
+	    (setq ,storage (alien:cast ,storage (* (alien:unsigned 8))))
+	    (locally
+		(declare (optimize (speed 3) (safety 0)))
+	      (dotimes (,i ,size)
+		(declare (fixnum ,i))
+		(setf (alien:deref ,storage ,i)
+		      (char-code (char ,stored-obj ,i))))
 	   (setf (alien:deref ,storage ,size) 0))
-	 ,storage))))
+	 ,storage)))))
   #+sbcl
   (let ((size (gensym))
 	(storage (gensym))
+	(stored-obj (gensym))
 	(i (gensym)))
-    `(etypecase ,obj
-      (null 
-       (sb-alien:sap-alien (sb-sys:int-sap 0) (* (sb-alien:unsigned 8))))
-      (string
-       (let* ((,size (length ,obj))
-	      (,storage (sb-alien:make-alien (sb-alien:unsigned 8) (1+ ,size))))
-	 (setq ,storage (sb-alien:cast ,storage (* (sb-alien:unsigned 8))))
-	 (locally
-	     (declare (optimize (speed 3) (safety 0)))
-	   (dotimes (,i ,size)
-	     (declare (fixnum ,i))
-	     (setf (sb-alien:deref ,storage ,i) (char-code (char ,obj ,i))))
-	   (setf (sb-alien:deref ,storage ,size) 0))
-	 ,storage))))
-  #+mcl
-  `(if (null ,obj)
-       +null-cstring-pointer+
-     (let ((ptr (new-ptr (1+ (length ,obj)))))
-       (ccl::%put-cstring ptr ,obj)
-       ptr))
+    `(let ((,stored-obj ,obj))
+       (etypecase ,stored-obj
+	 (null
+	  (sb-alien:sap-alien (sb-sys:int-sap 0) (* (sb-alien:unsigned 8))))
+	 (string
+	  (let* ((,size (length ,stored-obj))
+		 (,storage (sb-alien:make-alien (sb-alien:unsigned 8) (1+ ,size))))
+	    (setq ,storage (sb-alien:cast ,storage (* (sb-alien:unsigned 8))))
+	    (locally
+		(declare (optimize (speed 3) (safety 0)))
+	      (dotimes (,i ,size)
+		(declare (fixnum ,i))
+		(setf (sb-alien:deref ,storage ,i)
+		      (char-code (char ,stored-obj ,i))))
+	      (setf (sb-alien:deref ,storage ,size) 0))
+	    ,storage)))))
+  #+(or openmcl digitool)
+  (let ((stored-obj (gensym)))
+    `(let ((,stored-obj ,obj))
+       (if (null ,stored-obj)
+	   +null-cstring-pointer+
+	   (let ((ptr (new-ptr (1+ (length ,stored-obj)))))
+	     (ccl::%put-cstring ptr ,stored-obj)
+	     ptr))))
   )
 
-
 ;; Either length or null-terminated-p must be non-nil
 (defmacro convert-from-foreign-string (obj &key
 					   length
 					   (locale :default)
 					   (null-terminated-p t))
   #+allegro
-  `(if (zerop ,obj)
-       nil
-     (if (eq ,locale :none)
-	 (fast-native-to-string ,obj ,length)
-       (excl:native-to-string
-	,obj 
-	,@(when length (list :length length))
-	:truncate (not ,null-terminated-p))))
+  (let ((stored-obj (gensym)))
+    `(let ((,stored-obj ,obj))
+       (if (zerop ,stored-obj)
+	   nil
+	   (if (eq ,locale :none)
+	       (fast-native-to-string ,stored-obj ,length)
+	       (values
+		(excl:native-to-string
+		 ,stored-obj
+		 ,@(when length (list :length length))
+		 :truncate (not ,null-terminated-p)))))))
   #+lispworks
-  `(if (fli:null-pointer-p ,obj)
-       nil
-     (if (eq ,locale :none)
-	 (fast-native-to-string ,obj ,length)
-       (fli:convert-from-foreign-string 
-	,obj
-	,@(when length (list :length length))
-	:null-terminated-p ,null-terminated-p
-	:external-format '(:latin-1 :eol-style :lf))))
+  (let ((stored-obj (gensym)))
+    `(let ((,stored-obj ,obj))
+       (if (fli:null-pointer-p ,stored-obj)
+	   nil
+	   (if (eq ,locale :none)
+	       (fast-native-to-string ,stored-obj ,length)
+	       (fli:convert-from-foreign-string
+		,stored-obj
+		,@(when length (list :length length))
+		:null-terminated-p ,null-terminated-p
+		:external-format '(:latin-1 :eol-style :lf))))))
   #+(or cmu scl)
-  `(if (null-pointer-p ,obj)
-    nil
-    (cmucl-naturalize-cstring (alien:alien-sap ,obj)
-     :length ,length
-     :null-terminated-p ,null-terminated-p))
+  (let ((stored-obj (gensym)))
+    `(let ((,stored-obj ,obj))
+       (if (null-pointer-p ,stored-obj)
+	   nil
+	   (cmucl-naturalize-cstring (alien:alien-sap ,stored-obj)
+				     :length ,length
+				     :null-terminated-p ,null-terminated-p))))
+
   #+sbcl
-  `(if (null-pointer-p ,obj)
-    nil
-    (sbcl-naturalize-cstring (sb-alien:alien-sap ,obj)
-     :length ,length
-     :null-terminated-p ,null-terminated-p))
-  #+mcl
+  (let ((stored-obj (gensym)))
+    `(let ((,stored-obj ,obj))
+       (if (null-pointer-p ,stored-obj)
+	    nil
+	    (sbcl-naturalize-cstring (sb-alien:alien-sap ,stored-obj)
+				     :length ,length
+				     :null-terminated-p ,null-terminated-p))))
+  #+(or openmcl digitool)
   (declare (ignore null-terminated-p))
-  #+mcl
-  `(if (ccl:%null-ptr-p ,obj)
-     nil
-     (ccl:%get-cstring ,obj 0 ,@(if length (list length) nil)))
+  #+(or openmcl digitool)
+  (let ((stored-obj (gensym)))
+    `(let ((,stored-obj ,obj))
+       (if (ccl:%null-ptr-p ,stored-obj)
+	   nil
+	   #+digitool (ccl:%get-cstring
+				      ,stored-obj 0
+				      ,@(if length (list length) nil))
+	   #+openmcl ,@(if length
+			   `((ccl:%str-from-ptr ,stored-obj ,length))
+			   `((ccl:%get-cstring ,stored-obj))))))
   )
 
 
 (defmacro allocate-foreign-string (size &key (unsigned t))
-  #+(or cmu scl)
+  #+ignore
   (let ((array-def (gensym)))
     `(let ((,array-def (list 'alien:array 'c-call:char ,size)))
-       (eval `(alien:cast (alien:make-alien ,,array-def) 
-			  ,(if ,unsigned 
+       (eval `(alien:cast (alien:make-alien ,,array-def)
+			  ,(if ,unsigned
 			       '(* (alien:unsigned 8))
 			     '(* (alien:signed 8)))))))
+
+  #+(or cmu scl)
+  `(alien:make-alien ,(if unsigned
+			     '(alien:unsigned 8)
+			     '(alien:signed 8))
+    ,size)
+
   #+sbcl
-  (let ((array-def (gensym)))
-    `(let ((,array-def (list 'sb-alien:array 'char ,size)))
-       (eval `(sb-alien:cast (sb-alien:make-alien ,,array-def) 
-			  ,(if ,unsigned 
-			       '(* (sb-alien:unsigned 8))
-			     '(* (sb-alien:signed 8)))))))
+  `(sb-alien:make-alien ,(if unsigned
+			     '(sb-alien:unsigned 8)
+			     '(sb-alien:signed 8))
+    ,size)
+
   #+lispworks
-  `(fli:allocate-foreign-object :type 
-				,(if unsigned 
-				     ''(:unsigned :char) 
+  `(fli:allocate-foreign-object :type
+				,(if unsigned
+				     ''(:unsigned :char)
 				   :char)
 				:nelems ,size)
   #+allegro
   (declare (ignore unsigned))
   #+allegro
   `(ff:allocate-fobject :char :c ,size)
-  #+mcl
+  #+(or openmcl digitool)
   (declare (ignore unsigned))
-  #+mcl
+  #+(or openmcl digitool)
   `(new-ptr ,size)
   )
 
+(defun foreign-string-length (foreign-string)
+  #+allegro `(ff:foreign-strlen ,foreign-string)
+  #-allegro
+  `(loop with size = 0
+    until (char= (deref-array ,foreign-string '(:array :unsigned-char) size) #\Null)
+    do (incf size)
+    finally return size))
+
+
 (defmacro with-foreign-string ((foreign-string lisp-string) &body body)
   (let ((result (gensym)))
     `(let* ((,foreign-string (convert-to-foreign-string ,lisp-string))
@@ -231,6 +284,11 @@
       (free-foreign-object ,foreign-string)
       ,result)))
 
+(defmacro with-foreign-strings (bindings &body body)
+  `(with-foreign-string ,(car bindings)
+    ,@(if (cdr bindings)
+          `((with-foreign-strings ,(cdr bindings) , at body))
+          body)))
 
 ;; Modified from CMUCL's source to handle non-null terminated strings
 #+cmu
@@ -280,53 +338,75 @@
 	(setf (char result i) (code-char (system:sap-ref-8 sap i))))
       result)))
 
-#+sbcl
+#+(and sbcl (not sb-unicode))
 (defun sbcl-naturalize-cstring (sap &key length (null-terminated-p t))
-  (declare (type sb-sys:system-area-pointer sap))
+  (declare (type sb-sys:system-area-pointer sap)
+	   (type (or null fixnum) length))
   (locally
-      (declare (optimize (speed 3) (safety 0)))
-    (let ((null-terminated-length
-	   (when null-terminated-p
-	     (loop
-		 for offset of-type fixnum upfrom 0
-		 until (zerop (sb-sys:sap-ref-8 sap offset))
-		 finally (return offset)))))
-      (if length
-	  (if (and null-terminated-length
-		   (> (the fixnum length) (the fixnum null-terminated-length)))
-	      (setq length null-terminated-length))
-	(setq length null-terminated-length)))
-    (let ((result (make-string length)))
-      (sb-kernel:copy-from-system-area sap 0
-				    result (* sb-vm:vector-data-offset
-					      sb-vm:n-word-bits)
-				    (* length sb-vm:n-byte-bits))
-      result)))
+   (declare (optimize (speed 3) (safety 0)))
+   (let ((null-terminated-length
+	  (when null-terminated-p
+	    (loop
+	     for offset of-type fixnum upfrom 0
+	     until (zerop (sb-sys:sap-ref-8 sap offset))
+	     finally (return offset)))))
+     (if length
+	 (if (and null-terminated-length
+		  (> (the fixnum length) (the fixnum null-terminated-length)))
+	     (setq length null-terminated-length))
+       (setq length null-terminated-length)))
+   (let ((result (make-string length)))
+       (funcall *system-copy-fn* sap 0 result +system-copy-offset+
+		(* length +system-copy-multiplier+))
+       result)))
 
+#+(and sbcl sb-unicode)
+(defun sbcl-naturalize-cstring (sap &key length (null-terminated-p t))
+  (declare (type sb-sys:system-area-pointer sap)
+	   (type (or null fixnum) length))
+  (locally
+   (declare (optimize (speed 3) (safety 0)))
+   (cond
+    (null-terminated-p
+     (let ((casted (sb-alien:cast (sb-alien:sap-alien sap (* char))
+				  #+sb-unicode sb-alien:utf8-string
+				  #-sb-unicode sb-alien:c-string)))
+       (if length
+	   (copy-seq (subseq casted 0 length))
+	 (copy-seq casted))))
+    (t
+     (let ((result (make-string length)))
+       ;; this will not work in sb-unicode
+       (funcall *system-copy-fn* sap 0 result +system-copy-offset+
+		(* length +system-copy-multiplier+))
+       result)))))
 
-(def-function "strlen"
-    ((str (* :unsigned-char)))
-  :returning :unsigned-int)
 
+(eval-when (:compile-toplevel :load-toplevel :execute)
+   (def-function "strlen"
+     ((str (* :unsigned-char)))
+     :returning :unsigned-int))
+
 (def-type char-ptr-def (* :unsigned-char))
 
-#+(or lispworks (and allegro (not ics)))
+#+(or (and allegro (not ics)) (and lispworks (not lispworks5)))
 (defun fast-native-to-string (s len)
   (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
 	   (type char-ptr-def s))
   (let* ((len (or len (strlen s)))
          (str (make-string len)))
     (declare (fixnum len)
-	     (type (simple-array (signed-byte 8) (*)) str))
+	     (type (simple-array #+lispworks base-char
+                                 #-lispworks (signed-byte 8) (*)) str))
     (dotimes (i len str)
-      (setf (aref str i) 
+      (setf (aref str i)
 	(uffi:deref-array s '(:array :char) i)))))
 
-#+(and allegro ics)
+#+(or (and allegro ics) lispworks5)
 (defun fast-native-to-string (s len)
   (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
 	   (type char-ptr-def s))
   (let* ((len (or len (strlen s)))
          (str (make-string len)))
       (dotimes (i len str)
-        (setf (aref str i) (uffi:deref-array s '(:array :char) i)))))
+        (setf (schar str i) (code-char (uffi:deref-array s '(:array :unsigned-byte) i))))))

Modified: trunk/thirdparty/uffi/tests/Makefile
===================================================================
--- trunk/thirdparty/uffi/tests/Makefile	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/Makefile	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,13 +5,9 @@
 #  Programer:    Kevin M. Rosenberg
 #  Date Started: Mar 2002
 #
-#  CVS Id:   $Id: Makefile,v 1.1 2004/06/23 08:27:10 hans Exp $
+#  CVS Id:   $Id$
 #
-# This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
-#
-# UFFI users are granted the rights to distribute and use this software
-# as governed by the terms of the Lisp Lesser GNU Public License
-# (http://opensource.franz.com/preamble.html), also known as the LLGPL.
+# This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 
 SUBDIRS=
 

Modified: trunk/thirdparty/uffi/tests/Makefile.msvc
===================================================================
--- trunk/thirdparty/uffi/tests/Makefile.msvc	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/Makefile.msvc	2006-10-24 21:07:42 UTC (rev 2045)
@@ -5,13 +5,10 @@
 #  Programer:    Kevin M. Rosenberg
 #  Date Started: Mar 2002
 #
-#  CVS Id:   $Id: Makefile.msvc,v 1.1 2004/06/23 08:27:10 hans Exp $
+#  CVS Id:   $Id$
 #
-# This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
+# This file, part of CLSQL, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 #
-# CLSQL users are granted the rights to distribute and use this software
-# as governed by the terms of the Lisp Lesser GNU Public License
-# (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 
 BASE=c-test-fns
 

Modified: trunk/thirdparty/uffi/tests/arrays.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/arrays.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/arrays.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Author:        Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: arrays.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -18,9 +18,9 @@
 (uffi:def-constant +column-length+ 10)
 (uffi:def-constant +row-length+ 10)
 
-(uffi:def-foreign-type long-ptr '(* :long))
+(uffi:def-foreign-type long-ptr (* :long))
 
-(deftest array.1
+(deftest :array.1
     (let ((a (uffi:allocate-foreign-object :long +column-length+))
 	  (results nil))
       (dotimes (i +column-length+)
@@ -32,7 +32,7 @@
   (0 1 4 9 16 25 36 49 64 81))
 
 
-(deftest array.2
+(deftest :array.2
     (let ((a (uffi:allocate-foreign-object 'long-ptr +row-length+))
 	  (results nil))
       (dotimes (r +row-length+)

Modified: trunk/thirdparty/uffi/tests/atoifl.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/atoifl.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/atoifl.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: atoifl.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -37,6 +37,6 @@
   (uffi:with-cstring (str-cstring str)
     (c-atof str-cstring)))
   
-(deftest atoi.1 (atoi "123") 123)
-(deftest atoi.2 (atoi "") 0)
-(deftest atof.3 (atof "2.23") 2.23d0)
+(deftest :atoi.1 (atoi "123") 123)
+(deftest :atoi.2 (atoi "") 0)
+(deftest :atof.3 (atof "2.23") 2.23d0)

Modified: trunk/thirdparty/uffi/tests/casts.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/casts.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/casts.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -1,27 +1,31 @@
 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
 ;;;; *************************************************************************
-;;;; FILE IDENTIFICATION
+;;;; FILE IDENTIFICAION
 ;;;;
 ;;;; Name:          casts.lisp
 ;;;; Purpose:       Tests of with-cast-pointer
 ;;;; Programmer:    Kevin M. Rosenberg / Edi Weitz
 ;;;; Date Started:  Aug 2003
 ;;;;
-;;;; $Id: casts.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
+;;;; This file, part of UFFI, is Copyright (c) 2003-2005 by Kevin M. Rosenberg
+;;;;
 ;;;; *************************************************************************
 
 (in-package #:uffi-tests)
 
 (uffi:def-function ("cast_test_int" cast-test-int)
     ()
+  :module "uffi_tests"
   :returning :pointer-void)
 
 (uffi:def-function ("cast_test_float" cast-test-float)
     ()
+  :module "uffi_tests"
   :returning :pointer-void)
 
-(deftest cast.1
+(deftest :cast.1
   (progn
     (uffi:with-cast-pointer (temp (cast-test-int) :int)
       (assert (= (uffi:deref-pointer temp :int) 23)))
@@ -33,7 +37,7 @@
     t)
   t)
 
-(deftest cast.2
+(deftest :cast.2
     (progn
       (uffi:with-cast-pointer (temp (cast-test-float) :double)
 	(assert (= (uffi:deref-pointer temp :double) 3.21d0)))

Modified: trunk/thirdparty/uffi/tests/compress.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/compress.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/compress.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Author:        Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: compress.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -36,10 +36,8 @@
 	    (newdestlen (uffi:deref-pointer destlen :long)))
 	(unwind-protect
 	    (if (zerop result)
-		(values (uffi:convert-from-foreign-string 
-			 dest
-			 :length newdestlen
-			 :null-terminated-p nil)
+		(values (uffi:convert-from-foreign-usb8 
+			 dest newdestlen)
 			newdestlen)
 	      (error "zlib error, code ~D" result))
 	  (progn
@@ -74,12 +72,12 @@
 	    (uffi:free-foreign-object destlen)
 	    (uffi:free-foreign-object dest)))))))
 
-(deftest compress.1 (map 'list #'char-code (compress ""))
-  (120 156 3 0 0 0 0 1))
-(deftest compress.2 (map 'list #'char-code  (compress "test"))
-  (120 156 43 73 45 46 1 0 4 93 1 193))
-(deftest compress.3 (map 'list #'char-code (compress "test2"))
-  (120 156 43 73 45 46 49 2 0 6 80 1 243))
+(deftest :compress.1 (compress "")
+  #(120 156 3 0 0 0 0 1) 8)
+(deftest :compress.2  (compress "test")
+  #(120 156 43 73 45 46 1 0 4 93 1 193) 12)
+(deftest :compress.3 (compress "test2")
+  #(120 156 43 73 45 46 49 2 0 6 80 1 243) 13)
 
 (defun compress-uncompress (str)
   (multiple-value-bind (compressed len) (compress str)
@@ -89,6 +87,6 @@
       uncompressed)))
 
 
-(deftest uncompress.1 "" "")
-(deftest uncompress.2 "test" "test")
-(deftest uncompress.3 "test2" "test2")
+(deftest :uncompress.1 "" "")
+(deftest :uncompress.2 "test" "test")
+(deftest :uncompress.3 "test2" "test2")

Modified: trunk/thirdparty/uffi/tests/foreign-loader.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/foreign-loader.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/foreign-loader.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Author:        Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: foreign-loader.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -18,6 +18,8 @@
 
 (in-package uffi-tests)
 
+#+clisp (uffi:load-foreign-library "/usr/lib/libz.so" :module "z")
+#-clisp
 (unless (uffi:load-foreign-library
 	 (uffi:find-foreign-library
 	  #-(or macosx darwin)
@@ -25,16 +27,20 @@
 	  #+(or macosx darwin)
 	  "z"
 	  (list (pathname-directory *load-pathname*)
-		"/usr/local/lib/" "/usr/lib/" "/zlib/"))
-	 :module "zlib" 
+		"/usr/local/lib/" #+(or 64bit x86-64) "/usr/lib64/"
+		"/usr/lib/" "/zlib/"))
+	 :module "zlib"
 	 :supporting-libraries '("c"))
   (warn "Unable to load zlib"))
-  
-(unless (uffi:load-foreign-library 
+
+#+clisp (uffi:load-foreign-library "/home/kevin/debian/src/uffi/tests/uffi-c-test.so" :module "uffi_tests")
+#-clisp
+(unless (uffi:load-foreign-library
 	 (uffi:find-foreign-library
-	  "uffi-c-test" 
+	  '(#+(or 64bit x86-64) "uffi-c-test64" "uffi-c-test")
 	  (list (pathname-directory *load-truename*)
-		"/usr/lib/uffi/"))
+		"/usr/lib/uffi/"
+		"/home/kevin/debian/src/uffi/tests/"))
 	 :supporting-libraries '("c")
 	 :module "uffi_tests")
   (warn "Unable to load uffi-c-test library"))

Modified: trunk/thirdparty/uffi/tests/foreign-var.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/foreign-var.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/foreign-var.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,8 +7,10 @@
 ;;;; Authors:       Kevin M. Rosenberg and Edi Weitz
 ;;;; Date Started:  Aug 2003
 ;;;;
-;;;; $Id: foreign-var.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
+;;;; This file, part of UFFI, is Copyright (c) 2003-2005 by Kevin M. Rosenberg
+;;;
 ;;;; *************************************************************************
 
 (in-package #:uffi-tests)
@@ -22,16 +24,15 @@
 (def-foreign-var "float_neg_4_5" :float "uffi_tests")
 (def-foreign-var "double_3_1" :double "uffi_tests")
 
-(deftest fvar.1 uchar-13 13)
-(deftest fvar.2 schar-neg-120 -120)
-(deftest fvar.3 uword-257 257)
-(deftest fvar.4 sword-neg-321 -321)
-(deftest fvar.5 uint-1234567 1234567)
-(deftest fvar.6 sint-neg-123456 -123456)
-(deftest fvar.7 float-neg-4-5 -4.5f0)
-(deftest fvar.8 double-3-1 3.1d0)
+(deftest :fvar.1 uchar-13 13)
+(deftest :fvar.2 schar-neg-120 -120)
+(deftest :fvar.3 uword-257 257)
+(deftest :fvar.4 sword-neg-321 -321)
+(deftest :fvar.5 uint-1234567 1234567)
+(deftest :fvar.6 sint-neg-123456 -123456)
+(deftest :fvar.7 float-neg-4-5 -4.5f0)
+(deftest :fvar.8 double-3-1 3.1d0)
 
-
 (uffi:def-foreign-var ("fvar_addend" *fvar-addend*) :int "uffi_tests")
 
 (uffi:def-struct fvar-struct
@@ -51,14 +52,14 @@
     :returning :double
     :module "uffi_tests")
  
-(deftest fvarst.1 *fvar-addend* 3)
-(deftest fvarst.2 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 42)
-(deftest fvarst.3 (= (+ *fvar-addend*
+(deftest :fvarst.1 *fvar-addend* 3)
+(deftest :fvarst.2 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 42)
+(deftest :fvarst.3 (= (+ *fvar-addend*
 			(uffi:get-slot-value *fvar-struct* 'fvar-struct 'i))
 		     (fvar-struct-int))
   t)
-(deftest fvarst.4 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) 3.2d0)
-(deftest fvarst.5 (= (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd)
+(deftest :fvarst.4 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) 3.2d0)
+(deftest :fvarst.5 (= (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd)
 		     (fvar-struct-double))
   t)
 

Modified: trunk/thirdparty/uffi/tests/getenv.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/getenv.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/getenv.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: getenv.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -51,11 +51,11 @@
   (uffi:with-cstrings ((key-native key))
     (c-unsetenv key-native)))
 
-(deftest getenv.1 (progn
+(deftest :getenv.1 (progn
 		    (my-unsetenv "__UFFI_FOO1__")
 		    (my-getenv "__UFFI_FOO1__"))
   nil)
-(deftest getenv.2 (progn
+(deftest :getenv.2 (progn
 		    (my-setenv "__UFFI_FOO1__" "UFFI-TEST")
 		    (my-getenv "__UFFI_FOO1__"))
   "UFFI-TEST")

Modified: trunk/thirdparty/uffi/tests/gethostname.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/gethostname.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/gethostname.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: gethostname.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -42,11 +42,11 @@
 	  (uffi:convert-from-foreign-string name)
 	  (error "gethostname() failed.")))))
 
-(deftest gethostname.1 (stringp (gethostname)) t)
-(deftest gethostname.2 (stringp (gethostname2)) t)
-(deftest gethostname.3 (plusp (length (gethostname))) t)
-(deftest gethostname.4 (plusp (length (gethostname2))) t)
-(deftest gethostname.5 (gethostname) #.(gethostname2))
+(deftest :gethostname.1 (stringp (gethostname)) t)
+(deftest :gethostname.2 (stringp (gethostname2)) t)
+(deftest :gethostname.3 (plusp (length (gethostname))) t)
+(deftest :gethostname.4 (plusp (length (gethostname2))) t)
+(deftest :gethostname.5 (string= (gethostname) (gethostname2)) t)
 
 
 

Modified: trunk/thirdparty/uffi/tests/make.sh
===================================================================
--- trunk/thirdparty/uffi/tests/make.sh	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/make.sh	2006-10-24 21:07:42 UTC (rev 2045)
@@ -2,17 +2,32 @@
 
 case "`uname`" in
     Linux) os_linux=1 ;;
+    FreeBSD) os_freebsd=1 ;;
+    GNU/kFreeBSD) os_gnukfreebsd=1;;
     Darwin) os_darwin=1 ;;
     SunOS) os_sunos=1 ;;
     AIX) os_aix=1 ;;
+    GNU) os_gnu=1 ;;
     *) echo "Unable to identify uname " `uname`
-       exit 1 ;;	
+       exit 1 ;;
 esac
-    
+
 if [ "$os_linux" ]; then
     gcc -fPIC -DPIC -c $SOURCE -o $OBJECT
     gcc -shared $OBJECT -o $SHARED_LIB
 
+elif [ "$os_gnu" ]; then
+    gcc -fPIC -DPIC -c $SOURCE -o $OBJECT
+    gcc -shared $OBJECT -o $SHARED_LIB
+
+elif [ "$os_freebsd" ]; then
+    gcc -fPIC -DPIC -c $SOURCE -o $OBJECT
+    gcc -shared $OBJECT -o $SHARED_LIB
+
+elif [ "$os_gnukfreebsd" ]; then
+    gcc -fPIC -DPIC -c $SOURCE -o $OBJECT
+    gcc -shared $OBJECT -o $SHARED_LIB
+
 elif [ "$os_darwin" ]; then
     cc -dynamic -c $SOURCE -o $OBJECT
     ld -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress -o $BASE.dylib $OBJECT

Copied: trunk/thirdparty/uffi/tests/objects.lisp (from rev 2044, branches/xml-class-rework/thirdparty/uffi/tests/objects.lisp)

Modified: trunk/thirdparty/uffi/tests/strtol.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/strtol.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/strtol.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: strtol.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -54,10 +54,10 @@
 	(uffi:free-foreign-object str-native)
 	(uffi:free-foreign-object endptr)))))
 
-(deftest strtol.1 (strtol "123") 123 t)
-(deftest strtol.2 (strtol "0") 0 t)
-(deftest strtol.3 (strtol "55a") 55 2)
-(deftest strtol.4 (strtol "a") nil nil)
+(deftest :strtol.1 (strtol "123") 123 t)
+(deftest :strtol.2 (strtol "0") 0 t)
+(deftest :strtol.3 (strtol "55a") 55 2)
+(deftest :strtol.4 (strtol "a") nil nil)
 
 
 			   

Modified: trunk/thirdparty/uffi/tests/structs.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/structs.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/structs.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: structs.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -24,8 +24,13 @@
 (uffi:def-foreign-type foo-ptr (* foo))
 
 ;; tests that compilation worked
-(deftest structs.1 
+(deftest :structs.1 
   (with-foreign-object (p 'foo)
     t)
   t)
 
+(deftest :structs.2
+    (progn
+      (uffi:def-foreign-type foo-struct (:struct foo))
+      t)
+  t)

Modified: trunk/thirdparty/uffi/tests/time.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/time.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/time.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Author:        Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: time.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -26,36 +26,42 @@
   (year :int)
   (wday :int)
   (yday :int)
-  (isdst :int))
+  (isdst :int)
+  ;; gmoffset present on SusE SLES9
+  (gmoffset :long))
 
 (uffi:def-function ("time" c-time) 
     ((time (* time-t)))
   :returning time-t)
 
-(uffi:def-function ("gmtime" c-gmtime)
+(uffi:def-function "gmtime"
     ((time (* time-t)))
-  :returning (* tm))
+  :returning (:struct-pointer tm))
 
+(uffi:def-function "asctime"
+    ((time (:struct-pointer tm)))
+  :returning :cstring)
+
 (uffi:def-type time-t :unsigned-long)
-(uffi:def-type tm-pointer (* tm))
+(uffi:def-type tm-pointer (:struct-pointer tm))
 
-(deftest time.1
+(deftest :time.1
    (uffi:with-foreign-object (time 'time-t)
      (setf (uffi:deref-pointer time :unsigned-long) 7381)
      (uffi:deref-pointer time :unsigned-long))
   7381)
 
-(deftest time.2
-   (uffi:with-foreign-object (time 'time-t)
-     (setf (uffi:deref-pointer time :unsigned-long) 7381)
-     (let ((tm-ptr (the tm-pointer (c-gmtime time))))
-       (values (1+ (uffi:get-slot-value tm-ptr 'tm 'mon))
-	       (uffi:get-slot-value tm-ptr 'tm 'mday)
-	       (+ 1900 (uffi:get-slot-value tm-ptr 'tm 'year))
-	       (uffi:get-slot-value tm-ptr 'tm 'hour)
-	       (uffi:get-slot-value tm-ptr 'tm 'min)
-	       (uffi:get-slot-value tm-ptr 'tm 'sec)
-	       )))
+(deftest :time.2
+  (uffi:with-foreign-object (time 'time-t)
+    (setf (uffi:deref-pointer time :unsigned-long) 7381)
+    (let ((tm-ptr (the tm-pointer (gmtime time))))
+      (values (1+ (uffi:get-slot-value tm-ptr 'tm 'mon))
+	      (uffi:get-slot-value tm-ptr 'tm 'mday)
+	      (+ 1900 (uffi:get-slot-value tm-ptr 'tm 'year))
+	      (uffi:get-slot-value tm-ptr 'tm 'hour)
+	      (uffi:get-slot-value tm-ptr 'tm 'min)
+	      (uffi:get-slot-value tm-ptr 'tm 'sec)
+	      )))
   1 1 1970 2 3 1)
 
 
@@ -80,7 +86,7 @@
 	  (uffi:get-slot-value tv 'timeval 'usecs))
        res))))
 
-(deftest timeofday.1
+(deftest :timeofday.1
     (multiple-value-bind (t1 res1) (get-utime)
       (multiple-value-bind (t2 res2) (get-utime)
 	(and (or (= t2 t1) (> t2 t1))
@@ -90,3 +96,15 @@
 	     (zerop res2))))
   t)
 	     
+(defun posix-time-to-asctime (secs)
+  "Converts number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal Time (UTC)"
+  (string-right-trim
+   '(#\newline #\return)
+   (uffi:convert-from-cstring
+    (uffi:with-foreign-object (time 'time-t)
+      (setf (uffi:deref-pointer time :unsigned-long) secs)
+      (asctime (gmtime time))))))
+
+(deftest :time.3
+    (posix-time-to-asctime 0)
+  "Thu Jan  1 00:00:00 1970")

Modified: trunk/thirdparty/uffi/tests/uffi-c-test-lib.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/uffi-c-test-lib.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/uffi-c-test-lib.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: uffi-c-test-lib.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -19,7 +19,7 @@
 (uffi:def-function ("cs_to_upper" cs-to-upper)
   ((input (* :unsigned-char)))
   :returning :void
-  )
+  :module "uffi_tests")
 
 (defun string-to-upper (str)
   (uffi:with-foreign-string (str-foreign str)
@@ -29,17 +29,34 @@
 (uffi:def-function ("cs_count_upper" cs-count-upper)
   ((input :cstring))
   :returning :int
-  )
+  :module "uffi_tests")
 
 (defun string-count-upper (str)
   (uffi:with-cstring (str-cstring str)
-    (cs-count-upper str-cstring)))
+    (cs-count-upper str-cstring))) 
 
 (uffi:def-function ("half_double_vector" half-double-vector)
     ((size :int)
      (vec (* :double)))
-  :returning :void)
+  :returning :void
+  :module "uffi_tests")
 
+(uffi:def-function ("return_long_negative_one" return-long-negative-one)
+    ()
+  :returning :long
+  :module "uffi_tests")
+
+(uffi:def-function ("return_int_negative_one" return-int-negative-one)
+    ()
+  :returning :int
+  :module "uffi_tests")
+
+(uffi:def-function ("return_short_negative_one" return-short-negative-one)
+    ()
+  :returning :short
+  :module "uffi_tests")
+
+
 (uffi:def-constant +double-vec-length+ 10)
 (defun test-half-double-vector ()
   (let ((vec (uffi:allocate-foreign-object :double +double-vec-length+))
@@ -69,10 +86,13 @@
      (half-double-vector +double-vec-length+ (system:vector-sap vec)))
     vec))
     
-(deftest c-test.1 (string-to-upper "this is a test") "THIS IS A TEST")
-(deftest c-test.2 (string-to-upper nil) nil)
-(deftest c-test.3 (string-count-upper "This is a Test") 2)
-(deftest c-test.4 (string-count-upper nil) -1)
-(deftest c-test.5 (test-half-double-vector)
+(deftest :c-test.1 (string-to-upper "this is a test") "THIS IS A TEST")
+(deftest :c-test.2 (string-to-upper nil) nil)
+(deftest :c-test.3 (string-count-upper "This is a Test") 2)
+(deftest :c-test.4 (string-count-upper nil) -1)
+(deftest :c-test.5 (test-half-double-vector)
   (0.0d0 0.5d0 1.0d0 1.5d0 2.0d0 2.5d0 3.0d0 3.5d0 4.0d0 4.5d0))
+(deftest :c-test.6 (return-long-negative-one) -1)
+(deftest :c-test.7 (return-int-negative-one) -1)
+(deftest :c-test.8 (return-short-negative-one) -1)
 

Modified: trunk/thirdparty/uffi/tests/uffi-c-test.c
===================================================================
--- trunk/thirdparty/uffi/tests/uffi-c-test.c	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/uffi-c-test.c	2006-10-24 21:07:42 UTC (rev 2045)
@@ -6,14 +6,10 @@
  *  Programer:    Kevin M. Rosenberg
  *  Date Started: Mar 2002
  *
- *  CVS Id:   $Id: uffi-c-test.c,v 1.1 2004/06/23 08:27:10 hans Exp $
+ *  CVS Id:   $Id$
  *
- * This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+ * This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
  *
- * UFFI users are granted the rights to distribute and use this software
- * as governed by the terms of the Lisp Lesser GNU Public License
- * (http://opensource.franz.com/preamble.html), also known as the LLGPL.
-
  * These variables are correct for GCC
  * you'll need to modify these for other compilers
  ***************************************************************************/
@@ -119,6 +115,27 @@
   return y;
 }
 
+DLLEXPORT
+long
+return_long_negative_one ()
+{
+  return -1;
+}
+
+DLLEXPORT
+int
+return_int_negative_one ()
+{
+  return -1;
+}
+
+DLLEXPORT
+short
+return_short_negative_one ()
+{
+  return -1;
+}
+
 DLLEXPORT int fvar_addend = 3;
 
 typedef struct {

Modified: trunk/thirdparty/uffi/tests/union.lisp
===================================================================
--- trunk/thirdparty/uffi/tests/union.lisp	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/tests/union.lisp	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,9 +7,9 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: union.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
@@ -35,12 +35,37 @@
 	 (* 256 (char-code #\C))
 	 (* 1 128)))
 
-(deftest union.1 (uffi:ensure-char-character 
-		  (uffi:get-slot-value *u* 'tunion1 'char)) #\A)
+(deftest :union.1 
+    (uffi:ensure-char-character 
+     (uffi:get-slot-value *u* 'tunion1 'char))
+  #\A)
 
-#-(or sparc sparc-v9 mcl)
-(deftest union.2 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t)
+(deftest :union.2 
+    (uffi:ensure-char-integer 
+     (uffi:get-slot-value *u* 'tunion1 'char))
+  65)
 
+#-(or sparc sparc-v9 openmcl digitool)
+(deftest :union.3 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t)
 
-;;    (uffi:free-foreign-object u))
 
+(uffi:def-union foo-u
+    (bar :pointer-self))
+
+(uffi:def-foreign-type foo-u-ptr (* foo-u))
+
+;; tests that compilation worked
+(deftest :unions.4 
+  (with-foreign-object (p 'foo-u)
+    t)
+  t)
+
+(deftest :unions.5
+    (progn
+      (uffi:def-foreign-type foo-union (:union foo-u))
+      t)
+  t)
+
+
+
+

Modified: trunk/thirdparty/uffi/uffi-tests.asd
===================================================================
--- trunk/thirdparty/uffi/uffi-tests.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/uffi-tests.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,13 +7,15 @@
 ;;;; Author:        Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2003
 ;;;;
-;;;; $Id: uffi-tests.asd,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;; *************************************************************************
 
 (defpackage #:uffi-tests-system
   (:use #:asdf #:cl))
 (in-package #:uffi-tests-system)
 
+(operate 'load-op 'uffi)
+
 (defvar *library-file-dir* (append (pathname-directory *load-truename*)
 				   (list "tests")))
 
@@ -21,28 +23,47 @@
   ())
 
 (defmethod output-files ((o compile-op) (c uffi-test-source-file))
-  (let ((found (some #'(lambda (dir)
-			    (probe-file (make-pathname :directory dir
-						       :name (component-name c)
-						       :type "so")))
-			'((:absolute "usr" "lib" "uffi")))))
+  (let* ((library-file-type
+	  (funcall (intern (symbol-name'#:default-foreign-library-type)
+			   (symbol-name '#:uffi))))
+	 (found
+	  (some #'(lambda (dir)
+		    (probe-file (make-pathname
+				 :directory dir
+				 :name (component-name c)
+				 :type library-file-type)))
+		'((:absolute "usr" "lib" "uffi")))))
     (list (if found
 	      found
 	      (make-pathname :name (component-name c)
-			     :type "so"
+			     :type library-file-type
 			     :directory *library-file-dir*)))))
 
 (defmethod perform ((o load-op) (c uffi-test-source-file))
-  nil) ;; lisp loader file will load library
+  nil) ;;; library will be loaded by a loader file
 
+(defmethod operation-done-p ((o load-op) (c uffi-test-source-file))
+  (and (symbol-function (intern (symbol-name '#:cs-count-upper)
+				(find-package '#:uffi-tests)))
+       t))
+
 (defmethod perform ((o compile-op) (c uffi-test-source-file))
-  (unless (zerop (run-shell-command
-		  "cd ~A; make"
-		  (namestring (make-pathname :name nil
-					     :type nil
-					     :directory *library-file-dir*))))
-    (error 'operation-error :component c :operation o)))
+  (unless (operation-done-p o c)
+    #-(or win32 mswindows)
+    (unless (zerop (run-shell-command
+		    #-freebsd "cd ~A; make"
+		    #+freebsd "cd ~A; gmake"
+		    (namestring (make-pathname :name nil
+					       :type nil
+					       :directory *library-file-dir*))))
+      (error 'operation-error :component c :operation o))))
 
+(defmethod operation-done-p ((o compile-op) (c uffi-test-source-file))
+  (or (and (probe-file #p"/usr/lib/uffi/uffi-c-test.so") t)
+      (let ((lib (make-pathname :defaults (component-pathname c)
+				:type (uffi:default-foreign-library-type))))
+	(and (probe-file lib)
+	     (> (file-write-date lib) (file-write-date (component-pathname c)))))))
 
 (defsystem uffi-tests
     :depends-on (:uffi)
@@ -50,8 +71,8 @@
     ((:module tests
 	      :components
 	      ((:file "rt")
-	       (:uffi-test-source-file "uffi-c-test")
 	       (:file "package" :depends-on ("rt"))
+	       (:uffi-test-source-file "uffi-c-test" :depends-on ("package"))
 	       (:file "strtol" :depends-on ("package"))
 	       (:file "atoifl" :depends-on ("package"))
 	       (:file "getenv" :depends-on ("package"))
@@ -59,7 +80,7 @@
 	       (:file "union" :depends-on ("package"))
 	       (:file "arrays" :depends-on ("package"))
 	       (:file "structs" :depends-on ("package"))
-	       (:file "pointers" :depends-on ("package"))
+	       (:file "objects" :depends-on ("package"))
 	       (:file "time" :depends-on ("package"))
 	       (:file "foreign-loader" :depends-on ("package" "uffi-c-test"))
 	       (:file "uffi-c-test-lib" :depends-on ("foreign-loader"))

Modified: trunk/thirdparty/uffi/uffi.asd
===================================================================
--- trunk/thirdparty/uffi/uffi.asd	2006-10-24 19:04:29 UTC (rev 2044)
+++ trunk/thirdparty/uffi/uffi.asd	2006-10-24 21:07:42 UTC (rev 2045)
@@ -7,19 +7,16 @@
 ;;;; Author:        Kevin M. Rosenberg
 ;;;; Date Started:  Aug 2002
 ;;;;
-;;;; $Id: uffi.asd,v 1.1 2004/06/23 08:27:10 hans Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (defpackage #:uffi-system (:use #:asdf #:cl))
 (in-package #:uffi-system)
 
-#+(or allegro lispworks cmu mcl cormanlisp sbcl scl)
+#+(or allegro lispworks cmu openmcl digitool cormanlisp sbcl scl)
 (defsystem uffi
   :name "uffi"
   :author "Kevin Rosenberg <kevin at rosenberg.net>"
@@ -28,22 +25,22 @@
   :licence "Lessor Lisp General Public License"
   :description "Universal Foreign Function Library for Common Lisp"
   :long-description "UFFI provides a universal foreign function interface (FFI) for Common Lisp. UFFI supports CMUCL, Lispworks, and AllegroCL."
-  
+
   :components
   ((:module :src
 	    :components
 	    ((:file "package")
 	     (:file "primitives" :depends-on ("package"))
-	     #+mcl (:file "readmacros-mcl" :depends-on ("package"))
+	     #+(or openmcl digitool) (:file "readmacros-mcl" :depends-on ("package"))
 	     (:file "objects" :depends-on ("primitives"))
-	     (:file "strings" :depends-on ("primitives" "functions" "aggregates" "objects"))
 	     (:file "aggregates" :depends-on ("primitives"))
+	     (:file "strings" :depends-on ("primitives" "functions" "aggregates" "objects"))
 	     (:file "functions" :depends-on ("primitives"))
 	     (:file "libraries" :depends-on ("package"))
 	     (:file "os" :depends-on ("package"))))
    ))
 
-#+(or allegro lispworks cmu mcl cormanlisp sbcl scl)
+#+(or allegro lispworks cmu openmcl digitool cormanlisp sbcl scl)
 (defmethod perform ((o test-op) (c (eql (find-system 'uffi))))
   (oos 'load-op 'uffi-tests)
   (oos 'test-op 'uffi-tests :force t))




More information about the Bknr-cvs mailing list