From 001e27ddbb1bfaa351b5f268b22418fb0557d6c2 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@afe2bf4a-e733-0410-8a33-86f594647bc7> Date: Mon, 8 Aug 2005 20:01:03 +0000 Subject: This commit was manufactured by cvs2svn to create tag 'Release_1_4_4_20050804'. --- .cvsignore | 6 - CVSROOT/checkoutlist | 13 - CVSROOT/commitinfo | 15 - CVSROOT/config | 9 - CVSROOT/cvswrappers | 23 - CVSROOT/editinfo | 21 - CVSROOT/loginfo | 26 - CVSROOT/modules | 27 - CVSROOT/notify | 12 - CVSROOT/rcsinfo | 13 - CVSROOT/taginfo | 20 - CVSROOT/verifymsg | 21 - Doxyfile | 242 - INSTALL | 7 - LANGUAGE.HOWTO | 49 - LICENSE | 340 - Makefile.in | 109 - Makefile.win_make.in | 33 - Makefile.win_nmake.in | 52 - PLATFORMS | 28 - README | 20 - addon/doxmlparser/Doxyfile | 177 - addon/doxmlparser/Doxyfile.impl | 179 - addon/doxmlparser/examples/metrics/.cvsignore | 4 - addon/doxmlparser/examples/metrics/Makefile.in | 13 - addon/doxmlparser/examples/metrics/main.cpp | 254 - addon/doxmlparser/examples/metrics/metrics.pro.in | 20 - addon/doxmlparser/include/doxmlintf.h | 1101 -- addon/doxmlparser/src/.cvsignore | 3 - addon/doxmlparser/src/Makefile.in | 13 - addon/doxmlparser/src/basehandler.cpp | 3 - addon/doxmlparser/src/basehandler.h | 325 - addon/doxmlparser/src/baseiterator.h | 50 - addon/doxmlparser/src/compoundhandler.cpp | 650 - addon/doxmlparser/src/compoundhandler.h | 236 - addon/doxmlparser/src/debug.cpp | 24 - addon/doxmlparser/src/debug.h | 7 - addon/doxmlparser/src/dochandler.cpp | 2241 --- addon/doxmlparser/src/dochandler.h | 1352 -- addon/doxmlparser/src/doxmlintf.h | 1101 -- addon/doxmlparser/src/doxmlparser.pro.in | 27 - addon/doxmlparser/src/graphhandler.cpp | 216 - addon/doxmlparser/src/graphhandler.h | 154 - addon/doxmlparser/src/linkedtexthandler.cpp | 133 - addon/doxmlparser/src/linkedtexthandler.h | 54 - addon/doxmlparser/src/loamhandler.cpp | 75 - addon/doxmlparser/src/loamhandler.h | 52 - addon/doxmlparser/src/mainhandler.cpp | 299 - addon/doxmlparser/src/mainhandler.h | 82 - addon/doxmlparser/src/memberhandler.cpp | 600 - addon/doxmlparser/src/memberhandler.h | 252 - addon/doxmlparser/src/paramhandler.cpp | 158 - addon/doxmlparser/src/paramhandler.h | 103 - addon/doxmlparser/src/sectionhandler.cpp | 168 - addon/doxmlparser/src/sectionhandler.h | 102 - addon/doxmlparser/src/stringimpl.h | 28 - addon/doxmlparser/test/.cvsignore | 3 - addon/doxmlparser/test/Makefile.in | 13 - addon/doxmlparser/test/main.cpp | 759 - addon/doxmlparser/test/xmlparse.pro.in | 20 - addon/doxywizard/.cvsignore | 8 - addon/doxywizard/Makefile.in | 42 - addon/doxywizard/Makefile.win_nmake.in | 38 - addon/doxywizard/README | 3 - addon/doxywizard/doxywizard.cpp | 1424 -- addon/doxywizard/doxywizard.h | 292 - addon/doxywizard/doxywizard.pro.in | 59 - addon/doxywizard/doxywizard.res | Bin 13464 -> 0 bytes addon/doxywizard/doxywizard.t | 45 - addon/doxywizard/expert.cpp | 276 - addon/doxywizard/expert.h | 82 - addon/doxywizard/input.h | 14 - addon/doxywizard/inputbool.cpp | 59 - addon/doxywizard/inputbool.h | 50 - addon/doxywizard/inputint.cpp | 65 - addon/doxywizard/inputint.h | 53 - addon/doxywizard/inputstring.cpp | 187 - addon/doxywizard/inputstring.h | 69 - addon/doxywizard/inputstrlist.cpp | 210 - addon/doxywizard/inputstrlist.h | 71 - addon/doxywizard/qtbc.h | 45 - addon/doxywizard/version.cpp | 1 - addon/doxywizard/version.h | 23 - configure | 545 - doc/.cvsignore | 1 - doc/Doxyfile | 50 - doc/Makefile.in | 36 - doc/Makefile.latex | 31 - doc/Makefile.win_make.in | 36 - doc/Makefile.win_nmake.in | 38 - doc/arch.doc | 241 - doc/archoverview.eps | 380 - doc/archoverview.gif | Bin 7822 -> 0 bytes doc/autolink.doc | 121 - doc/commands.doc | 2204 --- doc/config.doc | 1913 --- doc/diagrams.doc | 140 - doc/docblocks.doc | 396 - doc/doxygen.1 | 46 - doc/doxygen.sty | 72 - doc/doxygen_logo.eps | 6322 -------- doc/doxygen_logo.gif | Bin 29863 -> 0 bytes doc/doxygen_logo_low.gif | Bin 3952 -> 0 bytes doc/doxygen_manual.tex | 78 - doc/doxygen_usage.doc | 97 - doc/doxysearch_usage.doc | 180 - doc/doxytag.1 | 20 - doc/doxytag_usage.doc | 97 - doc/doxywizard.1 | 10 - doc/doxywizard.gif | Bin 18928 -> 0 bytes doc/doxywizard_expert.png | Bin 30056 -> 0 bytes doc/doxywizard_main.png | Bin 57204 -> 0 bytes doc/doxywizard_menu.png | Bin 58661 -> 0 bytes doc/doxywizard_page1.png | Bin 39646 -> 0 bytes doc/doxywizard_page2.png | Bin 39048 -> 0 bytes doc/doxywizard_page3.png | Bin 50904 -> 0 bytes doc/doxywizard_page4.png | Bin 43718 -> 0 bytes doc/doxywizard_usage.doc | 138 - doc/external.doc | 138 - doc/faq.doc | 320 - doc/features.doc | 97 - doc/formulas.doc | 107 - doc/grouping.doc | 225 - doc/history.doc | 126 - doc/htmlcmds.doc | 131 - doc/index.doc | 201 - doc/infoflow.eps | 607 - doc/infoflow.fig | 226 - doc/infoflow.gif | Bin 24468 -> 0 bytes doc/install.doc | 592 - doc/install_prefix | 2 - doc/installdox_usage.doc | 62 - doc/language.doc | 664 - doc/language.tpl | 357 - doc/lists.doc | 119 - doc/maintainers.txt | 116 - doc/output.doc | 56 - doc/perlmod.doc | 190 - doc/perlmod_tree.doc | 377 - doc/preprocessing.doc | 263 - doc/starting.doc | 287 - doc/translator.py | 1898 --- doc/translator_report.txt | 713 - doc/trouble.doc | 142 - doc/xmlcmds.doc | 90 - examples/.cvsignore | 1 - examples/Makefile.in | 112 - examples/Makefile.win.in | 110 - examples/afterdoc.cfg | 9 - examples/afterdoc.h | 18 - examples/author.cfg | 9 - examples/author.cpp | 14 - examples/autolink.cfg | 9 - examples/autolink.cpp | 99 - examples/class.cfg | 9 - examples/class.h | 11 - examples/define.cfg | 10 - examples/define.h | 18 - examples/diagrams.cfg | 13 - examples/diagrams_a.h | 4 - examples/diagrams_b.h | 5 - examples/diagrams_c.h | 6 - examples/diagrams_d.h | 7 - examples/diagrams_e.h | 5 - examples/docstring.cfg | 9 - examples/docstring.py | 26 - examples/enum.cfg | 9 - examples/enum.h | 24 - examples/example.cfg | 11 - examples/example.cpp | 19 - examples/example.tag | 14 - examples/example_test.cpp | 5 - examples/file.cfg | 9 - examples/file.h | 10 - examples/func.cfg | 9 - examples/func.h | 21 - examples/group.cfg | 9 - examples/group.cpp | 88 - examples/include.cfg | 10 - examples/include.cpp | 22 - examples/jdstyle.cfg | 9 - examples/jdstyle.cpp | 66 - examples/memgrp.cfg | 10 - examples/memgrp.cpp | 41 - examples/overload.cfg | 10 - examples/overload.cpp | 25 - examples/page.cfg | 9 - examples/page.doc | 14 - examples/par.cfg | 9 - examples/par.cpp | 20 - examples/pyexample.cfg | 9 - examples/pyexample.py | 29 - examples/qtstyle.cfg | 9 - examples/qtstyle.cpp | 65 - examples/relates.cfg | 9 - examples/relates.cpp | 23 - examples/restypedef.cfg | 9 - examples/restypedef.cpp | 25 - examples/structcmd.cfg | 9 - examples/structcmd.h | 57 - examples/tag.cfg | 11 - examples/tag.cpp | 9 - examples/templ.cfg | 9 - examples/templ.cpp | 35 - libmd5/.cvsignore | 3 - libmd5/Makefile.in | 16 - libmd5/libmd5.pro.in | 10 - libmd5/md5.c | 352 - libmd5/md5.h | 52 - libmd5/md5_loc.h | 27 - libpng/.cvsignore | 3 - libpng/LICENSE | 102 - libpng/Makefile.in | 16 - libpng/README | 2 - libpng/adler32.c | 45 - libpng/compress.c | 59 - libpng/crc32.c | 159 - libpng/deflate.c | 1306 -- libpng/deflate.h | 318 - libpng/gzio.c | 831 -- libpng/infblock.c | 388 - libpng/infblock.h | 39 - libpng/infcodes.c | 246 - libpng/infcodes.h | 27 - libpng/inffast.c | 183 - libpng/inffast.h | 17 - libpng/inffixed.h | 151 - libpng/inflate.c | 350 - libpng/inftrees.c | 456 - libpng/inftrees.h | 58 - libpng/infutil.c | 84 - libpng/infutil.h | 98 - libpng/libpng.pro.in | 53 - libpng/png.c | 777 - libpng/png.h | 3200 ---- libpng/pngasmrd.h | 11 - libpng/pngconf.h | 1331 -- libpng/pngerror.c | 289 - libpng/pnggccrd.c | 5340 ------- libpng/pngget.c | 917 -- libpng/pngmem.c | 517 - libpng/pngpread.c | 1502 -- libpng/pngread.c | 1398 -- libpng/pngrio.c | 161 - libpng/pngrtran.c | 4137 ------ libpng/pngrutil.c | 3005 ---- libpng/pngset.c | 1033 -- libpng/pngtrans.c | 640 - libpng/pngvcrd.c | 3845 ----- libpng/pngwio.c | 228 - libpng/pngwrite.c | 1432 -- libpng/pngwtran.c | 563 - libpng/pngwutil.c | 2669 ---- libpng/trees.c | 1204 -- libpng/trees.h | 128 - libpng/uncompr.c | 54 - libpng/zconf.h | 279 - libpng/zlib.h | 893 -- libpng/zutil.c | 210 - libpng/zutil.h | 220 - make.bat | 60 - packages/rpm/build.sh | 21 - packages/rpm/doxygen.spec | 150 - qtools/.cvsignore | 3 - qtools/Doxyfile | 1144 -- qtools/LICENSE.GPL | 349 - qtools/LICENSE.QPL | 103 - qtools/Makefile.in | 30 - qtools/README | 4 - qtools/qarray.doc | 486 - qtools/qarray.h | 110 - qtools/qasciidict.h | 107 - qtools/qbuffer.cpp | 465 - qtools/qbuffer.h | 98 - qtools/qcache.h | 148 - qtools/qcollection.cpp | 182 - qtools/qcollection.h | 74 - qtools/qconfig.h | 1 - qtools/qcstring.cpp | 1917 --- qtools/qcstring.h | 407 - qtools/qdatastream.cpp | 951 -- qtools/qdatastream.h | 173 - qtools/qdatetime.cpp | 1434 -- qtools/qdatetime.h | 216 - qtools/qdict.doc | 492 - qtools/qdict.h | 116 - qtools/qdir.cpp | 1200 -- qtools/qdir.h | 235 - qtools/qdir_unix.cpp | 288 - qtools/qdir_win32.cpp | 406 - qtools/qfeatures.h | 978 -- qtools/qfile.cpp | 550 - qtools/qfile.h | 124 - qtools/qfile_unix.cpp | 634 - qtools/qfile_win32.cpp | 593 - qtools/qfiledefs_p.h | 259 - qtools/qfileinfo.cpp | 458 - qtools/qfileinfo.h | 138 - qtools/qfileinfo_unix.cpp | 425 - qtools/qfileinfo_win32.cpp | 334 - qtools/qgarray.cpp | 747 - qtools/qgarray.h | 120 - qtools/qgcache.cpp | 868 -- qtools/qgcache.h | 128 - qtools/qgdict.cpp | 1218 -- qtools/qgdict.h | 222 - qtools/qgeneric.h | 43 - qtools/qglist.cpp | 1223 -- qtools/qglist.h | 257 - qtools/qglobal.cpp | 685 - qtools/qglobal.h | 601 - qtools/qgvector.cpp | 638 - qtools/qgvector.h | 120 - qtools/qintdict.doc | 475 - qtools/qintdict.h | 102 - qtools/qiodevice.cpp | 638 - qtools/qiodevice.h | 155 - qtools/qlist.doc | 1048 -- qtools/qlist.h | 139 - qtools/qmap.cpp | 254 - qtools/qmap.h | 606 - qtools/qmodules.h | 11 - qtools/qptrdict.doc | 486 - qtools/qptrdict.h | 103 - qtools/qqueue.h | 70 - qtools/qregexp.cpp | 1091 -- qtools/qregexp.h | 92 - qtools/qshared.h | 55 - qtools/qsortedlist.doc | 94 - qtools/qsortedlist.h | 59 - qtools/qstack.doc | 135 - qtools/qstack.h | 70 - qtools/qstring.cpp | 15222 -------------------- qtools/qstring.h | 825 -- qtools/qstringlist.cpp | 302 - qtools/qstringlist.h | 81 - qtools/qstrlist.doc | 5 - qtools/qstrlist.h | 109 - qtools/qstrvec.h | 90 - qtools/qtextcodec.cpp | 2071 --- qtools/qtextcodec.h | 104 - qtools/qtextstream.cpp | 2237 --- qtools/qtextstream.h | 351 - qtools/qtl.doc | 249 - qtools/qtl.h | 223 - qtools/qtools.pro.in | 83 - qtools/qvaluelist.doc | 772 - qtools/qvaluelist.h | 449 - qtools/qvaluestack.h | 64 - qtools/qvector.doc | 344 - qtools/qvector.h | 85 - qtools/qxml.cpp | 6046 -------- qtools/qxml.h | 664 - qtools/scstring.cpp | 785 - qtools/scstring.h | 154 - src/.cvsignore | 25 - src/Makefile.in | 53 - src/bufstr.h | 107 - src/classdef.cpp | 3022 ---- src/classdef.h | 581 - src/classlist.cpp | 163 - src/classlist.h | 59 - src/cmdmapper.cpp | 188 - src/cmdmapper.h | 204 - src/code.h | 34 - src/code.l | 3070 ---- src/commentcnv.h | 27 - src/commentcnv.l | 567 - src/commentscan.h | 80 - src/commentscan.l | 2412 ---- src/compound.xsd | 774 - src/compound_xsd.h | 774 - src/config.h | 577 - src/config.l | 2863 ---- src/constexp.h | 33 - src/constexp.l | 120 - src/constexp.y | 278 - src/cppvalue.cpp | 87 - src/cppvalue.h | 62 - src/debug.cpp | 116 - src/debug.h | 49 - src/declinfo.h | 33 - src/declinfo.l | 355 - src/defargs.h | 28 - src/defargs.l | 436 - src/defgen.cpp | 628 - src/defgen.h | 20 - src/define.cpp | 46 - src/define.h | 91 - src/definition.cpp | 853 -- src/definition.h | 277 - src/diagram.cpp | 1291 -- src/diagram.h | 132 - src/dirdef.cpp | 880 -- src/dirdef.h | 172 - src/docparser.cpp | 5738 -------- src/docparser.h | 1233 -- src/doctokenizer.h | 147 - src/doctokenizer.l | 1063 -- src/docvisitor.h | 183 - src/dot.cpp | 3097 ---- src/dot.h | 318 - src/doxygen.cpp | 8997 ------------ src/doxygen.h | 130 - src/doxygen.pro.in | 40 - src/doxytag.l | 929 -- src/doxytag.pro.in | 31 - src/doxytag.t | 50 - src/entry.cpp | 284 - src/entry.h | 352 - src/example.h | 45 - src/filedef.cpp | 1293 -- src/filedef.h | 313 - src/filename.cpp | 144 - src/filename.h | 69 - src/formula.cpp | 353 - src/formula.h | 59 - src/ftvhelp.cpp | 788 - src/ftvhelp.h | 91 - src/groupdef.cpp | 1019 -- src/groupdef.h | 168 - src/htags.cpp | 176 - src/htags.h | 28 - src/htmlattrib.h | 65 - src/htmldocvisitor.cpp | 1123 -- src/htmldocvisitor.h | 154 - src/htmlgen.cpp | 1685 --- src/htmlgen.h | 236 - src/htmlhelp.cpp | 566 - src/htmlhelp.h | 96 - src/image.cpp | 331 - src/image.h | 52 - src/increasebuffer.pl | 8 - src/index.cpp | 3346 ----- src/index.h | 165 - src/index.xsd | 66 - src/index_xsd.h | 66 - src/instdox.cpp | 186 - src/instdox.h | 23 - src/lang_cfg.h | 32 - src/language.cpp | 351 - src/language.h | 26 - src/latexdocvisitor.cpp | 1115 -- src/latexdocvisitor.h | 164 - src/latexgen.cpp | 1551 -- src/latexgen.h | 224 - src/libdoxycfg.pro.in | 27 - src/libdoxycfg.t | 49 - src/libdoxygen.pro.in | 208 - src/libdoxygen.t | 96 - src/logos.cpp | 3072 ---- src/logos.h | 27 - src/main.cpp | 40 - src/mandocvisitor.cpp | 934 -- src/mandocvisitor.h | 155 - src/mangen.cpp | 638 - src/mangen.h | 281 - src/memberdef.cpp | 2471 ---- src/memberdef.h | 416 - src/membergroup.cpp | 235 - src/membergroup.h | 130 - src/memberlist.cpp | 499 - src/memberlist.h | 99 - src/membername.cpp | 105 - src/membername.h | 98 - src/message.cpp | 204 - src/message.h | 31 - src/namespacedef.cpp | 658 - src/namespacedef.h | 174 - src/outputgen.cpp | 99 - src/outputgen.h | 444 - src/outputlist.cpp | 314 - src/outputlist.h | 435 - src/pagedef.cpp | 149 - src/pagedef.h | 70 - src/parserintf.h | 145 - src/perlmodgen.cpp | 2784 ---- src/perlmodgen.h | 23 - src/pngenc.cpp | 170 - src/pngenc.h | 58 - src/pre.h | 32 - src/pre.l | 2343 --- src/printdocvisitor.h | 665 - src/pycode.h | 39 - src/pycode.l | 1435 -- src/pyscanner.h | 54 - src/pyscanner.l | 1438 -- src/qtbc.h | 45 - src/reflist.cpp | 105 - src/reflist.h | 70 - src/rtfdocvisitor.cpp | 1416 -- src/rtfdocvisitor.h | 162 - src/rtfgen.cpp | 2516 ---- src/rtfgen.h | 305 - src/rtfstyle.cpp | 522 - src/rtfstyle.h | 83 - src/scanner.h | 51 - src/scanner.l | 4653 ------ src/search.php | 327 - src/search_php.h | 327 - src/searchindex.cpp | 285 - src/searchindex.h | 71 - src/section.h | 63 - src/sortdict.h | 564 - src/tagreader.cpp | 1399 -- src/tagreader.h | 28 - src/translator.cpp | 248 - src/translator.h | 444 - src/translator_adapter.h | 187 - src/translator_br.h | 1617 --- src/translator_ca.h | 1562 -- src/translator_cn.h | 1500 -- src/translator_cz.h | 1625 --- src/translator_de.h | 1648 --- src/translator_dk.h | 1476 -- src/translator_en.h | 1624 --- src/translator_es.h | 1384 -- src/translator_fi.h | 584 - src/translator_fr.h | 1671 --- src/translator_gr.h | 1335 -- src/translator_hr.h | 1261 -- src/translator_hu.h | 1545 -- src/translator_id.h | 1596 -- src/translator_it.h | 1529 -- src/translator_je.h | 67 - src/translator_jp.h | 1513 -- src/translator_ke.h | 59 - src/translator_kr.h | 1560 -- src/translator_lt.h | 1562 -- src/translator_nl.h | 1219 -- src/translator_no.h | 1552 -- src/translator_pl.h | 1575 -- src/translator_pt.h | 1480 -- src/translator_ro.h | 1621 --- src/translator_ru.h | 1580 -- src/translator_se.h | 1437 -- src/translator_si.h | 1028 -- src/translator_sk.h | 1395 -- src/translator_sr.h | 1617 --- src/translator_tw.h | 1598 -- src/translator_ua.h | 1586 -- src/translator_za.h | 1555 -- src/unistd.h | 7 - src/util.cpp | 5616 -------- src/util.h | 243 - src/version.h | 23 - src/xmldocvisitor.cpp | 917 -- src/xmldocvisitor.h | 156 - src/xmlgen.cpp | 1784 --- src/xmlgen.h | 20 - tmake/CHANGES | 49 - tmake/LICENSE | 9 - tmake/README | 10 - tmake/bin/progen | 249 - tmake/bin/tmake | 1262 -- tmake/doc/m-linux-gcc.html | 85 - tmake/doc/m-win32-msvc.html | 89 - tmake/doc/tmake.html | 727 - tmake/doc/tmake_ref.html | 463 - tmake/example/hello.cpp | 102 - tmake/example/hello.h | 34 - tmake/example/hello.pro | 3 - tmake/example/main.cpp | 38 - tmake/example/wc.t | 6 - tmake/lib/aix-g++/app.t | 2 - tmake/lib/aix-g++/lib.t | 2 - tmake/lib/aix-g++/subdirs.t | 2 - tmake/lib/aix-g++/tmake.conf | 58 - tmake/lib/aix-xlc/app.t | 2 - tmake/lib/aix-xlc/lib.t | 2 - tmake/lib/aix-xlc/subdirs.t | 2 - tmake/lib/aix-xlc/tmake.conf | 66 - tmake/lib/beos-g++/app.t | 2 - tmake/lib/beos-g++/lib.t | 2 - tmake/lib/beos-g++/subdirs.t | 2 - tmake/lib/beos-g++/tmake.conf | 51 - tmake/lib/bsdi-g++/app.t | 2 - tmake/lib/bsdi-g++/lib.t | 2 - tmake/lib/bsdi-g++/subdirs.t | 2 - tmake/lib/bsdi-g++/tmake.conf | 61 - tmake/lib/dgux-g++/app.t | 2 - tmake/lib/dgux-g++/lib.t | 2 - tmake/lib/dgux-g++/subdirs.t | 2 - tmake/lib/dgux-g++/tmake.conf | 59 - tmake/lib/freebsd-g++/app.t | 2 - tmake/lib/freebsd-g++/lib.t | 2 - tmake/lib/freebsd-g++/subdirs.t | 2 - tmake/lib/freebsd-g++/tmake.conf | 60 - tmake/lib/gnu-g++/app.t | 2 - tmake/lib/gnu-g++/lib.t | 2 - tmake/lib/gnu-g++/subdirs.t | 2 - tmake/lib/gnu-g++/tmake.conf | 58 - tmake/lib/hpux-acc/app.t | 2 - tmake/lib/hpux-acc/lib.t | 2 - tmake/lib/hpux-acc/subdirs.t | 2 - tmake/lib/hpux-acc/tmake.conf | 60 - tmake/lib/hpux-cc/app.t | 2 - tmake/lib/hpux-cc/lib.t | 2 - tmake/lib/hpux-cc/subdirs.t | 2 - tmake/lib/hpux-cc/tmake.conf | 59 - tmake/lib/hpux-g++/app.t | 2 - tmake/lib/hpux-g++/lib.t | 2 - tmake/lib/hpux-g++/subdirs.t | 2 - tmake/lib/hpux-g++/tmake.conf | 60 - tmake/lib/irix-64/app.t | 2 - tmake/lib/irix-64/lib.t | 2 - tmake/lib/irix-64/subdirs.t | 2 - tmake/lib/irix-64/tmake.conf | 60 - tmake/lib/irix-dcc/app.t | 2 - tmake/lib/irix-dcc/lib.t | 2 - tmake/lib/irix-dcc/subdirs.t | 2 - tmake/lib/irix-dcc/tmake.conf | 60 - tmake/lib/irix-g++/app.t | 2 - tmake/lib/irix-g++/lib.t | 2 - tmake/lib/irix-g++/subdirs.t | 2 - tmake/lib/irix-g++/tmake.conf | 60 - tmake/lib/irix-n32/app.t | 2 - tmake/lib/irix-n32/lib.t | 2 - tmake/lib/irix-n32/subdirs.t | 2 - tmake/lib/irix-n32/tmake.conf | 60 - tmake/lib/irix-o32/app.t | 2 - tmake/lib/irix-o32/lib.t | 2 - tmake/lib/irix-o32/subdirs.t | 2 - tmake/lib/irix-o32/tmake.conf | 60 - tmake/lib/linux-g++/app.t | 2 - tmake/lib/linux-g++/lib.t | 2 - tmake/lib/linux-g++/subdirs.t | 2 - tmake/lib/linux-g++/tmake.conf | 59 - tmake/lib/m68k-atari-mint-g++/app.t | 2 - tmake/lib/m68k-atari-mint-g++/lib.t | 2 - tmake/lib/m68k-atari-mint-g++/subdirs.t | 2 - tmake/lib/m68k-atari-mint-g++/tmake.conf | 59 - tmake/lib/macosx-c++/app.t | 2 - tmake/lib/macosx-c++/lib.t | 2 - tmake/lib/macosx-c++/subdirs.t | 2 - tmake/lib/macosx-c++/tmake.conf | 60 - tmake/lib/netbsd-g++/app.t | 2 - tmake/lib/netbsd-g++/lib.t | 2 - tmake/lib/netbsd-g++/subdirs.t | 2 - tmake/lib/netbsd-g++/tmake.conf | 61 - tmake/lib/openbsd-g++/app.t | 2 - tmake/lib/openbsd-g++/lib.t | 2 - tmake/lib/openbsd-g++/subdirs.t | 2 - tmake/lib/openbsd-g++/tmake.conf | 61 - tmake/lib/osf1-cxx/app.t | 2 - tmake/lib/osf1-cxx/lib.t | 2 - tmake/lib/osf1-cxx/subdirs.t | 2 - tmake/lib/osf1-cxx/tmake.conf | 60 - tmake/lib/osf1-g++/app.t | 2 - tmake/lib/osf1-g++/lib.t | 2 - tmake/lib/osf1-g++/subdirs.t | 2 - tmake/lib/osf1-g++/tmake.conf | 58 - tmake/lib/qnx-g++/app.t | 2 - tmake/lib/qnx-g++/lib.t | 2 - tmake/lib/qnx-g++/subdirs.t | 2 - tmake/lib/qnx-g++/tmake.conf | 58 - tmake/lib/sco-g++/app.t | 2 - tmake/lib/sco-g++/lib.t | 2 - tmake/lib/sco-g++/subdirs.t | 2 - tmake/lib/sco-g++/tmake.conf | 58 - tmake/lib/solaris-cc-gcc/app.t | 2 - tmake/lib/solaris-cc-gcc/lib.t | 2 - tmake/lib/solaris-cc-gcc/subdirs.t | 2 - tmake/lib/solaris-cc-gcc/tmake.conf | 62 - tmake/lib/solaris-cc/app.t | 2 - tmake/lib/solaris-cc/lib.t | 2 - tmake/lib/solaris-cc/subdirs.t | 2 - tmake/lib/solaris-cc/tmake.conf | 61 - tmake/lib/solaris-g++/app.t | 2 - tmake/lib/solaris-g++/lib.t | 2 - tmake/lib/solaris-g++/subdirs.t | 2 - tmake/lib/solaris-g++/tmake.conf | 59 - tmake/lib/sunos-g++/app.t | 2 - tmake/lib/sunos-g++/lib.t | 2 - tmake/lib/sunos-g++/subdirs.t | 2 - tmake/lib/sunos-g++/tmake.conf | 58 - tmake/lib/ultrix-g++/app.t | 2 - tmake/lib/ultrix-g++/lib.t | 2 - tmake/lib/ultrix-g++/subdirs.t | 2 - tmake/lib/ultrix-g++/tmake.conf | 58 - tmake/lib/unix/app.t | 6 - tmake/lib/unix/generic.t | 283 - tmake/lib/unix/lib.t | 6 - tmake/lib/unix/subdirs.t | 38 - tmake/lib/unixware-g++/app.t | 2 - tmake/lib/unixware-g++/lib.t | 2 - tmake/lib/unixware-g++/subdirs.t | 2 - tmake/lib/unixware-g++/tmake.conf | 60 - tmake/lib/unixware7-cc/app.t | 2 - tmake/lib/unixware7-cc/lib.t | 2 - tmake/lib/unixware7-cc/subdirs.t | 2 - tmake/lib/unixware7-cc/tmake.conf | 60 - tmake/lib/unixware7-g++/app.t | 2 - tmake/lib/unixware7-g++/lib.t | 2 - tmake/lib/unixware7-g++/subdirs.t | 2 - tmake/lib/unixware7-g++/tmake.conf | 60 - tmake/lib/win32-borland/app.t | 6 - tmake/lib/win32-borland/generic.t | 237 - tmake/lib/win32-borland/lib.t | 6 - tmake/lib/win32-borland/subdirs.t | 3 - tmake/lib/win32-borland/tmake.conf | 56 - tmake/lib/win32-g++/app.t | 6 - tmake/lib/win32-g++/generic.t | 241 - tmake/lib/win32-g++/lib.t | 6 - tmake/lib/win32-g++/subdirs.t | 2 - tmake/lib/win32-g++/tmake.conf | 56 - tmake/lib/win32-mingw/app.t | 6 - tmake/lib/win32-mingw/generic.t | 241 - tmake/lib/win32-mingw/lib.t | 6 - tmake/lib/win32-mingw/subdirs.t | 2 - tmake/lib/win32-mingw/tmake.conf | 56 - tmake/lib/win32-msvc/app.t | 6 - tmake/lib/win32-msvc/generic.t | 229 - tmake/lib/win32-msvc/lib.t | 6 - tmake/lib/win32-msvc/subdirs.t | 2 - tmake/lib/win32-msvc/tmake.conf | 65 - tmake/lib/win32-msvc/vcapp.t | 244 - tmake/lib/win32-msvc/vclib.t | 178 - tmake/lib/win32-symantec/app.t | 6 - tmake/lib/win32-symantec/generic.t | 211 - tmake/lib/win32-symantec/lib.t | 6 - tmake/lib/win32-symantec/subdirs.t | 2 - tmake/lib/win32-symantec/tmake.conf | 56 - tmake/lib/win32-visage/app.t | 6 - tmake/lib/win32-visage/generic.t | 207 - tmake/lib/win32-visage/lib.t | 6 - tmake/lib/win32-visage/subdirs.t | 2 - tmake/lib/win32-visage/tmake.conf | 56 - tmake/lib/win32-watcom/app.t | 6 - tmake/lib/win32-watcom/generic.t | 201 - tmake/lib/win32-watcom/lib.t | 6 - tmake/lib/win32-watcom/subdirs.t | 2 - tmake/lib/win32-watcom/tmake.conf | 54 - tmake/lib/win32/subdirs.t | 54 - wintools/Doxygen.dsp | 700 - wintools/Doxygen.dsw | 89 - wintools/Doxytag.dsp | 163 - wintools/Doxytag.dsw | 33 - wintools/README | 20 - wintools/libpng.dsp | 188 - wintools/libpng.dsw | 29 - wintools/make.pl | 39 - wintools/qtools.dsp | 359 - wintools/qtools.dsw | 33 - wintools/zlib.dsp | 191 - wintools/zlib.dsw | 33 - 746 files changed, 299252 deletions(-) delete mode 100644 .cvsignore delete mode 100644 CVSROOT/checkoutlist delete mode 100644 CVSROOT/commitinfo delete mode 100644 CVSROOT/config delete mode 100644 CVSROOT/cvswrappers delete mode 100644 CVSROOT/editinfo delete mode 100644 CVSROOT/loginfo delete mode 100644 CVSROOT/modules delete mode 100644 CVSROOT/notify delete mode 100644 CVSROOT/rcsinfo delete mode 100644 CVSROOT/taginfo delete mode 100644 CVSROOT/verifymsg delete mode 100644 Doxyfile delete mode 100644 INSTALL delete mode 100644 LANGUAGE.HOWTO delete mode 100644 LICENSE delete mode 100644 Makefile.in delete mode 100644 Makefile.win_make.in delete mode 100644 Makefile.win_nmake.in delete mode 100644 PLATFORMS delete mode 100644 README delete mode 100644 addon/doxmlparser/Doxyfile delete mode 100644 addon/doxmlparser/Doxyfile.impl delete mode 100644 addon/doxmlparser/examples/metrics/.cvsignore delete mode 100644 addon/doxmlparser/examples/metrics/Makefile.in delete mode 100644 addon/doxmlparser/examples/metrics/main.cpp delete mode 100644 addon/doxmlparser/examples/metrics/metrics.pro.in delete mode 100644 addon/doxmlparser/include/doxmlintf.h delete mode 100644 addon/doxmlparser/src/.cvsignore delete mode 100644 addon/doxmlparser/src/Makefile.in delete mode 100644 addon/doxmlparser/src/basehandler.cpp delete mode 100644 addon/doxmlparser/src/basehandler.h delete mode 100644 addon/doxmlparser/src/baseiterator.h delete mode 100644 addon/doxmlparser/src/compoundhandler.cpp delete mode 100644 addon/doxmlparser/src/compoundhandler.h delete mode 100644 addon/doxmlparser/src/debug.cpp delete mode 100644 addon/doxmlparser/src/debug.h delete mode 100644 addon/doxmlparser/src/dochandler.cpp delete mode 100644 addon/doxmlparser/src/dochandler.h delete mode 100644 addon/doxmlparser/src/doxmlintf.h delete mode 100644 addon/doxmlparser/src/doxmlparser.pro.in delete mode 100644 addon/doxmlparser/src/graphhandler.cpp delete mode 100644 addon/doxmlparser/src/graphhandler.h delete mode 100644 addon/doxmlparser/src/linkedtexthandler.cpp delete mode 100644 addon/doxmlparser/src/linkedtexthandler.h delete mode 100644 addon/doxmlparser/src/loamhandler.cpp delete mode 100644 addon/doxmlparser/src/loamhandler.h delete mode 100644 addon/doxmlparser/src/mainhandler.cpp delete mode 100644 addon/doxmlparser/src/mainhandler.h delete mode 100644 addon/doxmlparser/src/memberhandler.cpp delete mode 100644 addon/doxmlparser/src/memberhandler.h delete mode 100644 addon/doxmlparser/src/paramhandler.cpp delete mode 100644 addon/doxmlparser/src/paramhandler.h delete mode 100644 addon/doxmlparser/src/sectionhandler.cpp delete mode 100644 addon/doxmlparser/src/sectionhandler.h delete mode 100644 addon/doxmlparser/src/stringimpl.h delete mode 100644 addon/doxmlparser/test/.cvsignore delete mode 100644 addon/doxmlparser/test/Makefile.in delete mode 100644 addon/doxmlparser/test/main.cpp delete mode 100644 addon/doxmlparser/test/xmlparse.pro.in delete mode 100644 addon/doxywizard/.cvsignore delete mode 100644 addon/doxywizard/Makefile.in delete mode 100644 addon/doxywizard/Makefile.win_nmake.in delete mode 100644 addon/doxywizard/README delete mode 100644 addon/doxywizard/doxywizard.cpp delete mode 100644 addon/doxywizard/doxywizard.h delete mode 100644 addon/doxywizard/doxywizard.pro.in delete mode 100755 addon/doxywizard/doxywizard.res delete mode 100644 addon/doxywizard/doxywizard.t delete mode 100644 addon/doxywizard/expert.cpp delete mode 100644 addon/doxywizard/expert.h delete mode 100644 addon/doxywizard/input.h delete mode 100644 addon/doxywizard/inputbool.cpp delete mode 100644 addon/doxywizard/inputbool.h delete mode 100644 addon/doxywizard/inputint.cpp delete mode 100644 addon/doxywizard/inputint.h delete mode 100644 addon/doxywizard/inputstring.cpp delete mode 100644 addon/doxywizard/inputstring.h delete mode 100644 addon/doxywizard/inputstrlist.cpp delete mode 100644 addon/doxywizard/inputstrlist.h delete mode 100644 addon/doxywizard/qtbc.h delete mode 100644 addon/doxywizard/version.cpp delete mode 100644 addon/doxywizard/version.h delete mode 100755 configure delete mode 100644 doc/.cvsignore delete mode 100644 doc/Doxyfile delete mode 100644 doc/Makefile.in delete mode 100644 doc/Makefile.latex delete mode 100644 doc/Makefile.win_make.in delete mode 100644 doc/Makefile.win_nmake.in delete mode 100644 doc/arch.doc delete mode 100644 doc/archoverview.eps delete mode 100644 doc/archoverview.gif delete mode 100644 doc/autolink.doc delete mode 100644 doc/commands.doc delete mode 100644 doc/config.doc delete mode 100644 doc/diagrams.doc delete mode 100644 doc/docblocks.doc delete mode 100644 doc/doxygen.1 delete mode 100644 doc/doxygen.sty delete mode 100644 doc/doxygen_logo.eps delete mode 100644 doc/doxygen_logo.gif delete mode 100644 doc/doxygen_logo_low.gif delete mode 100644 doc/doxygen_manual.tex delete mode 100644 doc/doxygen_usage.doc delete mode 100644 doc/doxysearch_usage.doc delete mode 100644 doc/doxytag.1 delete mode 100644 doc/doxytag_usage.doc delete mode 100644 doc/doxywizard.1 delete mode 100644 doc/doxywizard.gif delete mode 100644 doc/doxywizard_expert.png delete mode 100644 doc/doxywizard_main.png delete mode 100644 doc/doxywizard_menu.png delete mode 100644 doc/doxywizard_page1.png delete mode 100644 doc/doxywizard_page2.png delete mode 100644 doc/doxywizard_page3.png delete mode 100644 doc/doxywizard_page4.png delete mode 100644 doc/doxywizard_usage.doc delete mode 100644 doc/external.doc delete mode 100644 doc/faq.doc delete mode 100644 doc/features.doc delete mode 100644 doc/formulas.doc delete mode 100644 doc/grouping.doc delete mode 100644 doc/history.doc delete mode 100644 doc/htmlcmds.doc delete mode 100644 doc/index.doc delete mode 100644 doc/infoflow.eps delete mode 100644 doc/infoflow.fig delete mode 100644 doc/infoflow.gif delete mode 100644 doc/install.doc delete mode 100644 doc/install_prefix delete mode 100644 doc/installdox_usage.doc delete mode 100644 doc/language.doc delete mode 100644 doc/language.tpl delete mode 100644 doc/lists.doc delete mode 100644 doc/maintainers.txt delete mode 100644 doc/output.doc delete mode 100644 doc/perlmod.doc delete mode 100644 doc/perlmod_tree.doc delete mode 100644 doc/preprocessing.doc delete mode 100644 doc/starting.doc delete mode 100644 doc/translator.py delete mode 100644 doc/translator_report.txt delete mode 100644 doc/trouble.doc delete mode 100644 doc/xmlcmds.doc delete mode 100644 examples/.cvsignore delete mode 100644 examples/Makefile.in delete mode 100644 examples/Makefile.win.in delete mode 100644 examples/afterdoc.cfg delete mode 100644 examples/afterdoc.h delete mode 100644 examples/author.cfg delete mode 100644 examples/author.cpp delete mode 100644 examples/autolink.cfg delete mode 100644 examples/autolink.cpp delete mode 100644 examples/class.cfg delete mode 100644 examples/class.h delete mode 100644 examples/define.cfg delete mode 100644 examples/define.h delete mode 100644 examples/diagrams.cfg delete mode 100644 examples/diagrams_a.h delete mode 100644 examples/diagrams_b.h delete mode 100644 examples/diagrams_c.h delete mode 100644 examples/diagrams_d.h delete mode 100644 examples/diagrams_e.h delete mode 100644 examples/docstring.cfg delete mode 100644 examples/docstring.py delete mode 100644 examples/enum.cfg delete mode 100644 examples/enum.h delete mode 100644 examples/example.cfg delete mode 100644 examples/example.cpp delete mode 100644 examples/example.tag delete mode 100644 examples/example_test.cpp delete mode 100644 examples/file.cfg delete mode 100644 examples/file.h delete mode 100644 examples/func.cfg delete mode 100644 examples/func.h delete mode 100644 examples/group.cfg delete mode 100644 examples/group.cpp delete mode 100644 examples/include.cfg delete mode 100644 examples/include.cpp delete mode 100644 examples/jdstyle.cfg delete mode 100644 examples/jdstyle.cpp delete mode 100644 examples/memgrp.cfg delete mode 100644 examples/memgrp.cpp delete mode 100644 examples/overload.cfg delete mode 100644 examples/overload.cpp delete mode 100644 examples/page.cfg delete mode 100644 examples/page.doc delete mode 100644 examples/par.cfg delete mode 100644 examples/par.cpp delete mode 100644 examples/pyexample.cfg delete mode 100644 examples/pyexample.py delete mode 100644 examples/qtstyle.cfg delete mode 100644 examples/qtstyle.cpp delete mode 100644 examples/relates.cfg delete mode 100644 examples/relates.cpp delete mode 100644 examples/restypedef.cfg delete mode 100644 examples/restypedef.cpp delete mode 100644 examples/structcmd.cfg delete mode 100644 examples/structcmd.h delete mode 100644 examples/tag.cfg delete mode 100644 examples/tag.cpp delete mode 100644 examples/templ.cfg delete mode 100644 examples/templ.cpp delete mode 100644 libmd5/.cvsignore delete mode 100644 libmd5/Makefile.in delete mode 100644 libmd5/libmd5.pro.in delete mode 100644 libmd5/md5.c delete mode 100644 libmd5/md5.h delete mode 100644 libmd5/md5_loc.h delete mode 100644 libpng/.cvsignore delete mode 100644 libpng/LICENSE delete mode 100644 libpng/Makefile.in delete mode 100644 libpng/README delete mode 100644 libpng/adler32.c delete mode 100644 libpng/compress.c delete mode 100644 libpng/crc32.c delete mode 100644 libpng/deflate.c delete mode 100644 libpng/deflate.h delete mode 100644 libpng/gzio.c delete mode 100644 libpng/infblock.c delete mode 100644 libpng/infblock.h delete mode 100644 libpng/infcodes.c delete mode 100644 libpng/infcodes.h delete mode 100644 libpng/inffast.c delete mode 100644 libpng/inffast.h delete mode 100644 libpng/inffixed.h delete mode 100644 libpng/inflate.c delete mode 100644 libpng/inftrees.c delete mode 100644 libpng/inftrees.h delete mode 100644 libpng/infutil.c delete mode 100644 libpng/infutil.h delete mode 100644 libpng/libpng.pro.in delete mode 100644 libpng/png.c delete mode 100644 libpng/png.h delete mode 100644 libpng/pngasmrd.h delete mode 100644 libpng/pngconf.h delete mode 100644 libpng/pngerror.c delete mode 100644 libpng/pnggccrd.c delete mode 100644 libpng/pngget.c delete mode 100644 libpng/pngmem.c delete mode 100644 libpng/pngpread.c delete mode 100644 libpng/pngread.c delete mode 100644 libpng/pngrio.c delete mode 100644 libpng/pngrtran.c delete mode 100644 libpng/pngrutil.c delete mode 100644 libpng/pngset.c delete mode 100644 libpng/pngtrans.c delete mode 100644 libpng/pngvcrd.c delete mode 100644 libpng/pngwio.c delete mode 100644 libpng/pngwrite.c delete mode 100644 libpng/pngwtran.c delete mode 100644 libpng/pngwutil.c delete mode 100644 libpng/trees.c delete mode 100644 libpng/trees.h delete mode 100644 libpng/uncompr.c delete mode 100644 libpng/zconf.h delete mode 100644 libpng/zlib.h delete mode 100644 libpng/zutil.c delete mode 100644 libpng/zutil.h delete mode 100644 make.bat delete mode 100644 packages/rpm/build.sh delete mode 100644 packages/rpm/doxygen.spec delete mode 100644 qtools/.cvsignore delete mode 100644 qtools/Doxyfile delete mode 100644 qtools/LICENSE.GPL delete mode 100644 qtools/LICENSE.QPL delete mode 100644 qtools/Makefile.in delete mode 100644 qtools/README delete mode 100644 qtools/qarray.doc delete mode 100644 qtools/qarray.h delete mode 100644 qtools/qasciidict.h delete mode 100644 qtools/qbuffer.cpp delete mode 100644 qtools/qbuffer.h delete mode 100644 qtools/qcache.h delete mode 100644 qtools/qcollection.cpp delete mode 100644 qtools/qcollection.h delete mode 100644 qtools/qconfig.h delete mode 100644 qtools/qcstring.cpp delete mode 100644 qtools/qcstring.h delete mode 100644 qtools/qdatastream.cpp delete mode 100644 qtools/qdatastream.h delete mode 100644 qtools/qdatetime.cpp delete mode 100644 qtools/qdatetime.h delete mode 100644 qtools/qdict.doc delete mode 100644 qtools/qdict.h delete mode 100644 qtools/qdir.cpp delete mode 100644 qtools/qdir.h delete mode 100644 qtools/qdir_unix.cpp delete mode 100644 qtools/qdir_win32.cpp delete mode 100644 qtools/qfeatures.h delete mode 100644 qtools/qfile.cpp delete mode 100644 qtools/qfile.h delete mode 100644 qtools/qfile_unix.cpp delete mode 100644 qtools/qfile_win32.cpp delete mode 100644 qtools/qfiledefs_p.h delete mode 100644 qtools/qfileinfo.cpp delete mode 100644 qtools/qfileinfo.h delete mode 100644 qtools/qfileinfo_unix.cpp delete mode 100644 qtools/qfileinfo_win32.cpp delete mode 100644 qtools/qgarray.cpp delete mode 100644 qtools/qgarray.h delete mode 100644 qtools/qgcache.cpp delete mode 100644 qtools/qgcache.h delete mode 100644 qtools/qgdict.cpp delete mode 100644 qtools/qgdict.h delete mode 100644 qtools/qgeneric.h delete mode 100644 qtools/qglist.cpp delete mode 100644 qtools/qglist.h delete mode 100644 qtools/qglobal.cpp delete mode 100644 qtools/qglobal.h delete mode 100644 qtools/qgvector.cpp delete mode 100644 qtools/qgvector.h delete mode 100644 qtools/qintdict.doc delete mode 100644 qtools/qintdict.h delete mode 100644 qtools/qiodevice.cpp delete mode 100644 qtools/qiodevice.h delete mode 100644 qtools/qlist.doc delete mode 100644 qtools/qlist.h delete mode 100644 qtools/qmap.cpp delete mode 100644 qtools/qmap.h delete mode 100644 qtools/qmodules.h delete mode 100644 qtools/qptrdict.doc delete mode 100644 qtools/qptrdict.h delete mode 100644 qtools/qqueue.h delete mode 100644 qtools/qregexp.cpp delete mode 100644 qtools/qregexp.h delete mode 100644 qtools/qshared.h delete mode 100644 qtools/qsortedlist.doc delete mode 100644 qtools/qsortedlist.h delete mode 100644 qtools/qstack.doc delete mode 100644 qtools/qstack.h delete mode 100644 qtools/qstring.cpp delete mode 100644 qtools/qstring.h delete mode 100644 qtools/qstringlist.cpp delete mode 100644 qtools/qstringlist.h delete mode 100644 qtools/qstrlist.doc delete mode 100644 qtools/qstrlist.h delete mode 100644 qtools/qstrvec.h delete mode 100644 qtools/qtextcodec.cpp delete mode 100644 qtools/qtextcodec.h delete mode 100644 qtools/qtextstream.cpp delete mode 100644 qtools/qtextstream.h delete mode 100644 qtools/qtl.doc delete mode 100644 qtools/qtl.h delete mode 100644 qtools/qtools.pro.in delete mode 100644 qtools/qvaluelist.doc delete mode 100644 qtools/qvaluelist.h delete mode 100644 qtools/qvaluestack.h delete mode 100644 qtools/qvector.doc delete mode 100644 qtools/qvector.h delete mode 100644 qtools/qxml.cpp delete mode 100644 qtools/qxml.h delete mode 100644 qtools/scstring.cpp delete mode 100644 qtools/scstring.h delete mode 100644 src/.cvsignore delete mode 100644 src/Makefile.in delete mode 100644 src/bufstr.h delete mode 100644 src/classdef.cpp delete mode 100644 src/classdef.h delete mode 100644 src/classlist.cpp delete mode 100644 src/classlist.h delete mode 100644 src/cmdmapper.cpp delete mode 100644 src/cmdmapper.h delete mode 100644 src/code.h delete mode 100644 src/code.l delete mode 100644 src/commentcnv.h delete mode 100644 src/commentcnv.l delete mode 100644 src/commentscan.h delete mode 100644 src/commentscan.l delete mode 100644 src/compound.xsd delete mode 100644 src/compound_xsd.h delete mode 100644 src/config.h delete mode 100644 src/config.l delete mode 100644 src/constexp.h delete mode 100644 src/constexp.l delete mode 100644 src/constexp.y delete mode 100644 src/cppvalue.cpp delete mode 100644 src/cppvalue.h delete mode 100644 src/debug.cpp delete mode 100644 src/debug.h delete mode 100644 src/declinfo.h delete mode 100644 src/declinfo.l delete mode 100644 src/defargs.h delete mode 100644 src/defargs.l delete mode 100644 src/defgen.cpp delete mode 100644 src/defgen.h delete mode 100644 src/define.cpp delete mode 100644 src/define.h delete mode 100644 src/definition.cpp delete mode 100644 src/definition.h delete mode 100644 src/diagram.cpp delete mode 100644 src/diagram.h delete mode 100644 src/dirdef.cpp delete mode 100644 src/dirdef.h delete mode 100644 src/docparser.cpp delete mode 100644 src/docparser.h delete mode 100644 src/doctokenizer.h delete mode 100644 src/doctokenizer.l delete mode 100644 src/docvisitor.h delete mode 100644 src/dot.cpp delete mode 100644 src/dot.h delete mode 100644 src/doxygen.cpp delete mode 100644 src/doxygen.h delete mode 100644 src/doxygen.pro.in delete mode 100644 src/doxytag.l delete mode 100644 src/doxytag.pro.in delete mode 100644 src/doxytag.t delete mode 100644 src/entry.cpp delete mode 100644 src/entry.h delete mode 100644 src/example.h delete mode 100644 src/filedef.cpp delete mode 100644 src/filedef.h delete mode 100644 src/filename.cpp delete mode 100644 src/filename.h delete mode 100644 src/formula.cpp delete mode 100644 src/formula.h delete mode 100644 src/ftvhelp.cpp delete mode 100644 src/ftvhelp.h delete mode 100644 src/groupdef.cpp delete mode 100644 src/groupdef.h delete mode 100644 src/htags.cpp delete mode 100644 src/htags.h delete mode 100644 src/htmlattrib.h delete mode 100644 src/htmldocvisitor.cpp delete mode 100644 src/htmldocvisitor.h delete mode 100644 src/htmlgen.cpp delete mode 100644 src/htmlgen.h delete mode 100644 src/htmlhelp.cpp delete mode 100644 src/htmlhelp.h delete mode 100644 src/image.cpp delete mode 100644 src/image.h delete mode 100755 src/increasebuffer.pl delete mode 100644 src/index.cpp delete mode 100644 src/index.h delete mode 100644 src/index.xsd delete mode 100644 src/index_xsd.h delete mode 100644 src/instdox.cpp delete mode 100644 src/instdox.h delete mode 100644 src/lang_cfg.h delete mode 100644 src/language.cpp delete mode 100644 src/language.h delete mode 100644 src/latexdocvisitor.cpp delete mode 100644 src/latexdocvisitor.h delete mode 100644 src/latexgen.cpp delete mode 100644 src/latexgen.h delete mode 100644 src/libdoxycfg.pro.in delete mode 100644 src/libdoxycfg.t delete mode 100644 src/libdoxygen.pro.in delete mode 100644 src/libdoxygen.t delete mode 100644 src/logos.cpp delete mode 100644 src/logos.h delete mode 100644 src/main.cpp delete mode 100644 src/mandocvisitor.cpp delete mode 100644 src/mandocvisitor.h delete mode 100644 src/mangen.cpp delete mode 100644 src/mangen.h delete mode 100644 src/memberdef.cpp delete mode 100644 src/memberdef.h delete mode 100644 src/membergroup.cpp delete mode 100644 src/membergroup.h delete mode 100644 src/memberlist.cpp delete mode 100644 src/memberlist.h delete mode 100644 src/membername.cpp delete mode 100644 src/membername.h delete mode 100644 src/message.cpp delete mode 100644 src/message.h delete mode 100644 src/namespacedef.cpp delete mode 100644 src/namespacedef.h delete mode 100644 src/outputgen.cpp delete mode 100644 src/outputgen.h delete mode 100644 src/outputlist.cpp delete mode 100644 src/outputlist.h delete mode 100644 src/pagedef.cpp delete mode 100644 src/pagedef.h delete mode 100644 src/parserintf.h delete mode 100644 src/perlmodgen.cpp delete mode 100644 src/perlmodgen.h delete mode 100644 src/pngenc.cpp delete mode 100644 src/pngenc.h delete mode 100644 src/pre.h delete mode 100644 src/pre.l delete mode 100644 src/printdocvisitor.h delete mode 100644 src/pycode.h delete mode 100644 src/pycode.l delete mode 100644 src/pyscanner.h delete mode 100644 src/pyscanner.l delete mode 100644 src/qtbc.h delete mode 100644 src/reflist.cpp delete mode 100644 src/reflist.h delete mode 100644 src/rtfdocvisitor.cpp delete mode 100644 src/rtfdocvisitor.h delete mode 100644 src/rtfgen.cpp delete mode 100644 src/rtfgen.h delete mode 100644 src/rtfstyle.cpp delete mode 100644 src/rtfstyle.h delete mode 100644 src/scanner.h delete mode 100644 src/scanner.l delete mode 100644 src/search.php delete mode 100644 src/search_php.h delete mode 100644 src/searchindex.cpp delete mode 100644 src/searchindex.h delete mode 100644 src/section.h delete mode 100644 src/sortdict.h delete mode 100644 src/tagreader.cpp delete mode 100644 src/tagreader.h delete mode 100644 src/translator.cpp delete mode 100644 src/translator.h delete mode 100644 src/translator_adapter.h delete mode 100644 src/translator_br.h delete mode 100644 src/translator_ca.h delete mode 100644 src/translator_cn.h delete mode 100644 src/translator_cz.h delete mode 100644 src/translator_de.h delete mode 100644 src/translator_dk.h delete mode 100644 src/translator_en.h delete mode 100644 src/translator_es.h delete mode 100644 src/translator_fi.h delete mode 100644 src/translator_fr.h delete mode 100644 src/translator_gr.h delete mode 100644 src/translator_hr.h delete mode 100644 src/translator_hu.h delete mode 100644 src/translator_id.h delete mode 100644 src/translator_it.h delete mode 100644 src/translator_je.h delete mode 100644 src/translator_jp.h delete mode 100644 src/translator_ke.h delete mode 100644 src/translator_kr.h delete mode 100644 src/translator_lt.h delete mode 100644 src/translator_nl.h delete mode 100644 src/translator_no.h delete mode 100644 src/translator_pl.h delete mode 100644 src/translator_pt.h delete mode 100644 src/translator_ro.h delete mode 100644 src/translator_ru.h delete mode 100644 src/translator_se.h delete mode 100644 src/translator_si.h delete mode 100644 src/translator_sk.h delete mode 100644 src/translator_sr.h delete mode 100644 src/translator_tw.h delete mode 100644 src/translator_ua.h delete mode 100644 src/translator_za.h delete mode 100644 src/unistd.h delete mode 100644 src/util.cpp delete mode 100644 src/util.h delete mode 100644 src/version.h delete mode 100644 src/xmldocvisitor.cpp delete mode 100644 src/xmldocvisitor.h delete mode 100644 src/xmlgen.cpp delete mode 100644 src/xmlgen.h delete mode 100644 tmake/CHANGES delete mode 100644 tmake/LICENSE delete mode 100644 tmake/README delete mode 100755 tmake/bin/progen delete mode 100755 tmake/bin/tmake delete mode 100644 tmake/doc/m-linux-gcc.html delete mode 100644 tmake/doc/m-win32-msvc.html delete mode 100644 tmake/doc/tmake.html delete mode 100644 tmake/doc/tmake_ref.html delete mode 100644 tmake/example/hello.cpp delete mode 100644 tmake/example/hello.h delete mode 100644 tmake/example/hello.pro delete mode 100644 tmake/example/main.cpp delete mode 100644 tmake/example/wc.t delete mode 100755 tmake/lib/aix-g++/app.t delete mode 100755 tmake/lib/aix-g++/lib.t delete mode 100755 tmake/lib/aix-g++/subdirs.t delete mode 100755 tmake/lib/aix-g++/tmake.conf delete mode 100755 tmake/lib/aix-xlc/app.t delete mode 100755 tmake/lib/aix-xlc/lib.t delete mode 100755 tmake/lib/aix-xlc/subdirs.t delete mode 100755 tmake/lib/aix-xlc/tmake.conf delete mode 100755 tmake/lib/beos-g++/app.t delete mode 100755 tmake/lib/beos-g++/lib.t delete mode 100755 tmake/lib/beos-g++/subdirs.t delete mode 100755 tmake/lib/beos-g++/tmake.conf delete mode 100755 tmake/lib/bsdi-g++/app.t delete mode 100755 tmake/lib/bsdi-g++/lib.t delete mode 100755 tmake/lib/bsdi-g++/subdirs.t delete mode 100755 tmake/lib/bsdi-g++/tmake.conf delete mode 100755 tmake/lib/dgux-g++/app.t delete mode 100755 tmake/lib/dgux-g++/lib.t delete mode 100755 tmake/lib/dgux-g++/subdirs.t delete mode 100755 tmake/lib/dgux-g++/tmake.conf delete mode 100755 tmake/lib/freebsd-g++/app.t delete mode 100755 tmake/lib/freebsd-g++/lib.t delete mode 100755 tmake/lib/freebsd-g++/subdirs.t delete mode 100755 tmake/lib/freebsd-g++/tmake.conf delete mode 100755 tmake/lib/gnu-g++/app.t delete mode 100755 tmake/lib/gnu-g++/lib.t delete mode 100755 tmake/lib/gnu-g++/subdirs.t delete mode 100755 tmake/lib/gnu-g++/tmake.conf delete mode 100755 tmake/lib/hpux-acc/app.t delete mode 100755 tmake/lib/hpux-acc/lib.t delete mode 100755 tmake/lib/hpux-acc/subdirs.t delete mode 100755 tmake/lib/hpux-acc/tmake.conf delete mode 100755 tmake/lib/hpux-cc/app.t delete mode 100755 tmake/lib/hpux-cc/lib.t delete mode 100755 tmake/lib/hpux-cc/subdirs.t delete mode 100755 tmake/lib/hpux-cc/tmake.conf delete mode 100755 tmake/lib/hpux-g++/app.t delete mode 100755 tmake/lib/hpux-g++/lib.t delete mode 100755 tmake/lib/hpux-g++/subdirs.t delete mode 100755 tmake/lib/hpux-g++/tmake.conf delete mode 100755 tmake/lib/irix-64/app.t delete mode 100755 tmake/lib/irix-64/lib.t delete mode 100755 tmake/lib/irix-64/subdirs.t delete mode 100755 tmake/lib/irix-64/tmake.conf delete mode 100755 tmake/lib/irix-dcc/app.t delete mode 100755 tmake/lib/irix-dcc/lib.t delete mode 100755 tmake/lib/irix-dcc/subdirs.t delete mode 100755 tmake/lib/irix-dcc/tmake.conf delete mode 100755 tmake/lib/irix-g++/app.t delete mode 100755 tmake/lib/irix-g++/lib.t delete mode 100755 tmake/lib/irix-g++/subdirs.t delete mode 100755 tmake/lib/irix-g++/tmake.conf delete mode 100755 tmake/lib/irix-n32/app.t delete mode 100755 tmake/lib/irix-n32/lib.t delete mode 100755 tmake/lib/irix-n32/subdirs.t delete mode 100755 tmake/lib/irix-n32/tmake.conf delete mode 100755 tmake/lib/irix-o32/app.t delete mode 100755 tmake/lib/irix-o32/lib.t delete mode 100755 tmake/lib/irix-o32/subdirs.t delete mode 100755 tmake/lib/irix-o32/tmake.conf delete mode 100755 tmake/lib/linux-g++/app.t delete mode 100755 tmake/lib/linux-g++/lib.t delete mode 100755 tmake/lib/linux-g++/subdirs.t delete mode 100755 tmake/lib/linux-g++/tmake.conf delete mode 100755 tmake/lib/m68k-atari-mint-g++/app.t delete mode 100755 tmake/lib/m68k-atari-mint-g++/lib.t delete mode 100755 tmake/lib/m68k-atari-mint-g++/subdirs.t delete mode 100755 tmake/lib/m68k-atari-mint-g++/tmake.conf delete mode 100755 tmake/lib/macosx-c++/app.t delete mode 100755 tmake/lib/macosx-c++/lib.t delete mode 100755 tmake/lib/macosx-c++/subdirs.t delete mode 100755 tmake/lib/macosx-c++/tmake.conf delete mode 100755 tmake/lib/netbsd-g++/app.t delete mode 100755 tmake/lib/netbsd-g++/lib.t delete mode 100755 tmake/lib/netbsd-g++/subdirs.t delete mode 100755 tmake/lib/netbsd-g++/tmake.conf delete mode 100755 tmake/lib/openbsd-g++/app.t delete mode 100755 tmake/lib/openbsd-g++/lib.t delete mode 100755 tmake/lib/openbsd-g++/subdirs.t delete mode 100755 tmake/lib/openbsd-g++/tmake.conf delete mode 100755 tmake/lib/osf1-cxx/app.t delete mode 100755 tmake/lib/osf1-cxx/lib.t delete mode 100755 tmake/lib/osf1-cxx/subdirs.t delete mode 100755 tmake/lib/osf1-cxx/tmake.conf delete mode 100755 tmake/lib/osf1-g++/app.t delete mode 100755 tmake/lib/osf1-g++/lib.t delete mode 100755 tmake/lib/osf1-g++/subdirs.t delete mode 100755 tmake/lib/osf1-g++/tmake.conf delete mode 100755 tmake/lib/qnx-g++/app.t delete mode 100755 tmake/lib/qnx-g++/lib.t delete mode 100755 tmake/lib/qnx-g++/subdirs.t delete mode 100755 tmake/lib/qnx-g++/tmake.conf delete mode 100755 tmake/lib/sco-g++/app.t delete mode 100755 tmake/lib/sco-g++/lib.t delete mode 100755 tmake/lib/sco-g++/subdirs.t delete mode 100755 tmake/lib/sco-g++/tmake.conf delete mode 100755 tmake/lib/solaris-cc-gcc/app.t delete mode 100755 tmake/lib/solaris-cc-gcc/lib.t delete mode 100755 tmake/lib/solaris-cc-gcc/subdirs.t delete mode 100755 tmake/lib/solaris-cc-gcc/tmake.conf delete mode 100755 tmake/lib/solaris-cc/app.t delete mode 100755 tmake/lib/solaris-cc/lib.t delete mode 100755 tmake/lib/solaris-cc/subdirs.t delete mode 100755 tmake/lib/solaris-cc/tmake.conf delete mode 100755 tmake/lib/solaris-g++/app.t delete mode 100755 tmake/lib/solaris-g++/lib.t delete mode 100755 tmake/lib/solaris-g++/subdirs.t delete mode 100755 tmake/lib/solaris-g++/tmake.conf delete mode 100755 tmake/lib/sunos-g++/app.t delete mode 100755 tmake/lib/sunos-g++/lib.t delete mode 100755 tmake/lib/sunos-g++/subdirs.t delete mode 100755 tmake/lib/sunos-g++/tmake.conf delete mode 100755 tmake/lib/ultrix-g++/app.t delete mode 100755 tmake/lib/ultrix-g++/lib.t delete mode 100755 tmake/lib/ultrix-g++/subdirs.t delete mode 100755 tmake/lib/ultrix-g++/tmake.conf delete mode 100755 tmake/lib/unix/app.t delete mode 100755 tmake/lib/unix/generic.t delete mode 100755 tmake/lib/unix/lib.t delete mode 100755 tmake/lib/unix/subdirs.t delete mode 100755 tmake/lib/unixware-g++/app.t delete mode 100755 tmake/lib/unixware-g++/lib.t delete mode 100755 tmake/lib/unixware-g++/subdirs.t delete mode 100755 tmake/lib/unixware-g++/tmake.conf delete mode 100755 tmake/lib/unixware7-cc/app.t delete mode 100755 tmake/lib/unixware7-cc/lib.t delete mode 100755 tmake/lib/unixware7-cc/subdirs.t delete mode 100755 tmake/lib/unixware7-cc/tmake.conf delete mode 100755 tmake/lib/unixware7-g++/app.t delete mode 100755 tmake/lib/unixware7-g++/lib.t delete mode 100755 tmake/lib/unixware7-g++/subdirs.t delete mode 100755 tmake/lib/unixware7-g++/tmake.conf delete mode 100755 tmake/lib/win32-borland/app.t delete mode 100755 tmake/lib/win32-borland/generic.t delete mode 100755 tmake/lib/win32-borland/lib.t delete mode 100755 tmake/lib/win32-borland/subdirs.t delete mode 100755 tmake/lib/win32-borland/tmake.conf delete mode 100755 tmake/lib/win32-g++/app.t delete mode 100755 tmake/lib/win32-g++/generic.t delete mode 100755 tmake/lib/win32-g++/lib.t delete mode 100755 tmake/lib/win32-g++/subdirs.t delete mode 100755 tmake/lib/win32-g++/tmake.conf delete mode 100755 tmake/lib/win32-mingw/app.t delete mode 100755 tmake/lib/win32-mingw/generic.t delete mode 100755 tmake/lib/win32-mingw/lib.t delete mode 100755 tmake/lib/win32-mingw/subdirs.t delete mode 100755 tmake/lib/win32-mingw/tmake.conf delete mode 100755 tmake/lib/win32-msvc/app.t delete mode 100755 tmake/lib/win32-msvc/generic.t delete mode 100755 tmake/lib/win32-msvc/lib.t delete mode 100755 tmake/lib/win32-msvc/subdirs.t delete mode 100755 tmake/lib/win32-msvc/tmake.conf delete mode 100755 tmake/lib/win32-msvc/vcapp.t delete mode 100755 tmake/lib/win32-msvc/vclib.t delete mode 100755 tmake/lib/win32-symantec/app.t delete mode 100755 tmake/lib/win32-symantec/generic.t delete mode 100755 tmake/lib/win32-symantec/lib.t delete mode 100755 tmake/lib/win32-symantec/subdirs.t delete mode 100755 tmake/lib/win32-symantec/tmake.conf delete mode 100755 tmake/lib/win32-visage/app.t delete mode 100755 tmake/lib/win32-visage/generic.t delete mode 100755 tmake/lib/win32-visage/lib.t delete mode 100755 tmake/lib/win32-visage/subdirs.t delete mode 100755 tmake/lib/win32-visage/tmake.conf delete mode 100755 tmake/lib/win32-watcom/app.t delete mode 100755 tmake/lib/win32-watcom/generic.t delete mode 100755 tmake/lib/win32-watcom/lib.t delete mode 100755 tmake/lib/win32-watcom/subdirs.t delete mode 100755 tmake/lib/win32-watcom/tmake.conf delete mode 100755 tmake/lib/win32/subdirs.t delete mode 100644 wintools/Doxygen.dsp delete mode 100644 wintools/Doxygen.dsw delete mode 100644 wintools/Doxytag.dsp delete mode 100644 wintools/Doxytag.dsw delete mode 100644 wintools/README delete mode 100644 wintools/libpng.dsp delete mode 100644 wintools/libpng.dsw delete mode 100755 wintools/make.pl delete mode 100644 wintools/qtools.dsp delete mode 100644 wintools/qtools.dsw delete mode 100644 wintools/zlib.dsp delete mode 100644 wintools/zlib.dsw diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 4599f32..0000000 --- a/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile -.makeconfig -.tmakeconfig -bin -lib -objects diff --git a/CVSROOT/checkoutlist b/CVSROOT/checkoutlist deleted file mode 100644 index b04b350..0000000 --- a/CVSROOT/checkoutlist +++ /dev/null @@ -1,13 +0,0 @@ -# The "checkoutlist" file is used to support additional version controlled -# administrative files in $CVSROOT/CVSROOT, such as template files. -# -# The first entry on a line is a filename which will be checked out from -# the corresponding RCS file in the $CVSROOT/CVSROOT directory. -# The remainder of the line is an error message to use if the file cannot -# be checked out. -# -# File format: -# -# [] -# -# comment lines begin with '#' diff --git a/CVSROOT/commitinfo b/CVSROOT/commitinfo deleted file mode 100644 index b19e7b7..0000000 --- a/CVSROOT/commitinfo +++ /dev/null @@ -1,15 +0,0 @@ -# The "commitinfo" file is used to control pre-commit checks. -# The filter on the right is invoked with the repository and a list -# of files to check. A non-zero exit of the filter program will -# cause the commit to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/config b/CVSROOT/config deleted file mode 100644 index 8817419..0000000 --- a/CVSROOT/config +++ /dev/null @@ -1,9 +0,0 @@ -# Set this to "no" if pserver shouldn't check system users/passwords -#SystemAuth=no - -# Set `PreservePermissions' to `yes' to save file status information -# in the repository. -#PreservePermissions=no - -TopLevelAdmin=yes -#LockDir=/u/kp3softd/cvslocks/ diff --git a/CVSROOT/cvswrappers b/CVSROOT/cvswrappers deleted file mode 100644 index 0c725ea..0000000 --- a/CVSROOT/cvswrappers +++ /dev/null @@ -1,23 +0,0 @@ -# This file affects handling of files based on their names. -# -# The -t/-f options allow one to treat directories of files -# as a single file, or to transform a file in other ways on -# its way in and out of CVS. -# -# The -m option specifies whether CVS attempts to merge files. -# -# The -k option specifies keyword expansion (e.g. -kb for binary). -# -# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) -# -# wildcard [option value][option value]... -# -# where option is one of -# -f from cvs filter value: path to filter -# -t to cvs filter value: path to filter -# -m update methodology value: MERGE or COPY -# -k expansion mode value: b, o, kkv, &c -# -# and value is a single-quote delimited value. -# For example: -*.gif -k 'b' -m 'COPY' diff --git a/CVSROOT/editinfo b/CVSROOT/editinfo deleted file mode 100644 index d78886c..0000000 --- a/CVSROOT/editinfo +++ /dev/null @@ -1,21 +0,0 @@ -# The "editinfo" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. diff --git a/CVSROOT/loginfo b/CVSROOT/loginfo deleted file mode 100644 index 5a59f0a..0000000 --- a/CVSROOT/loginfo +++ /dev/null @@ -1,26 +0,0 @@ -# The "loginfo" file controls where "cvs commit" log information -# is sent. The first entry on a line is a regular expression which must match -# the directory that the change is being made to, relative to the -# $CVSROOT. If a match is found, then the remainder of the line is a filter -# program that should expect log information on its standard input. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name ALL appears as a regular expression it is always used -# in addition to the first matching regex or DEFAULT. -# -# You may specify a format string as part of the -# filter. The string is composed of a `%' followed -# by a single format character, or followed by a set of format -# characters surrounded by `{' and `}' as separators. The format -# characters are: -# -# s = file name -# V = old version number (pre-checkin) -# v = new version number (post-checkin) -# -# For example: -#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog -# or -#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog diff --git a/CVSROOT/modules b/CVSROOT/modules deleted file mode 100644 index 581582c..0000000 --- a/CVSROOT/modules +++ /dev/null @@ -1,27 +0,0 @@ -# Three different line formats are valid: -# key -a aliases... -# key [options] directory -# key [options] directory files... -# -# Where "options" are composed of: -# -i prog Run "prog" on "cvs commit" from top-level of module. -# -o prog Run "prog" on "cvs checkout" of module. -# -e prog Run "prog" on "cvs export" of module. -# -t prog Run "prog" on "cvs rtag" of module. -# -u prog Run "prog" on "cvs update" of module. -# -d dir Place module in directory "dir" instead of module name. -# -l Top-level directory only -- do not recurse. -# -# NOTE: If you change any of the "Run" options above, you'll have to -# release and re-checkout any working directories of these modules. -# -# And "directory" is a path to a directory relative to $CVSROOT. -# -# The "-a" option specifies an alias. An alias is interpreted as if -# everything on the right of the "-a" had been typed on the command line. -# -# You can encode a module within a module by using the special '&' -# character to interpose another module into the current module. This -# can be useful for creating a module that consists of many directories -# spread out over the entire source repository. -doxygen -a addon bin doc examples html lib objects packages qtools src tmake wintools libpng libmd5 diff --git a/CVSROOT/notify b/CVSROOT/notify deleted file mode 100644 index 34f0bc2..0000000 --- a/CVSROOT/notify +++ /dev/null @@ -1,12 +0,0 @@ -# The "notify" file controls where notifications from watches set by -# "cvs watch add" or "cvs edit" are sent. The first entry on a line is -# a regular expression which is tested against the directory that the -# change is being made to, relative to the $CVSROOT. If it matches, -# then the remainder of the line is a filter program that should contain -# one occurrence of %s for the user to notify, and information on its -# standard input. -# -# "ALL" or "DEFAULT" can be used in place of the regular expression. -# -# For example: -#ALL mail %s -s "CVS notification" diff --git a/CVSROOT/rcsinfo b/CVSROOT/rcsinfo deleted file mode 100644 index 49e59f4..0000000 --- a/CVSROOT/rcsinfo +++ /dev/null @@ -1,13 +0,0 @@ -# The "rcsinfo" file is used to control templates with which the editor -# is invoked on commit and import. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being made to, relative to the -# $CVSROOT. For the first match that is found, then the remainder of the -# line is the name of the file that contains the template. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/taginfo b/CVSROOT/taginfo deleted file mode 100644 index 274a46d..0000000 --- a/CVSROOT/taginfo +++ /dev/null @@ -1,20 +0,0 @@ -# The "taginfo" file is used to control pre-tag checks. -# The filter on the right is invoked with the following arguments: -# -# $1 -- tagname -# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d -# $3 -- repository -# $4-> file revision [file revision ...] -# -# A non-zero exit of the filter program will cause the tag to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/verifymsg b/CVSROOT/verifymsg deleted file mode 100644 index 86f747c..0000000 --- a/CVSROOT/verifymsg +++ /dev/null @@ -1,21 +0,0 @@ -# The "verifymsg" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. diff --git a/Doxyfile b/Doxyfile deleted file mode 100644 index 43ddaf8..0000000 --- a/Doxyfile +++ /dev/null @@ -1,242 +0,0 @@ -# Doxyfile 1.4.3 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = Doxygen -PROJECT_NUMBER = -OUTPUT_DIRECTORY = doxygen_docs -CREATE_SUBDIRS = YES -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = $(PWD)/ -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = src -FILE_PATTERNS = *.h \ - *.cpp -RECURSIVE = NO -EXCLUDE = src/code.cpp \ - src/config.cpp \ - src/ce_lex.cpp \ - src/ce_parse.cpp \ - src/declinfo.cpp \ - src/defargs.cpp \ - src/doxytag.cpp \ - src/pre.cpp \ - src/scanner.cpp \ - src/tag.cpp \ - src/doctokenizer.cpp \ - src/logos.cpp \ - src/suffixtree.cpp \ - src/suffixtree.h \ - src/searchindex.cpp \ - src/searchindex.h \ - src/commentcnv.cpp \ - src/commentscan.cpp \ - src/pycode.cpp \ - src/pyscanner.cpp -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = YES -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = qtools_docs/qtools.tag=../../qtools_docs/html -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = NO -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = YES diff --git a/INSTALL b/INSTALL deleted file mode 100644 index ab1c722..0000000 --- a/INSTALL +++ /dev/null @@ -1,7 +0,0 @@ -DOXYGEN Version 1.4.4 - -Please read the installation section of the manual -(http://www.doxygen.org/install.html) for instructions. - --------- -Dimitri van Heesch (06 August 2005) diff --git a/LANGUAGE.HOWTO b/LANGUAGE.HOWTO deleted file mode 100644 index 306b4bf..0000000 --- a/LANGUAGE.HOWTO +++ /dev/null @@ -1,49 +0,0 @@ -This short howto explains how to add support for a new language to Doxygen: - -Just follow these steps: - -1) Tell me for which language you want to add support. If no one else - is already working on support for that language, you will be - assigned as the maintainer for the language. I'll create a - list on Doxygen's homepage, so everyone knows who is doing what. -2) Create a copy of translator_en.h and name it - translator_.h - I'll use xx in the rest of this document. -3) Edit language.cpp: - - Add a #include - - In setTranslator() add - - else if (L_EQUAL("your_language_name")) - { - theTranslator = new TranslatorYourLanguage; - } - - after the if { ... } -4) Edit libdoxygen.pro.in and add translator_xx.h to the HEADERS line. -5) Edit translator_xx.h: - - Rename TRANSLATOR_EN_H to TRANSLATOR_XX_H twice. - - Rename TranslatorEnglish to TranslatorYourLanguage - - In the member idLanguage() change "english" into the name of your - language (use lower case characters only). Depending on the language you - may also wish to change the member functions latexLanguageSupportCommand() - and idLanguageCharset(). - - Edit all the strings that are returned by the members that start - with tr. Try to match punctuation and capitals! - To enter special characters (with accents) you can: - a) Enter them directly if your keyboard supports that and you are - using a Latin-1 font. - Doxygen will translate the characters to proper Latex and - leave the Html and man output for what it is (which is fine, if - idLanguageCharset() is set correctly). - b) Use html codes like ä for an a with an umlaut (i.e. ä). - See the HTML specification for the codes. -6) Run configure and make again from the root of the distribution, - in order to regenerate the Makefiles. -7) Now you can use OUTPUT_LANGUAGE = your_language_name - in the config file to generate output in your language. -8) Send translator_xx.h to me so I can add it to doxygen. - Send also your name and e-mail address to be included in the - maintainers.txt list. - -Good luck, and let me know if there are problems. - diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 219ec28..0000000 --- a/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) yyyy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) yyyy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index 84783ea..0000000 --- a/Makefile.in +++ /dev/null @@ -1,109 +0,0 @@ -#all: src/version.cpp doxywizard -# cd qtools ; $(MAKE) -# cd src ; $(MAKE) - -clean: FORCE - cd examples ; $(MAKE) clean - cd doc ; $(MAKE) clean - cd qtools ; $(MAKE) clean - cd src ; $(MAKE) clean - cd libpng ; $(MAKE) clean - cd libmd5 ; $(MAKE) clean - cd addon/doxywizard ; $(MAKE) clean - cd addon/doxmlparser/src ; $(MAKE) clean - cd addon/doxmlparser/test ; $(MAKE) clean - cd addon/doxmlparser/examples/metrics ; $(MAKE) clean - -rm -f bin/doxy* - -rm -f objects/*.o - -distclean: clean - cd src ; $(MAKE) distclean - cd libpng ; $(MAKE) distclean - cd libmd5 ; $(MAKE) distclean - cd addon/doxywizard ; $(MAKE) distclean - cd addon/doxmlparser/src ; $(MAKE) distclean - cd addon/doxmlparser/test ; $(MAKE) distclean - cd addon/doxmlparser/examples/metrics ; $(MAKE) distclean - -rm -f lib/lib* - -rm -f bin/doxy* - -rm -f html - -rm -f latex - -rm -f objects/*.o - -rm -f src/Makefile.doxygen src/Makefile.libdoxygen - -rm -f src/Makefile.doxytag src/Makefile.libdoxycfg - -rm -f libpng/Makefile.libpng - -rm -f libmd5/Makefile.libmd5 - -rm -f Makefile qtools/Makefile src/Makefile examples/Makefile doc/Makefile - -rm -f .makeconfig .tmakeconfig - -rm -f src/doxygen.pro src/libdoxygen.pro src/doxytag.pro qtools/qtools.pro src/libdoxycfg.pro libpng/libpng.pro libmd5/libmd5.pro - -rm -f src/version.cpp - -rm -r addon/doxywizard/Makefile - -rm -f addon/doxywizard/Makefile.doxywizard - -rm -f addon/doxywizard/doxywizard.pro - -rm -f addon/doxywizard/obj/*.o - -rm -f addon/doxywizard/moc/moc_* - -rm -f addon/doxywizard/config.cpp - -DATE=$(shell date "+%B %Y") - -MAN1DIR = man/man1 - -install: doxywizard_install - $(INSTTOOL) -d $(INSTALL)/bin - $(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin - $(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin - $(INSTTOOL) -d $(INSTALL)/$(MAN1DIR) - cat doc/doxygen.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > $(INSTALL)/$(MAN1DIR)/doxygen.1 ; \ - cat doc/doxytag.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > $(INSTALL)/$(MAN1DIR)/doxytag.1 ; \ - cat doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > $(INSTALL)/$(MAN1DIR)/doxywizard.1 ; - -install_docs: - $(INSTTOOL) -d $(DOCDIR) - cp -r doc $(DOCDIR) - cp -r examples $(DOCDIR) - echo "DOXYGEN = $(INSTALL)" > $(DOCDIR)/doc/Makefile - echo "DOXYDOCS = .." >> $(DOCDIR)/doc/Makefile - echo "VERSION = $(VERSION)" >> $(DOCDIR)/doc/Makefile - echo "PERL = $(PERL)" >> $(DOCDIR)/doc/Makefile - cat doc/Makefile.in >> $(DOCDIR)/doc/Makefile - cd $(DOCDIR)/examples ; $(MAKE) - cd $(DOCDIR)/doc ; $(MAKE) - rm -rf $(DOCDIR)/doc - cd $(DOCDIR)/latex ; $(MAKE) - cp $(DOCDIR)/latex/doxygen_manual.pdf $(DOCDIR) - rm -rf $(DOCDIR)/latex - -docs: FORCE - cd examples ; $(MAKE) - cd doc ; $(MAKE) - -pdf: docs - cd latex ; $(MAKE) - -DISTFILES = Doxyfile libpng libmd5 addon tmake doc wintools examples bin lib objects \ - qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \ - Makefile.win_make.in INSTALL make.bat LANGUAGE.HOWTO LICENSE PLATFORMS \ - VERSION packages - -archive: clean - tar zcvf dx`date +%y%m%d`.tgz $(DISTFILES) - -DISTDIR = doxygen-`echo $(VERSION) | tr - _` - -dist: clean - rm -rf $(DISTDIR) - mkdir $(DISTDIR) - cp -a $(DISTFILES) README $(DISTDIR) - find $(DISTDIR) \( -name "CVS" -o -name ".cvsignore" \) \ - -print0 | xargs -0 rm -rf - tar zcvf $(DISTDIR).src.tar.gz $(DISTDIR) - rm -rf $(DISTDIR) - -src/version.cpp: Makefile - echo "char versionString[]=\"$(VERSION)\";" > src/version.cpp - -addon/doxywizard/version.cpp: Makefile - echo "char versionString[]=\"$(VERSION)\";" > addon/doxywizard/version.cpp - -FORCE: - diff --git a/Makefile.win_make.in b/Makefile.win_make.in deleted file mode 100644 index 8635696..0000000 --- a/Makefile.win_make.in +++ /dev/null @@ -1,33 +0,0 @@ -all: src\version.cpp - set TMAKEPATH=$(TMAKEPATH) & cd qtools & $(MAKE) - set TMAKEPATH=$(TMAKEPATH) & cd libpng & $(MAKE) - set TMAKEPATH=$(TMAKEPATH) & cd libmd5 & $(MAKE) - set TMAKEPATH=$(TMAKEPATH) & cd src & $(MAKE) - -clean: - cd examples & $(MAKE) clean - cd doc & $(MAKE) clean - cd src & $(MAKE) clean - -del bin\doxy*.* - -del objects\*.o - -distclean: clean - -del src\Makefile.libdoxygen \ - src\Makefile.doxygen \ - src\Makefile.doxytag \ - src\Makefile.libdoxycfg - -del Makefile src\Makefile examples\Makefile doc\Makefile - -del src\libdoxygen.pro src\doxygen.pro src\doxytag.pro src\libdoxycfg.pro - -del src\version.cpp - -docs: - set TMAKEPATH=$(TMAKEPATH) & cd examples & $(MAKE) - set TMAKEPATH=$(TMAKEPATH) & cd doc & $(MAKE) - -ps: docs - cd latex & $(MAKE) - -src\version.cpp: Makefile - echo char versionString[]="""$(VERSION)"""; > src\version.cpp - -FORCE: diff --git a/Makefile.win_nmake.in b/Makefile.win_nmake.in deleted file mode 100644 index d618b6c..0000000 --- a/Makefile.win_nmake.in +++ /dev/null @@ -1,52 +0,0 @@ -all: src\version.cpp - set TMAKEPATH=$(TMAKEPATH) - cd qtools - $(MAKE) - cd .. - cd libpng - $(MAKE) - cd .. - cd libmd5 - $(MAKE) - cd .. - cd src - $(MAKE) - -clean: FORCE - cd examples - $(MAKE) clean - cd .. - cd doc - $(MAKE) clean - cd .. - cd src - $(MAKE) clean - cd .. - -del bin\doxy*.* - -del objects\*.o - -distclean: clean - -del src\Makefile.libdoxygen \ - src\Makefile.doxygen \ - src\Makefile.doxytag \ - src\Makefile.libdoxycfg - -del Makefile src\Makefile examples\Makefile doc\Makefile - -del src\libdoxygen.pro src\doxygen.pro src\doxytag.pro src\libdoxycfg.pro - -del src\version.cpp - -docs: FORCE - cd examples - $(MAKE) - cd .. - cd doc - $(MAKE) - cd .. - -ps: docs - cd latex - $(MAKE) - -src\version.cpp: Makefile - echo char versionString[]="$(VERSION)"; > src\version.cpp - -FORCE: diff --git a/PLATFORMS b/PLATFORMS deleted file mode 100644 index 8f87302..0000000 --- a/PLATFORMS +++ /dev/null @@ -1,28 +0,0 @@ -aix-g++ -aix-xlc -beos-g++ -dgux-g++ -freebsd-g++ -gnu-g++ -hpux-acc -hpux-cc -hpux-g++ -irix-64 -irix-dcc -irix-g++ -irix-n32 -linux-g++ -macosx-c++ -m68k-atari-mint-g++ -netbsd-g++ -openbsd-g++ -osf1-cxx -osf1-g++ -qnx-g++ -sco-g++ -solaris-cc -solaris-g++ -sunos-g++ -ultrix-g++ -unixware-g++ -win32-g++ diff --git a/README b/README deleted file mode 100644 index b45591c..0000000 --- a/README +++ /dev/null @@ -1,20 +0,0 @@ -DOXYGEN Version 1.4.4 - -Please read INSTALL for compilation instructions. - -The latest version of doxygen can be obtained at - http://www.doxygen.org/ - -There are two mailing lists - doxygen-users@lists.sourceforge.net - doxygen-develop@lists.sourceforge.net - -please follow the link in - - http://sourceforge.net/projects/doxygen - -to subscribe to the lists or to visit the archives. - -Enjoy, - -Dimitri van Heesch (dimitri@stack.nl) (06 August 2005) diff --git a/addon/doxmlparser/Doxyfile b/addon/doxmlparser/Doxyfile deleted file mode 100644 index faf4bee..0000000 --- a/addon/doxmlparser/Doxyfile +++ /dev/null @@ -1,177 +0,0 @@ -# Doxyfile 1.2.12-20011209 - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = doxmlparser -PROJECT_NUMBER = -OUTPUT_DIRECTORY = doc -OUTPUT_LANGUAGE = English -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -INTERNAL_DOCS = NO -STRIP_CODE_COMMENTS = YES -CASE_SENSE_NAMES = YES -SHORT_NAMES = NO -HIDE_SCOPE_NAMES = NO -VERBATIM_HEADERS = YES -SHOW_INCLUDE_FILES = YES -JAVADOC_AUTOBRIEF = NO -INHERIT_DOCS = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 8 -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -ALIASES = -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -OPTIMIZE_OUTPUT_FOR_C = NO -SHOW_USED_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_FORMAT = -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = include -FILE_PATTERNS = *.h -RECURSIVE = NO -EXCLUDE = -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = NO -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = -MAN_EXTENSION = -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES = ../../qtools_docs/qtools.tag=../../../../qtools_docs/html -GENERATE_TAGFILE = -ALLEXTERNALS = NO -PERL_PATH = -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -TEMPLATE_RELATIONS = YES -HIDE_UNDOC_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -GRAPHICAL_HIERARCHY = YES -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1280 -MAX_DOT_GRAPH_HEIGHT = 1024 -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO -CGI_NAME = -CGI_URL = -DOC_URL = -DOC_ABSPATH = -BIN_ABSPATH = -EXT_DOC_PATHS = diff --git a/addon/doxmlparser/Doxyfile.impl b/addon/doxmlparser/Doxyfile.impl deleted file mode 100644 index a954db3..0000000 --- a/addon/doxmlparser/Doxyfile.impl +++ /dev/null @@ -1,179 +0,0 @@ -# Doxyfile 1.2.13.1 - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = doxmlparser -PROJECT_NUMBER = -OUTPUT_DIRECTORY = doc_impl -OUTPUT_LANGUAGE = English -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -INTERNAL_DOCS = NO -STRIP_CODE_COMMENTS = YES -CASE_SENSE_NAMES = YES -SHORT_NAMES = NO -HIDE_SCOPE_NAMES = NO -VERBATIM_HEADERS = YES -SHOW_INCLUDE_FILES = YES -JAVADOC_AUTOBRIEF = NO -INHERIT_DOCS = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 8 -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -ALIASES = -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -OPTIMIZE_OUTPUT_FOR_C = NO -SHOW_USED_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_FORMAT = -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = src -FILE_PATTERNS = -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = -MAN_EXTENSION = -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = DEFINE_CLS_IMPL -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES = ../../qtools_docs/qtools.tag=../../../../qtools_docs/html -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -TEMPLATE_RELATIONS = YES -HIDE_UNDOC_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -GRAPHICAL_HIERARCHY = YES -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1280 -MAX_DOT_GRAPH_HEIGHT = 1024 -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO -CGI_NAME = -CGI_URL = -DOC_URL = -DOC_ABSPATH = -BIN_ABSPATH = -EXT_DOC_PATHS = diff --git a/addon/doxmlparser/examples/metrics/.cvsignore b/addon/doxmlparser/examples/metrics/.cvsignore deleted file mode 100644 index 90512ec..0000000 --- a/addon/doxmlparser/examples/metrics/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -Makefile -metrics.pro -Makefile.metrics -obj diff --git a/addon/doxmlparser/examples/metrics/Makefile.in b/addon/doxmlparser/examples/metrics/Makefile.in deleted file mode 100644 index 83cbc28..0000000 --- a/addon/doxmlparser/examples/metrics/Makefile.in +++ /dev/null @@ -1,13 +0,0 @@ -all clean depend: Makefile.metrics - $(MAKE) -f Makefile.metrics $@ - -distclean: clean - $(RM) -rf Makefile.metrics metrics.pro Makefile obj - -tmake: - $(ENV) $(PERL) $(TMAKE) metrics.pro >Makefile.metrics - -Makefile.metrics: metrics.pro - $(ENV) $(PERL) $(TMAKE) metrics.pro >Makefile.metrics - -install: diff --git a/addon/doxmlparser/examples/metrics/main.cpp b/addon/doxmlparser/examples/metrics/main.cpp deleted file mode 100644 index 2c4bee3..0000000 --- a/addon/doxmlparser/examples/metrics/main.cpp +++ /dev/null @@ -1,254 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2003 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -/*! \mainpage Metrics - * This is a small example that shows how to use doxygen's XML output and - * the doxmlparser library. The example shows some very basic code metrics. - */ - -#include -#include -#include -#include - -bool isDocumented(IDocRoot *brief,IDocRoot *detailed) -{ - bool found=false; - if (brief) - { - IDocIterator *docIt = brief->contents(); - if (docIt->current()) // method has brief description - { - found=true; - } - docIt->release(); - } - if (detailed && !found) - { - IDocIterator *docIt = detailed->contents(); - if (docIt->current()) - { - found=true; - } - docIt->release(); - } - return found; -} - -int main(int argc,char **argv) -{ - if (argc!=2) - { - printf("Usage: %s xml_output_dir\n",argv[0]); - exit(1); - } - - int numClasses=0; - int numDocClasses=0; - int numStructs=0; - int numUnions=0; - int numInterfaces=0; - int numExceptions=0; - int numNamespaces=0; - int numFiles=0; - int numGroups=0; - int numPages=0; - int numPackages=0; - int numPubMethods=0; - int numProMethods=0; - int numPriMethods=0; - int numDocPubMethods=0; - int numDocProMethods=0; - int numDocPriMethods=0; - int numFunctions=0; - int numAttributes=0; - int numVariables=0; - int numDocFunctions=0; - int numDocAttributes=0; - int numDocVariables=0; - int numParams=0; - - IDoxygen *dox = createObjectModel(); - - dox->setDebugLevel(0); - - if (!dox->readXMLDir(argv[1])) - { - printf("Error reading %s/index.xml\n",argv[1]); - exit(1); - } - - ICompoundIterator *cli = dox->compounds(); - ICompound *comp; - for (cli->toFirst();(comp=cli->current());cli->toNext()) - { - printf("Processing %s...\n",comp->name()->latin1()); - bool hasDocs = isDocumented(comp->briefDescription(),comp->detailedDescription()); - switch (comp->kind()) - { - case ICompound::Class: - numClasses++; - if (hasDocs) numDocClasses++; - break; - case ICompound::Struct: numStructs++; break; - case ICompound::Union: numUnions++; break; - case ICompound::Interface: numInterfaces++; break; - case ICompound::Exception: numExceptions++; break; - case ICompound::Namespace: numNamespaces++; break; - case ICompound::File: numFiles++; break; - case ICompound::Group: numGroups++; break; - case ICompound::Page: numPages++; break; - default: break; - } - - ISectionIterator *sli = comp->sections(); - ISection *sec; - for (sli->toFirst();(sec=sli->current());sli->toNext()) - { - IMemberIterator *mli = sec->members(); - IMember *mem; - for (mli->toFirst();(mem=mli->current());mli->toNext()) - { - IParamIterator *pli = mem->parameters(); - IParam *par; - if (comp->kind()==ICompound::Class || - comp->kind()==ICompound::Struct || - comp->kind()==ICompound::Interface - ) - { - if (mem->kind()==IMember::Function || - mem->kind()==IMember::Prototype || - mem->kind()==IMember::Signal || - mem->kind()==IMember::Slot || - mem->kind()==IMember::DCOP - ) // is a "method" - { - if (mem->section()->isPublic()) - { - numPubMethods++; - if (isDocumented(mem->briefDescription(),mem->detailedDescription())) - { - numDocPubMethods++; - } - } - else if (mem->section()->isProtected()) - { - numProMethods++; - if (isDocumented(mem->briefDescription(),mem->detailedDescription())) - { - numDocProMethods++; - } - } - else if (mem->section()->isPrivate()) - { - numPriMethods++; - if (isDocumented(mem->briefDescription(),mem->detailedDescription())) - { - numDocPriMethods++; - } - } - } - else if (mem->kind()==IMember::Variable || - mem->kind()==IMember::Property - ) // is an "attribute" - { - numAttributes++; - if (isDocumented(mem->briefDescription(),mem->detailedDescription())) - { - numDocAttributes++; - } - } - } - else if (comp->kind()==ICompound::File || - comp->kind()==ICompound::Namespace - ) - { - if (mem->kind()==IMember::Function || - mem->kind()==IMember::Prototype || - mem->kind()==IMember::Signal || - mem->kind()==IMember::Slot || - mem->kind()==IMember::DCOP - ) // is a "method" - { - numFunctions++; - if (isDocumented(mem->briefDescription(),mem->detailedDescription())) - { - numDocFunctions++; - } - } - else if (mem->kind()==IMember::Variable || - mem->kind()==IMember::Property - ) // is an "attribute" - { - numVariables++; - if (isDocumented(mem->briefDescription(),mem->detailedDescription())) - { - numDocVariables++; - } - } - } - - for (pli->toFirst();(par=pli->current());pli->toNext()) - { - numParams++; - } - const char *type = mem->typeString()->latin1(); - if (type && strcmp(type, "void")) - { - numParams++; // count non-void return types as well - } - pli->release(); - } - mli->release(); - } - sli->release(); - - comp->release(); - } - cli->release(); - - dox->release(); - - int numMethods = numPubMethods+numProMethods+numPriMethods; - int numDocMethods = numDocPubMethods+numDocProMethods+numDocPriMethods; - - printf("Metrics:\n"); - printf("-----------------------------------\n"); - if (numClasses>0) printf("Classes: %10d (%d documented)\n",numClasses,numDocClasses); - if (numStructs>0) printf("Structs: %10d\n",numStructs); - if (numUnions>0) printf("Unions: %10d\n",numUnions); - if (numInterfaces>0) printf("Interfaces: %10d\n",numInterfaces); - if (numExceptions>0) printf("Exceptions: %10d\n",numExceptions); - if (numNamespaces>0) printf("Namespaces: %10d\n",numNamespaces); - if (numFiles>0) printf("Files: %10d\n",numFiles); - if (numGroups>0) printf("Groups: %10d\n",numGroups); - if (numPages>0) printf("Pages: %10d\n",numPages); - if (numPackages>0) printf("Packages: %10d\n",numPackages); - if (numMethods>0) printf("Methods: %10d (%d documented)\n",numMethods,numDocMethods); - if (numPubMethods>0) printf(" Public: %10d (%d documented)\n",numPubMethods,numDocPubMethods); - if (numProMethods>0) printf(" Protected: %10d (%d documented)\n",numProMethods,numDocProMethods); - if (numPriMethods>0) printf(" Private: %10d (%d documented)\n",numPriMethods,numDocPriMethods); - if (numFunctions>0) printf("Functions: %10d (%d documented)\n",numFunctions,numDocFunctions); - if (numAttributes>0) printf("Attributes: %10d (%d documented)\n",numAttributes,numDocAttributes); - if (numVariables>0) printf("Variables: %10d (%d documented)\n",numVariables,numDocVariables); - if (numParams>0) printf("Params: %10d\n",numParams); - printf("-----------------------------------\n"); - if (numClasses>0) printf("Avg. #methods/compound: %10f\n",(double)numMethods/(double)numClasses); - if (numMethods>0) printf("Avg. #params/method: %10f\n",(double)numParams/(double)numMethods); - printf("-----------------------------------\n"); - - return 0; -} - diff --git a/addon/doxmlparser/examples/metrics/metrics.pro.in b/addon/doxmlparser/examples/metrics/metrics.pro.in deleted file mode 100644 index 6dd344f..0000000 --- a/addon/doxmlparser/examples/metrics/metrics.pro.in +++ /dev/null @@ -1,20 +0,0 @@ -TEMPLATE = app.t -CONFIG = console warn_on $extraopts -HEADERS = -SOURCES = main.cpp -unix:LIBS += -L../../../../lib -L../../lib -ldoxmlparser -lqtools -win32:INCLUDEPATH += . -win32-mingw:LIBS += -L../../../../lib -L../../lib -ldoxmlparser -lqtools -win32-msvc:LIBS += doxmlparser.lib qtools.lib shell32.lib -win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\..\..\..\lib;..\..\lib -win32-borland:LIBS += doxmlparser.lib qtools.lib shell32.lib -win32-borland:TMAKE_LFLAGS += -L..\..\..\..\lib -L..\..\lib -win32:TMAKE_CXXFLAGS += -DQT_NODLL -DESTDIR = -OBJECTS_DIR = obj -TARGET = metrics -DEPENDPATH = ../../include -INCLUDEPATH += ../../../../qtools ../../include -unix:TARGETDEPS = ../../lib/libdoxmlparser.a -win32:TARGETDEPS = ..\..\lib\doxmlparser.lib - diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h deleted file mode 100644 index 79dc763..0000000 --- a/addon/doxmlparser/include/doxmlintf.h +++ /dev/null @@ -1,1101 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _DOXMLINTF_H -#define _DOXMLINTF_H - -/*! \file - * \brief The interface to the object model provided by the XML parser - * library. - * - * To start using this library one calls createObjectModel() and then - * uses the returned IDoxygen interface to read doxygen generated - * XML output and navigate through the information contained in it. - * - * @see createObjectModel() - */ - -class IMember; -class IDocIterator; -class ICompound; -class ISection; -class INode; -class IDocInternal; -class IDocRoot; - -/*! \brief Read only interface to a string. - */ -class IString -{ - public: - /*! Returns a latin1 character representation of the string. */ - virtual const char *latin1() const = 0; - /*! Returns a 16-bit unicode character representation of the character at - * position \a index in the string. The first character is at index 0. - */ - virtual unsigned short unicodeCharAt(int index) const = 0; - /*! Returns true if this string is empty or false otherwise */ - virtual bool isEmpty() const = 0; - /*! Returns the number of characters in the string. */ - virtual int length() const = 0; -}; - -/*! \brief Base interface for hyperlinked text - * - * Depending on the result of kind() the interface is extended by - * ILT_Text or ILT_Ref. - */ -class ILinkedText -{ - public: - enum Kind { Kind_Text, Kind_Ref }; - virtual Kind kind() const = 0; -}; - -/*! \brief Plain text fragment. - */ -class ILT_Text : public ILinkedText -{ - public: - virtual const IString *text() const = 0; -}; - -/*! \brief Reference to an object. - */ -class ILT_Ref : public ILinkedText -{ - public: - enum TargetKind { Member, Compound }; - virtual const IString *id() const = 0; - virtual TargetKind targetKind() const = 0; - virtual const IString *external() const = 0; - virtual const IString *text() const = 0; -}; - -/*! \brief Iterates over a list of ILinkedText fragments. - */ -class ILinkedTextIterator -{ - public: - virtual ILinkedText *toFirst() = 0; - virtual ILinkedText *toLast() = 0; - virtual ILinkedText *toNext() = 0; - virtual ILinkedText *toPrev() = 0; - virtual ILinkedText *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief Representation of a parameter of a function. */ -class IParam -{ - public: - virtual ILinkedTextIterator *type() const = 0; - virtual const IString * declarationName() const = 0; - virtual const IString * definitionName() const = 0; - virtual const IString * attrib() const = 0; - virtual const IString * arraySpecifier() const = 0; - virtual ILinkedTextIterator *defaultValue() const = 0; - virtual IDocRoot *briefDescription() const = 0; -}; - -class IParamIterator -{ - public: - virtual IParam *toFirst() = 0; - virtual IParam *toLast() = 0; - virtual IParam *toNext() = 0; - virtual IParam *toPrev() = 0; - virtual IParam *current() const = 0; - virtual void release() = 0; -}; - -class IMemberReference -{ - public: - virtual IMember *member() const = 0; - virtual const IString * name() const = 0; - virtual const IString * scope() const = 0; - virtual const IString * protection() const = 0; - virtual const IString * virtualness() const = 0; - virtual const IString * ambiguityScope() const = 0; -}; - -class IMemberReferenceIterator -{ - public: - virtual IMemberReference *toFirst() = 0; - virtual IMemberReference *toLast() = 0; - virtual IMemberReference *toNext() = 0; - virtual IMemberReference *toPrev() = 0; - virtual IMemberReference *current() const = 0; - virtual void release() = 0; -}; - -class IDoc -{ - public: - enum Kind - { - Invalid = 0, // 0 - Para, // 1 -> IDocPara - Text, // 2 -> IDocText - MarkupModifier, // 3 -> IDocMarkupModifier - ItemizedList, // 4 -> IDocItemizedList - OrderedList, // 5 -> IDocOrderedList - ListItem, // 6 -> IDocListItem - ParameterList, // 7 -> IDocParameterList - Parameter, // 8 -> IDocParameter - SimpleSect, // 9 -> IDocSimpleSect - Title, // 10 -> IDocTitle - Ref, // 11 -> IDocRef - VariableList, // 12 -> IDocVariableList - VariableListEntry, // 13 -> IDocVariableListEntry - HRuler, // 14 -> IDocHRuler - LineBreak, // 15 -> IDocLineBreak - ULink, // 16 -> IDocULink - EMail, // 17 -> IDocEMail - Link, // 18 -> IDocLink - ProgramListing, // 19 -> IDocProgramListing - CodeLine, // 20 -> IDocCodeLine - Highlight, // 21 -> IDocHighlight - Formula, // 22 -> IDocFormula - Image, // 23 -> IDocImage - DotFile, // 24 -> IDocDotFile - IndexEntry, // 25 -> IDocIndexEntry - Table, // 26 -> IDocTable - Row, // 27 -> IDocRow - Entry, // 28 -> IDocEntry - Section, // 29 -> IDocSection - Verbatim, // 30 -> IDocVerbatim - Copy, // 31 -> IDocCopy - TocList, // 32 -> IDocTocList - TocItem, // 33 -> IDocTocItem - Anchor, // 34 -> IDocAnchor - Symbol, // 35 -> IDocSymbol - Internal, // 36 -> IDocInternal - Root, // 37 -> IDocRoot - ParameterItem // 38 -> IDocParameterItem - }; - virtual Kind kind() const = 0; -}; - -class IDocMarkup : public IDoc -{ - public: - enum Markup - { - Normal = 0x000, - Bold = 0x001, - Emphasis = 0x002, - ComputerOutput = 0x004, - Subscript = 0x008, - Superscript = 0x010, - SmallFont = 0x020, - Center = 0x040, - Preformatted = 0x080, - Heading = 0x100 - }; -}; - -class IDocPara : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocText : public IDocMarkup -{ - public: - virtual const IString * text() const = 0; - virtual int markup() const = 0; - virtual int headingLevel() const = 0; -}; - -class IDocMarkupModifier : public IDoc -{ - public: - virtual bool enabled() const = 0; - virtual int markup() const = 0; - virtual int headingLevel() const = 0; -}; - -class IDocItemizedList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocOrderedList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocListItem : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocParameterList : public IDoc -{ - public: - enum Types { Param, RetVal, Exception }; - virtual Types sectType() const = 0; - virtual IDocIterator *params() const = 0; -}; - -class IDocParameterItem : public IDoc -{ - public: - virtual IDocIterator *paramNames() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocParameter : public IDoc -{ - public: - virtual const IString * name() const = 0; -}; - -class IDocTitle : public IDoc -{ - public: - virtual IDocIterator *title() const = 0; -}; - -class IDocSimpleSect : public IDoc -{ - public: - enum Types { Invalid = 0, - See, Return, Author, Version, - Since, Date, Bug, Note, - Warning, Par, Deprecated, Pre, - Post, Invar, Remark, Attention, - Todo, Test, RCS, EnumValues, - Examples - }; - virtual Types type() const = 0; - virtual const IString * typeString() const = 0; - virtual IDocTitle *title() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocRef : public IDoc -{ - public: - enum TargetKind { Member, Compound }; - virtual const IString * refId() const = 0; - virtual TargetKind targetKind() const = 0; - virtual const IString * external() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocVariableList : public IDoc -{ - public: - virtual IDocIterator *entries() const = 0; -}; - -class IDocVariableListEntry : public IDoc -{ - public: - virtual ILinkedTextIterator * term() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocHRuler : public IDoc -{ -}; - -class IDocLineBreak : public IDoc -{ -}; - -class IDocULink : public IDoc -{ - public: - virtual const IString * url() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocEMail : public IDoc -{ - public: - virtual const IString * address() const = 0; -}; - -class IDocLink : public IDoc -{ - public: - virtual const IString * refId() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocProgramListing : public IDoc -{ - public: - virtual IDocIterator *codeLines() const = 0; -}; - -class IDocCodeLine : public IDoc -{ - public: - virtual int lineNumber() const = 0; - virtual const IString * refId() const = 0; - virtual IDocIterator *codeElements() const = 0; -}; - -class IDocHighlight : public IDoc -{ - public: - enum HighlightKind - { Invalid=0, - Comment, Keyword, - KeywordType, KeywordFlow, CharLiteral, - StringLiteral, Preprocessor - }; - virtual HighlightKind highlightKind() const = 0; - virtual IDocIterator *codeElements() const = 0; -}; - -class IDocFormula : public IDoc -{ - public: - virtual const IString * id() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocImage : public IDoc -{ - public: - virtual const IString * name() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocDotFile : public IDoc -{ - public: - virtual const IString * name() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocIndexEntry : public IDoc -{ - public: - virtual const IString * primary() const = 0; - virtual const IString * secondary() const = 0; -}; - -class IDocTable : public IDoc -{ - public: - virtual IDocIterator *rows() const = 0; - virtual int numColumns() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocRow : public IDoc -{ - public: - virtual IDocIterator *entries() const = 0; -}; - -class IDocEntry : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocSection : public IDoc -{ - public: - virtual const IString * id() const = 0; - virtual int level() const = 0; - virtual IDocTitle *title() const = 0; - virtual IDocIterator *paragraphs() const = 0; - virtual IDocIterator *subSections() const = 0; - virtual IDocInternal *internal() const = 0; -}; - -class IDocInternal : public IDoc -{ - public: - virtual IDocIterator *paragraphs() const = 0; - virtual IDocIterator *subSections() const = 0; -}; - -class IDocTocList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocTocItem : public IDoc -{ - public: - virtual const IString *id() const = 0; - virtual const IString *title() const = 0; -}; - -class IDocCopy : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocVerbatim : public IDoc -{ - public: - enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim }; - virtual const IString *text() const = 0; - virtual Types type() const = 0; -}; - -class IDocAnchor : public IDoc -{ - public: - virtual const IString *id() const = 0; -}; - -class IDocSymbol : public IDoc -{ - public: - enum Types - { Invalid = 0, - Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy - }; - virtual Types type() const = 0; - virtual const IString * typeString() const = 0; - virtual char letter() const = 0; -}; - -class IDocRoot : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; - virtual IDocInternal *internal() const = 0; -}; - -class IDocIterator -{ - public: - virtual IDoc *toFirst() = 0; - virtual IDoc *toLast() = 0; - virtual IDoc *toNext() = 0; - virtual IDoc *toPrev() = 0; - virtual IDoc *current() const = 0; - virtual void release() = 0; -}; - -class IEdgeLabel -{ - public: - virtual const IString * label() const = 0; -}; - -class IEdgeLabelIterator -{ - public: - virtual IEdgeLabel *toFirst() = 0; - virtual IEdgeLabel *toLast() = 0; - virtual IEdgeLabel *toNext() = 0; - virtual IEdgeLabel *toPrev() = 0; - virtual IEdgeLabel *current() const = 0; - virtual void release() = 0; -}; - -class IChildNode -{ - public: - enum NodeRelation { PublicInheritance, ProtectedInheritance, - PrivateInheritance, Usage, TemplateInstance - }; - virtual INode * node() const = 0; - virtual NodeRelation relation() const = 0; - virtual const IString * relationString() const = 0; - virtual IEdgeLabelIterator *edgeLabels() const = 0; -}; - -class IChildNodeIterator -{ - public: - virtual IChildNode *toFirst() = 0; - virtual IChildNode *toLast() = 0; - virtual IChildNode *toNext() = 0; - virtual IChildNode *toPrev() = 0; - virtual IChildNode *current() const = 0; - virtual void release() = 0; -}; - -class INode -{ - public: - virtual const IString * id() const = 0; - virtual const IString * label() const = 0; - virtual const IString * linkId() const = 0; - virtual IChildNodeIterator *children() const = 0; -}; - -class INodeIterator -{ - public: - virtual INode *toFirst() = 0; - virtual INode *toLast() = 0; - virtual INode *toNext() = 0; - virtual INode *toPrev() = 0; - virtual INode *current() const = 0; - virtual void release() = 0; -}; - -class IGraph -{ - public: - virtual INodeIterator *nodes() const = 0; -}; - -class IMember -{ - public: - enum MemberKind { Invalid=0, - Define, Property, Variable, Typedef, Enum, - Function, Signal, Prototype, Friend, DCOP, Slot, - EnumValue - }; - virtual ICompound *compound() const = 0; - virtual ISection *section() const = 0; - virtual MemberKind kind() const = 0; - virtual const IString * kindString() const = 0; - virtual const IString * id() const = 0; - virtual const IString * protection() const = 0; - virtual const IString * virtualness() const = 0; - virtual ILinkedTextIterator *type() const = 0; - virtual const IString * typeString() const = 0; - virtual const IString * name() const = 0; - virtual const IString * readAccessor() const = 0; - virtual const IString * writeAccessor() const = 0; - virtual const IString * definition() const = 0; - virtual const IString * argsstring() const = 0; - virtual bool isConst() const = 0; - virtual bool isVolatile() const = 0; - virtual bool isStatic() const = 0; - virtual bool isExplicit() const = 0; - virtual bool isInline() const = 0; - virtual bool isMutable() const = 0; - virtual bool isReadable() const = 0; - virtual bool isWritable() const = 0; - virtual IParamIterator *parameters() const = 0; - virtual IParamIterator *templateParameters() const = 0; - virtual ILinkedTextIterator *initializer() const = 0; - virtual ILinkedTextIterator *exceptions() const = 0; - virtual IMemberReferenceIterator *references() const = 0; - virtual IMemberReferenceIterator *referencedBy() const = 0; - virtual const IString *bodyFile() const = 0; - virtual int bodyStart() const = 0; - virtual int bodyEnd() const = 0; - virtual const IString * definitionFile() const = 0; - virtual int definitionLine() const = 0; - virtual IMemberReference *reimplements() const = 0; - virtual IMemberReferenceIterator *reimplementedBy() const = 0; - virtual IDocRoot *briefDescription() const = 0; - virtual IDocRoot *detailedDescription() const = 0; - virtual IDocRoot *inbodyDescription() const = 0; -}; - -class IDefine : public IMember -{ - public: -}; - -class IProperty : public IMember -{ - public: -}; - -class IVariable : public IMember -{ - public: -}; - -class ITypedef : public IMember -{ - public: -}; - -class IFunction : public IMember -{ - public: -}; - -class ISignal : public IMember -{ - public: -}; - -class IPrototype : public IMember -{ - public: -}; - -class IFriend : public IMember -{ - public: -}; - -class IDCOP : public IMember -{ - public: -}; - -class ISlot : public IMember -{ - public: -}; - -class IEnumValue : public IMember -{ - public: - virtual const IString * name() const = 0; -}; - -/*! \brief Include relation - */ -class IInclude -{ - public: - virtual const IString * name() const = 0; - virtual const IString * refId() const = 0; - virtual bool isLocal() const = 0; -}; - -class IIncludeIterator -{ - public: - virtual IInclude *toFirst() = 0; - virtual IInclude *toLast() = 0; - virtual IInclude *toNext() = 0; - virtual IInclude *toPrev() = 0; - virtual IInclude *current() const = 0; - virtual void release() = 0; -}; - -class IMemberIterator -{ - public: - virtual IMember *toFirst() = 0; - virtual IMember *toLast() = 0; - virtual IMember *toNext() = 0; - virtual IMember *toPrev() = 0; - virtual IMember *current() const = 0; - virtual void release() = 0; -}; - -class IEnum : public IMember -{ - public: - virtual IMemberIterator *enumValues() const = 0; -}; - -/*! \brief The interface to a section in the object model. - * - * A compound can have a number of sections, where each - * section contains a set of members with the properties implied by - * the section kind. The kind() method returns the kind of the section. - * The members of the section can be accessed via members(). Apart - * from using kind(), some of the individual properties of the section can - * also be inspected via isStatic(), isPublic(), isProtected() and - * isPrivate(). - */ -class ISection -{ - public: - /*! Possible section types */ - enum SectionKind - { Invalid=0, - UserDefined, //!< A user defined member group - PubTypes, //!< Public member typedefs - PubFuncs, //!< Public member functions - PubAttribs, //!< Public member attributes - PubSlots, //!< Public Qt Slots - Signals, //!< Qt Signals - DCOPFuncs, //!< KDE-DCOP interface functions - Properties, //!< IDL properties - Events, //!< C# events - PubStatFuncs, //!< Public static member functions - PubStatAttribs, //!< Public static attributes - ProTypes, //!< Protected member typedefs - ProFuncs, //!< Protected member functions - ProAttribs, //!< Protected member attributes - ProSlots, //!< Protected slots - ProStatFuncs, //!< Protected static member functions - ProStatAttribs, //!< Protected static member attributes - PacTypes, //!< Package member typedefs - PacFuncs, //!< Package member functions - PacAttribs, //!< Package member attributes - PacStatFuncs, //!< Package static member functions - PacStatAttribs, //!< Package static member attributes - PriTypes, //!< Private member typedefs - PriFuncs, //!< Private member functions - PriAttribs, //!< Private member attributes - PriSlots, //!< Private Qt slots - PriStatFuncs, //!< Private static member functions - PriStatAttribs, //!< Private static member attributes - Friend, //!< Friends - Related, //!< Function marked as related - Defines, //!< Preprocessor defines - Prototypes, //!< Global function prototypes - Typedefs, //!< Global typedefs - Enums, //!< Enumerations - Functions, //!< Global functions - Variables //!< Global variables - }; - - /*! Returns a string representation of the value returned by kind() */ - virtual const IString * kindString() const = 0; - - /*! Returns what kind of section this is */ - virtual SectionKind kind() const = 0; - - /*! Returns the description attached to this section (for user defined - * sections, also known as member groups). - */ - virtual IDocRoot *description() const = 0; - - /*! Returns an iterator for the members of this section */ - virtual IMemberIterator *members() const = 0; - - /*! Returns \c true if this section contains statics */ - virtual bool isStatic() const = 0; - - /*! Returns \c true if this section belongs to a - * public section of a class - */ - virtual bool isPublic() const = 0; - - /*! Returns \c true if this section belongs to a - * private section of a class - */ - virtual bool isPrivate() const = 0; - - /*! Returns \c true if this section belongs to a - * protected section of a class - * */ - virtual bool isProtected() const = 0; -}; - -class IUserDefined : public ISection -{ - public: - virtual const IString * header() const = 0; -}; - -class ISectionIterator -{ - public: - virtual ISection *toFirst() = 0; - virtual ISection *toLast() = 0; - virtual ISection *toNext() = 0; - virtual ISection *toPrev() = 0; - virtual ISection *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief The interface to a compound in the object model. - * - * A compound has a name which can be obtained via the name() method - * and a unique id, which is return via the id() method. - * A compound consists zero or more members which are grouped into sections. - * The sections() method can be used to access the individual sections. - * Alternatively, members can be obtained by name or id. There are - * different types of compounds. The kind() method returns what kind of - * compound this is. Depending on the return value one can dynamically - * cast an interface pointer to an more specialised interface that provides - * additional methods. - * Example: - * \code - * ICompound *comp=...; - * if (comp->kind()==ICompound::Class) - * { - * IClass *cls = dynamic_cast(comp); - * // use methods of IClass - * } - * \endcode - * The documentation that is provided by a compound is available via - * the briefDescription() and detailedDescription() methods. - * To avoid excessive memory usage, release() should be called (once) on each - * compound interface pointer that is no longer needed. - */ -class ICompound -{ - public: - /*! Represents the kind of compounds recognised by doxygen. */ - enum CompoundKind { Invalid=0, - Class, Struct, Union, Interface, Protocol, Category, - Exception, File, Namespace, Group, Page, Example, Dir - }; - - /*! Returns the name of this compound */ - virtual const IString * name() const = 0; - - /*! Returns the id of this compound. The id is a - * unique string representing a specific compound object. - */ - virtual const IString * id() const = 0; - - /*! Returns the kind of compound. See #CompoundKind for possible - * values. - */ - virtual CompoundKind kind() const = 0; - - /*! Returns a string representation of the compound kind. - * @see kind() - */ - virtual const IString * kindString() const = 0; - - /*! Returns an iterator for the different member sections in this - * compound. - */ - virtual ISectionIterator *sections() const = 0; - - /*! Returns a tree-structured representation of the brief - * description that is attached to this compound. - */ - virtual IDocRoot *briefDescription() const = 0; - - /*! Returns a tree-structured representation of the detailed - * description that is attached to this compound. - */ - virtual IDocRoot *detailedDescription() const = 0; - - /*! Returns an interface to a member given its id. - * @param id The member id. - */ - virtual IMember *memberById(const char * id) const = 0; - - /*! Returns a list of all members within the compound having a certain - * name. Member overloading is the reason why there can be more than - * one member. - * @param name The name of the member. - */ - virtual IMemberIterator *memberByName(const char * name) const = 0; - - /*! Decreases the reference counter for this compound. If it reaches - * zero, the memory for the compound will be released. - */ - virtual void release() = 0; -}; - -class ICompoundIterator -{ - public: - virtual void toFirst() = 0; - virtual void toLast() = 0; - virtual void toNext() = 0; - virtual void toPrev() = 0; - virtual ICompound *current() const = 0; - virtual void release() = 0; -}; - -class IRelatedCompound -{ - public: - enum Protection { Public, Protected, Private }; - enum Kind { Normal, Virtual }; - virtual ICompound *compound() const = 0; - virtual Protection protection() const = 0; - virtual Kind kind() const = 0; - virtual const IString *name() const = 0; - -}; - -class IRelatedCompoundIterator -{ - public: - virtual IRelatedCompound *toFirst() = 0; - virtual IRelatedCompound *toLast() = 0; - virtual IRelatedCompound *toNext() = 0; - virtual IRelatedCompound *toPrev() = 0; - virtual IRelatedCompound *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief The interface to a class in the object model. - */ -class IClass : public ICompound -{ - public: - virtual IGraph *inheritanceGraph() const = 0; - virtual IGraph *collaborationGraph() const = 0; - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; - virtual ICompoundIterator *nestedCompounds() const = 0; - virtual IParamIterator *templateParameters() const = 0; - virtual const IString *locationFile() const = 0; - virtual int locationLine() const = 0; - virtual const IString *locationBodyFile() const = 0; - virtual int locationBodyStartLine() const = 0; - virtual int locationBodyEndLine() const = 0; - - // TODO: - // class: - // listOfAllMembers() - // protection() - // isAbstract() -}; - -/*! \brief The interface to a struct in the object model. - */ -class IStruct : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; - virtual const IString *locationFile() const = 0; - virtual int locationLine() const = 0; - virtual int locationBodyStartLine() const = 0; - virtual int locationBodyEndLine() const = 0; -}; - -/*! \brief The interface to a union in the object model. - */ -class IUnion : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! \brief The interface to a Java/IDL interface in the object model. - */ -class IInterface : public ICompound -{ - public: - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; -}; - - -/*! \brief The interface to a Java/IDL exception in the object model. - */ -class IException : public ICompound -{ -}; - -/*! \brief The interface to a namespace in the object model. - */ -class INamespace : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! \brief The interface to a file in the object model. - */ -class IFile : public ICompound -{ - public: - virtual IGraph *includeDependencyGraph() const = 0; - virtual IGraph *includedByDependencyGraph() const = 0; - virtual IDocProgramListing *source() const = 0; - virtual ICompoundIterator *nestedCompounds() const = 0; - - virtual IIncludeIterator *includes() const = 0; - virtual IIncludeIterator *includedBy() const = 0; - - // ICompound *innerNamespaces() - // ICompoundIterator *innerClasses() -}; - -/*! \brief The interface to a group in the object model. - */ -class IGroup : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; - // group: - // Title() - // innerFile() - // innerPage() -}; - -/*! \brief The interface to a page in the object model. - */ -class IPage : public ICompound -{ - public: - virtual const IDocTitle *title() const = 0; -}; - -/*! Root node of the object model. */ -class IDoxygen -{ - public: - - /*! Returns an iterator that can be used to iterate over the list - * of compounds found in the project. - */ - virtual ICompoundIterator *compounds() const = 0; - - /*! Returns a compound given its unique \a id. If you have a - * compound id this function is much more efficient than iterating - * over the compound list. Returns 0 if the id is not valid. - */ - virtual ICompound *compoundById(const char * id) const = 0; - - /*! Returns a compound given its name (including the scope). - * Returns 0 if the name is not found in the project. - */ - virtual ICompound *compoundByName(const char * name) const = 0; - - /*! Returns an interface to a compound containing a member given it the - * member's id. Given the ICompound interface one can use the same id - * to obtain the IMember interface. - * @param id The member id. - */ - virtual ICompound *memberById(const char * id) const = 0; - - /*! Returns a list of all compounds containing at least one members - * with a certain name. Each compound can be asked to return the - * list of members with that name. - * @param name The name of the member. - */ - virtual ICompoundIterator *memberByName(const char * name) const = 0; - - /*! Releases the memory for the object hierarchy obtained by - * createdObjecModelFromXML(). First release all iterators before calling - * this function. - */ - virtual void release() = 0; - - /*! Sets the debug level. - * - 0 all debugging messages are disabled (the default). - * - 1 display important messages only - * - 2 display any messages. - */ - virtual void setDebugLevel(int level) = 0; - - /*! Reads an XML directory produced by doxygen and builds up a data - * structure representing the contents of the XML files in the directory. - */ - virtual bool readXMLDir(const char *xmlDirName) = 0; -}; - -/*! Factory method that creates an empty object model for a doxygen generated XML file. - * Use the readXMLDir() method to build the model from an XML output - * directory containing doxygen output. - */ -IDoxygen *createObjectModel(); - -#endif diff --git a/addon/doxmlparser/src/.cvsignore b/addon/doxmlparser/src/.cvsignore deleted file mode 100644 index af1ea36..0000000 --- a/addon/doxmlparser/src/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Makefile -doxmlparser.pro -Makefile.doxmlparser diff --git a/addon/doxmlparser/src/Makefile.in b/addon/doxmlparser/src/Makefile.in deleted file mode 100644 index 049f969..0000000 --- a/addon/doxmlparser/src/Makefile.in +++ /dev/null @@ -1,13 +0,0 @@ -all clean depend: Makefile.doxmlparser - $(MAKE) -f Makefile.doxmlparser $@ - -distclean: clean - $(RM) -rf Makefile.doxmlparser doxmlparser.pro Makefile obj - -tmake: - $(ENV) $(PERL) $(TMAKE) doxmlparser.pro >Makefile.doxmlparser - -Makefile.doxmlparser: doxmlparser.pro - $(ENV) $(PERL) $(TMAKE) doxmlparser.pro >Makefile.doxmlparser - -install: diff --git a/addon/doxmlparser/src/basehandler.cpp b/addon/doxmlparser/src/basehandler.cpp deleted file mode 100644 index 02d98c2..0000000 --- a/addon/doxmlparser/src/basehandler.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "basehandler.h" - -QXmlLocator * LocatorContainer::s_theLocator=0; diff --git a/addon/doxmlparser/src/basehandler.h b/addon/doxmlparser/src/basehandler.h deleted file mode 100644 index 446f777..0000000 --- a/addon/doxmlparser/src/basehandler.h +++ /dev/null @@ -1,325 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _BASEHANDLER_H -#define _BASEHANDLER_H - -#include -#include -#include - -#include "debug.h" - -//----------------------------------------------------------------------------- - -class IBaseHandler -{ - public: - virtual void setDelegate(QXmlDefaultHandler *delegate) = 0; - virtual QXmlDefaultHandler *delegate() const = 0; - virtual ~IBaseHandler() {} -}; - -//----------------------------------------------------------------------------- - -class IFallBackHandler -{ - public: - virtual bool handleStartElement(const QString & name, - const QXmlAttributes & attrib) = 0; - virtual bool handleEndElement(const QString &name) = 0; - virtual ~IFallBackHandler() {} -}; - -//----------------------------------------------------------------------------- - -template class ElementMapper -{ - class StartElementHandler - { - typedef void (T::*Handler)(const QXmlAttributes &attrib); - public: - StartElementHandler() : m_parent(0) {} - StartElementHandler(T *parent, Handler h) - : m_parent(parent), m_handler(h) {} - void operator()(const QXmlAttributes &attrib) - { if (m_parent) (m_parent->*m_handler)(attrib); } - private: - T *m_parent; - Handler m_handler; - }; - - class EndElementHandler - { - typedef void (T::*Handler)(); - public: - EndElementHandler() : m_parent(0) {} - EndElementHandler(T *parent, Handler h) - : m_parent(parent), m_handler(h) {} - void operator()() - { if (m_parent) (m_parent->*m_handler)(); } - private: - T *m_parent; - Handler m_handler; - }; - - public: - typedef StartElementHandler StartElementHandlerT; - typedef EndElementHandler EndElementHandlerT; - - ElementMapper() : m_startHandlers(67), m_endHandlers(67) - { - m_startHandlers.setAutoDelete(TRUE); - m_endHandlers.setAutoDelete(TRUE); - } - virtual ~ElementMapper() - { - } - - void addStartHandler(const char *key) - { - m_startHandlers.insert(key,new StartElementHandlerT); - } - - void addStartHandler(const char *key, T *obj, void (T::*handler)(const QXmlAttributes &)) - { - m_startHandlers.insert(key,new StartElementHandlerT(obj,handler)); - } - - void addEndHandler(const char *key) - { - m_endHandlers.insert(key,new EndElementHandlerT); - } - - void addEndHandler(const char *key, T *obj, void (T::*handler)()) - { - m_endHandlers.insert(key,new EndElementHandlerT(obj,handler)); - } - - - protected: - QDict m_startHandlers; - QDict m_endHandlers; -}; - -//----------------------------------------------------------------------------- - -struct LocatorContainer -{ - static QXmlLocator *s_theLocator; -}; - -//----------------------------------------------------------------------------- - -template class BaseHandler : public QXmlDefaultHandler, - public ElementMapper, - public LocatorContainer, - public IBaseHandler -{ - public: - typedef typename ElementMapper::StartElementHandlerT StartElementHandlerT; - typedef typename ElementMapper::EndElementHandlerT EndElementHandlerT; - - BaseHandler() : m_delegateHandler(0), m_fallBackHandler(0) - { - } - - virtual ~BaseHandler() - { - ASSERT(m_delegateHandler==0); - } - - virtual bool startDocument() - { - return TRUE; - } - - virtual bool startElement( const QString & namespaceURI, - const QString & localName, - const QString & name, - const QXmlAttributes & attrib - ) - { - if (m_delegateHandler) - { - return m_delegateHandler->startElement(namespaceURI,localName,name,attrib); - } - if (!m_skipUntil.isEmpty()) // skip mode - { - if (m_skipUntil==name) m_skipCount++; - debug(1,"line %d, col %d: skipping start tag %s count=%d\n", - s_theLocator->lineNumber(),s_theLocator->columnNumber(), - name.data(),m_skipCount); - return TRUE; - } - - StartElementHandlerT *handler = m_startHandlers[name]; - if (handler) - { - (*handler)(attrib); - //printf("found start tag %s\n",name.data()); - } - else if (!m_fallBackHandler || - !m_fallBackHandler->handleStartElement(name,attrib) - ) - { - debug(1,"line %d, col %d: found unexpected tag `%s', skipping until matching end tag\n", - s_theLocator->lineNumber(),s_theLocator->columnNumber(), - name.data()); - m_skipUntil = name; - m_skipCount=1; - } - return TRUE; - } - - virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& name ) - { - if (m_delegateHandler) - { - return m_delegateHandler->endElement(namespaceURI,localName,name); - } - - if (name==m_skipUntil) - { - m_skipCount--; - debug(1,"line %d, col %d: skipping end tag %s count=%d\n", - s_theLocator->lineNumber(),s_theLocator->columnNumber(), - name.data(),m_skipCount); - if (m_skipCount==0) - { - m_skipUntil=""; - } - //printf("found end tag %s\n",name.data()); - } - else if (m_skipUntil.isEmpty()) - { - EndElementHandlerT *handler = m_endHandlers[name]; - if (handler) - { - (*handler)(); - //printf("found end tag %s\n",name.data()); - } - else if (m_fallBackHandler) - { - m_fallBackHandler->handleEndElement(name); - } - } - m_curString=""; - return TRUE; - } - - bool skippedEntity ( const QString &s ) - { - if (m_delegateHandler) - { - return m_delegateHandler->skippedEntity(s); - } - - debug(1,"line %d, col %d: Skipped unhandled entity %s\n", - s_theLocator->lineNumber(),s_theLocator->columnNumber(), - s.data()); - return TRUE; - } - - /*! called when a number of characters are received by the parser. - * \param ch the characters. - */ - virtual bool characters ( const QString & ch ) - { - if (m_delegateHandler) - { - return m_delegateHandler->characters(ch); - } - - //printf("Found characters \"%s\"\n",ch.data()); - m_curString+=ch; - return TRUE; - } - - void setDelegate(QXmlDefaultHandler *delegate) - { - m_delegateHandler = delegate; - } - - QXmlDefaultHandler *delegate() const - { - return m_delegateHandler; - } - - void setFallBackHandler(IFallBackHandler *h) - { - m_fallBackHandler = h; - } - - IFallBackHandler *fallBackHandler() const - { - return m_fallBackHandler; - } - - void setDocumentLocator( QXmlLocator * locator ) - { - debug(2,"setDocumentLocator(%p)\n",locator); - s_theLocator = locator; - } - - protected: - QString m_curString; - QString m_skipUntil; - int m_skipCount; - QXmlDefaultHandler *m_delegateHandler; - IFallBackHandler *m_fallBackHandler; -}; - -//----------------------------------------------------------------------------- - -template class BaseFallBackHandler : public ElementMapper, - public IFallBackHandler -{ - public: - typedef typename ElementMapper::StartElementHandlerT StartElementHandlerT; - typedef typename ElementMapper::EndElementHandlerT EndElementHandlerT; - - BaseFallBackHandler() - { - } - virtual ~BaseFallBackHandler() - { - } - - bool handleStartElement(const QString & name, - const QXmlAttributes & attrib) - { - StartElementHandlerT *handler = m_startHandlers[name]; - if (handler) - { - (*handler)(attrib); - return TRUE; - } - return FALSE; - } - bool handleEndElement(const QString &name) - { - EndElementHandlerT *handler = m_endHandlers[name]; - if (handler) - { - (*handler)(); - return TRUE; - } - return FALSE; - } -}; - - -#endif diff --git a/addon/doxmlparser/src/baseiterator.h b/addon/doxmlparser/src/baseiterator.h deleted file mode 100644 index 06a9a11..0000000 --- a/addon/doxmlparser/src/baseiterator.h +++ /dev/null @@ -1,50 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ -#ifndef BASEITERATOR_H -#define BASEITERATOR_H - -#include -#include - -template class BaseIterator : - public Intf, public QListIterator -{ - public: - BaseIterator(const QList &list) : QListIterator(list) {} - virtual ~BaseIterator() {} - virtual ElemIntf *toFirst() { return QListIterator::toFirst(); } - virtual ElemIntf *toLast() { return QListIterator::toLast(); } - virtual ElemIntf *toNext() { return QListIterator::operator++(); } - virtual ElemIntf *toPrev() { return QListIterator::operator--(); } - virtual ElemIntf *current() const { return QListIterator::current(); } - virtual void release() { delete this; } -}; - -template - class BaseIteratorVia : - public Intf, public QListIterator -{ - public: - BaseIteratorVia(const QList &list) : QListIterator(list) {} - virtual ~BaseIteratorVia() {} - virtual ElemIntf *toFirst() { return static_cast(QListIterator::toFirst()); } - virtual ElemIntf *toLast() { return static_cast(QListIterator::toLast()); } - virtual ElemIntf *toNext() { return static_cast(QListIterator::operator++()); } - virtual ElemIntf *toPrev() { return static_cast(QListIterator::operator--()); } - virtual ElemIntf *current() const { return static_cast(QListIterator::current()); } - virtual void release() { delete this; } -}; - -#endif diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp deleted file mode 100644 index 5bdf160..0000000 --- a/addon/doxmlparser/src/compoundhandler.cpp +++ /dev/null @@ -1,650 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include "mainhandler.h" -#include "compoundhandler.h" -#include "dochandler.h" -#include "debug.h" -#include "graphhandler.h" -#include "sectionhandler.h" -#include "paramhandler.h" -#include "loamhandler.h" -#include "memberhandler.h" - -//---------------------------------------------------------------------------- - -IncludeHandler::IncludeHandler(IBaseHandler *parent,const char *endtag) : - m_parent(parent) -{ - addEndHandler(endtag,this,&IncludeHandler::endInclude); -} - -IncludeHandler::~IncludeHandler() -{ -} - -void IncludeHandler::startInclude(const QXmlAttributes &attrib) -{ - m_curString = ""; - m_refId = attrib.value("refid"); - m_isLocal = attrib.value("local")=="yes"; - m_parent->setDelegate(this); -} - -void IncludeHandler::endInclude() -{ - m_name = m_curString; - m_parent->setDelegate(0); - debug(2,"Found include %s\n",m_name.data()); -} - -//---------------------------------------------------------------------------- - -class CompoundIdIterator : public ICompoundIterator, - public QListIterator -{ - public: - CompoundIdIterator(const MainHandler *m,const QList &list) : - QListIterator(list), m_mainHandler(m) {} - virtual ~CompoundIdIterator() {} - - virtual void toFirst() - { - QListIterator::toFirst(); - } - virtual void toLast() - { - QListIterator::toLast(); - } - virtual void toNext() - { - QListIterator::operator++(); - } - virtual void toPrev() - { - QListIterator::operator--(); - } - virtual ICompound *current() const - { - QString *id = QListIterator::current(); - return id ? m_mainHandler->compoundById(*id) : 0; - } - virtual void release() - { delete this; } - - private: - const MainHandler *m_mainHandler; -}; - -//---------------------------------------------------------------------------- - -ICompound *RelatedCompound::compound() const -{ - return m_parent->m_mainHandler->compoundById(m_id); -} - -//---------------------------------------------------------------------------- - -class CompoundErrorHandler : public QXmlErrorHandler -{ - public: - virtual ~CompoundErrorHandler() {} - bool warning( const QXmlParseException & ) - { - return FALSE; - } - bool error( const QXmlParseException & ) - { - return FALSE; - } - bool fatalError( const QXmlParseException &exception ) - { - debug(1,"Fatal error at line %d column %d: %s\n", - exception.lineNumber(),exception.columnNumber(), - exception.message().data()); - return FALSE; - } - QString errorString() { return ""; } - - private: - QString errorMsg; -}; - -//---------------------------------------------------------------------------- - -class CompoundTypeMap -{ - public: - CompoundTypeMap() - { - m_map.setAutoDelete(TRUE); - m_map.insert("class", new int(ICompound::Class)); - m_map.insert("struct", new int(ICompound::Struct)); - m_map.insert("union", new int(ICompound::Union)); - m_map.insert("interface",new int(ICompound::Interface)); - m_map.insert("protocol", new int(ICompound::Protocol)); - m_map.insert("category", new int(ICompound::Category)); - m_map.insert("exception",new int(ICompound::Exception)); - m_map.insert("file", new int(ICompound::File)); - m_map.insert("namespace",new int(ICompound::Namespace)); - m_map.insert("group", new int(ICompound::Group)); - m_map.insert("page", new int(ICompound::Page)); - m_map.insert("example", new int(ICompound::Example)); - m_map.insert("dir", new int(ICompound::Dir)); - } - virtual ~CompoundTypeMap() - { - } - ICompound::CompoundKind map(const QString &s) - { - int *val = m_map.find(s); - if (val==0) - { - debug(1,"Warning: `%s' is an invalid compound type\n",s.data()); - return ICompound::Invalid; - } - else return (ICompound::CompoundKind)*val; - } - private: - QDict m_map; -}; - -static CompoundTypeMap *s_typeMap; - -void compoundhandler_init() -{ - s_typeMap = new CompoundTypeMap; -} - -void compoundhandler_exit() -{ - delete s_typeMap; -} - -//---------------------------------------------------------------------------- - -CompoundHandler::CompoundHandler(const QString &xmlDir) - : m_titleHandler(0), - m_includeDependencyGraph(0), - m_includedByDependencyGraph(0), - m_templateParamList(0), - m_brief(0), - m_detailed(0), - m_inheritanceGraph(0), - m_collaborationGraph(0), - m_programListing(0), - m_members(0), - m_xmlDir(xmlDir), - m_refCount(1), - m_memberDict(257), - m_memberNameDict(257), - m_mainHandler(0) -{ - m_superClasses.setAutoDelete(TRUE); - m_subClasses.setAutoDelete(TRUE); - m_sections.setAutoDelete(TRUE); - m_memberNameDict.setAutoDelete(TRUE); - m_innerCompounds.setAutoDelete(TRUE); - m_includes.setAutoDelete(TRUE); - m_includedBy.setAutoDelete(TRUE); - - addStartHandler("doxygen"); - addEndHandler("doxygen"); - - addStartHandler("compounddef",this,&CompoundHandler::startCompound); - addEndHandler("compounddef",this,&CompoundHandler::endCompound); - - addStartHandler("compoundname"); - addEndHandler("compoundname",this,&CompoundHandler::endCompoundName); - - addStartHandler("title",this,&CompoundHandler::startTitle); - - addStartHandler("basecompoundref",this,&CompoundHandler::startSuperClass); - addEndHandler("basecompoundref",this,&CompoundHandler::endSuperClass); - - addStartHandler("derivedcompoundref",this,&CompoundHandler::startSubClass); - addEndHandler("derivedcompoundref",this,&CompoundHandler::endSubClass); - - addStartHandler("includes",this,&CompoundHandler::startIncludes); - addStartHandler("includedby",this,&CompoundHandler::startIncludedBy); - - addStartHandler("incdepgraph",this,&CompoundHandler::startIncludeDependencyGraph); - - addStartHandler("invincdepgraph",this,&CompoundHandler::startIncludedByDependencyGraph); - - addStartHandler("innerdir",this,&CompoundHandler::startInnerDir); - addEndHandler("innerdir"); - - addStartHandler("innerfile",this,&CompoundHandler::startInnerFile); - addEndHandler("innerfile"); - - addStartHandler("innerclass",this,&CompoundHandler::startInnerClass); - addEndHandler("innerclass"); - - addStartHandler("innernamespace",this,&CompoundHandler::startInnerNamespace); - addEndHandler("innernamespace"); - - addStartHandler("innerpage",this,&CompoundHandler::startInnerPage); - addEndHandler("innerpage"); - - addStartHandler("innergroup",this,&CompoundHandler::startInnerGroup); - addEndHandler("innergroup"); - - addStartHandler("templateparamlist",this,&CompoundHandler::startTemplateParamList); - - addStartHandler("sectiondef",this,&CompoundHandler::startSection); - - addStartHandler("briefdescription",this,&CompoundHandler::startBriefDesc); - - addStartHandler("detaileddescription",this,&CompoundHandler::startDetailedDesc); - - addStartHandler("inheritancegraph",this,&CompoundHandler::startInheritanceGraph); - - addStartHandler("collaborationgraph",this,&CompoundHandler::startCollaborationGraph); - - addStartHandler("programlisting",this,&CompoundHandler::startProgramListing); - - addStartHandler("location",this,&CompoundHandler::startLocation); - addEndHandler("location"); - - addStartHandler("listofallmembers",this,&CompoundHandler::startListOfAllMembers); -} - -CompoundHandler::~CompoundHandler() -{ - debug(2,"CompoundHandler::~CompoundHandler()\n"); - delete m_titleHandler; - delete m_brief; - delete m_detailed; - delete m_programListing; - delete m_inheritanceGraph; - delete m_collaborationGraph; - delete m_includeDependencyGraph; - delete m_includedByDependencyGraph; - delete m_templateParamList; - delete m_members; -} - -void CompoundHandler::startSection(const QXmlAttributes& attrib) -{ - SectionHandler *sectHandler = new SectionHandler(this); - sectHandler->startSection(attrib); - m_sections.append(sectHandler); -} - -void CompoundHandler::startBriefDesc(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_brief = docHandler; -} - -void CompoundHandler::startDetailedDesc(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_detailed = docHandler; -} - -void CompoundHandler::startProgramListing(const QXmlAttributes& attrib) -{ - ProgramListingHandler *plHandler = new ProgramListingHandler(this); - plHandler->startProgramListing(attrib); - m_programListing = plHandler; -} - -void CompoundHandler::startIncludes(const QXmlAttributes& attrib) -{ - IncludeHandler *inc = new IncludeHandler(this,"includes"); - m_includes.append(inc); - inc->startInclude(attrib); -} - -void CompoundHandler::startIncludedBy(const QXmlAttributes& attrib) -{ - IncludeHandler *inc = new IncludeHandler(this,"includedby"); - m_includedBy.append(inc); - inc->startInclude(attrib); -} - -void CompoundHandler::startCompound(const QXmlAttributes& attrib) -{ - m_id = attrib.value("id"); - m_kindString = attrib.value("kind"); - m_kind = s_typeMap->map(m_kindString); - m_protection = attrib.value("prot"); - debug(2,"startCompound(id=`%s' type=`%s')\n",m_id.data(),m_kindString.data()); -} - -void CompoundHandler::endCompound() -{ - debug(2,"endCompound()\n"); -} - -void CompoundHandler::startLocation(const QXmlAttributes& attrib) -{ - m_defFile = attrib.value("file"); - m_defLine = attrib.value("line").toInt(); - m_defBodyFile = attrib.value("bodyfile"); - m_defBodyStart = attrib.value("bodystart").toInt(); - m_defBodyEnd = attrib.value("bodyend").toInt(); -} - -void CompoundHandler::endCompoundName() -{ - m_name = m_curString.stripWhiteSpace(); - debug(2,"Compound name `%s'\n",m_name.data()); -} - -void CompoundHandler::startInnerClass(const QXmlAttributes& attrib) -{ - m_innerCompounds.append(new QString(attrib.value("refid"))); -} - -void CompoundHandler::startInnerNamespace(const QXmlAttributes& attrib) -{ - m_innerCompounds.append(new QString(attrib.value("refid"))); -} - -void CompoundHandler::startInnerFile(const QXmlAttributes& attrib) -{ - m_innerCompounds.append(new QString(attrib.value("refid"))); -} - -void CompoundHandler::startInnerGroup(const QXmlAttributes& attrib) -{ - m_innerCompounds.append(new QString(attrib.value("refid"))); -} - -void CompoundHandler::startInnerPage(const QXmlAttributes& attrib) -{ - m_innerCompounds.append(new QString(attrib.value("refid"))); -} - -void CompoundHandler::startInnerDir(const QXmlAttributes& attrib) -{ - m_innerCompounds.append(new QString(attrib.value("refid"))); -} - -void CompoundHandler::startTemplateParamList(const QXmlAttributes& attrib) -{ - m_templateParamList = new TemplateParamListHandler(this); - m_templateParamList->startTemplateParamList(attrib); -} - -void CompoundHandler::startListOfAllMembers(const QXmlAttributes& attrib) -{ - m_members = new ListOfAllMembersHandler(this); - m_members->startListOfAllMembers(attrib); -} - -void CompoundHandler::startSuperClass(const QXmlAttributes& attrib) -{ - IRelatedCompound::Protection prot = IRelatedCompound::Public; - QString protString = attrib.value("prot"); - if (protString=="protected") - { - prot = IRelatedCompound::Protected; - } - else if (protString=="private") - { - prot = IRelatedCompound::Private; - } - IRelatedCompound::Kind kind = IRelatedCompound::Normal; - QString kindString = attrib.value("virt"); - if (kindString=="virtual") kind = IRelatedCompound::Virtual; - - RelatedCompound *sc=new RelatedCompound( - this, - attrib.value("refid"), - prot, - kind - ); - debug(2,"super class id=`%s' prot=`%s' virt=`%s'\n", - attrib.value("refid").data(), - protString.data(), - kindString.data()); - m_superClasses.append(sc); - m_curString = ""; -} - -void CompoundHandler::endSuperClass() -{ - m_superClasses.getLast()->setName(m_curString); -} - -void CompoundHandler::startSubClass(const QXmlAttributes& attrib) -{ - IRelatedCompound::Protection prot = IRelatedCompound::Public; - QString protString = attrib.value("prot"); - if (protString=="protected") prot = IRelatedCompound::Protected; - else if (protString=="private") prot = IRelatedCompound::Private; - - IRelatedCompound::Kind kind = IRelatedCompound::Normal; - QString kindString = attrib.value("virt"); - if (kindString=="virtual") kind = IRelatedCompound::Virtual; - - RelatedCompound *sc = new RelatedCompound( - this, - attrib.value("refid"), - prot, - kind - ); - debug(2,"sub class id=`%s' prot=`%s' virt=`%s'\n", - attrib.value("refid").data(), - protString.data(), - kindString.data()); - m_subClasses.append(sc); - m_curString = ""; -} - -void CompoundHandler::endSubClass() -{ - m_subClasses.getLast()->setName(m_curString); -} - -void CompoundHandler::startTitle(const QXmlAttributes& attrib) -{ - ASSERT(m_titleHandler==0); - m_titleHandler = new TitleHandler(this); - m_titleHandler->startTitle(attrib); -} - -bool CompoundHandler::parseXML(const char *compId) -{ - QFile xmlFile(m_xmlDir+"/"+compId+".xml"); - if (!xmlFile.exists()) return FALSE; - CompoundErrorHandler errorHandler; - QXmlInputSource source( xmlFile ); - QXmlSimpleReader reader; - reader.setContentHandler( this ); - reader.setErrorHandler( &errorHandler ); - reader.parse( source ); - return TRUE; -} - -void CompoundHandler::initialize(MainHandler *mh) -{ - m_mainHandler = mh; - QListIterator msi(m_sections); - SectionHandler *sec; - for (;(sec=msi.current());++msi) - { - sec->initialize(this); - } - if (m_members) - { - m_members->initialize(mh); - } -} - -void CompoundHandler::insertMember(MemberHandler *mh) -{ - m_memberDict.insert(mh->id()->latin1(),mh); - mh->initialize(m_mainHandler); - QList *mhl = m_memberNameDict.find(mh->id()->latin1()); - if (mhl==0) - { - mhl = new QList; - m_memberNameDict.insert(mh->name()->latin1(),mhl); - } - mhl->append(mh); -} - -ICompound *CompoundHandler::toICompound() const -{ - switch (m_kind) - { - case IClass::Class: return (IClass *)this; - case IStruct::Struct: return (IStruct *)this; - case IUnion::Union: return (IUnion *)this; - case IException::Exception: return (IException *)this; - case IInterface::Interface: return (IInterface *)this; - case INamespace::Namespace: return (INamespace *)this; - case IFile::File: return (IFile *)this; - case IGroup::Group: return (IGroup *)this; - case IPage::Page: return (IPage *)this; - default: return 0; - } - return 0; -} - -void CompoundHandler::release() -{ - debug(2,"CompoundHandler::release() %d->%d\n",m_refCount,m_refCount-1); - if (--m_refCount<=0) - { - m_mainHandler->unloadCompound(this); - delete this; - } -} - -ISectionIterator *CompoundHandler::sections() const -{ - return new SectionIterator(m_sections); -} - -IMemberIterator *CompoundHandler::memberByName(const char *name) const -{ - QList *ml = m_memberNameDict[name]; - if (ml==0) return 0; - return new MemberIterator(*ml); -} - -void CompoundHandler::startInheritanceGraph(const QXmlAttributes &attrib) -{ - m_inheritanceGraph = new GraphHandler(this,"inheritancegraph"); - m_inheritanceGraph->startGraph(attrib); -} - -void CompoundHandler::startCollaborationGraph(const QXmlAttributes &attrib) -{ - m_collaborationGraph = new GraphHandler(this,"collaborationgraph"); - m_collaborationGraph->startGraph(attrib); -} - -void CompoundHandler::startIncludeDependencyGraph(const QXmlAttributes &attrib) -{ - m_includeDependencyGraph = new GraphHandler(this,"incdepgraph"); - m_includeDependencyGraph->startGraph(attrib); -} - -void CompoundHandler::startIncludedByDependencyGraph(const QXmlAttributes &attrib) -{ - m_includedByDependencyGraph = new GraphHandler(this,"invincdepgraph"); - m_includedByDependencyGraph->startGraph(attrib); -} - -IDocRoot *CompoundHandler::briefDescription() const -{ - return m_brief; -} - -IDocRoot *CompoundHandler::detailedDescription() const -{ - return m_detailed; -} - -IMember *CompoundHandler::memberById(const char *id) const -{ - return (IFunction*)m_memberDict[id]; -} - -IGraph *CompoundHandler::inheritanceGraph() const -{ - return m_inheritanceGraph; -} - -IGraph *CompoundHandler::collaborationGraph() const -{ - return m_collaborationGraph; -} - -IGraph *CompoundHandler::includeDependencyGraph() const -{ - return m_includeDependencyGraph; -} - -IGraph *CompoundHandler::includedByDependencyGraph() const -{ - return m_includedByDependencyGraph; -} - -IRelatedCompoundIterator *CompoundHandler::baseCompounds() const -{ - return new RelatedCompoundIterator(m_superClasses); -} - -IRelatedCompoundIterator *CompoundHandler::derivedCompounds() const -{ - return new RelatedCompoundIterator(m_subClasses); -} - -ICompoundIterator *CompoundHandler::nestedCompounds() const -{ - return new CompoundIdIterator(m_mainHandler,m_innerCompounds); -} - -IDocProgramListing *CompoundHandler::source() const -{ - return m_programListing; -} - -IIncludeIterator *CompoundHandler::includes() const -{ - return new IncludeIterator(m_includes); -} - -IIncludeIterator *CompoundHandler::includedBy() const -{ - return new IncludeIterator(m_includedBy); -} - -IParamIterator *CompoundHandler::templateParameters() const -{ - return m_templateParamList ? m_templateParamList->templateParams() : 0; -} - -const IDocTitle *CompoundHandler::title() const -{ - return m_titleHandler; -} - -IMemberReferenceIterator *CompoundHandler::members() const -{ - return m_members ? m_members->members() : 0; -} - - diff --git a/addon/doxmlparser/src/compoundhandler.h b/addon/doxmlparser/src/compoundhandler.h deleted file mode 100644 index ad8e2c8..0000000 --- a/addon/doxmlparser/src/compoundhandler.h +++ /dev/null @@ -1,236 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ -#ifndef _COMPOUNDHANDLER_H -#define _COMPOUNDHANDLER_H - -#include -#include -#include -#include - -#include "stringimpl.h" -#include "basehandler.h" -#include "baseiterator.h" - -class MainHandler; -class DocHandler; -class ProgramListingHandler; -class GraphHandler; -class MemberHandler; -class CompoundHandler; -class SectionHandler; -class ParamHandler; -class TemplateParamListHandler; -class TitleHandler; -class ListOfAllMembersHandler; - -class IncludeHandler : public IInclude, public BaseHandler -{ - public: - IncludeHandler(IBaseHandler *parent,const char *endtag); - virtual ~IncludeHandler(); - - void startInclude(const QXmlAttributes &attrib); - void endInclude(); - - // IInclude - virtual const IString * name() const - { return &m_name; } - virtual const IString * refId() const - { return &m_refId; } - virtual bool isLocal() const - { return &m_isLocal; } - - private: - IBaseHandler *m_parent; - StringImpl m_name; // element's content - StringImpl m_refId; // refid - bool m_isLocal; // local -}; - -class IncludeIterator : public BaseIterator -{ - public: - IncludeIterator(const QList &list) : - BaseIterator(list) {} -}; - - -class RelatedCompound : public IRelatedCompound -{ - public: - RelatedCompound(CompoundHandler *parent, - const QString &id, - Protection prot, - Kind kind - ) : - m_parent(parent), m_id(id), m_protection(prot), m_kind(kind) {} - virtual ~RelatedCompound() {} - void setName(const QString &str) { m_name = str; } - - virtual ICompound *compound() const; - virtual Protection protection() const { return m_protection; } - virtual Kind kind() const { return m_kind; } - virtual const IString *name() const { return &m_name; } - - private: - CompoundHandler *m_parent; - QString m_id; // refid - Protection m_protection; // prot - Kind m_kind; // virt - StringImpl m_name; // element's content -}; - -class RelatedCompoundIterator : public BaseIterator -{ - public: - RelatedCompoundIterator(const QList &list) : - BaseIterator(list) {} -}; - - -class CompoundHandler : public IClass, - public IStruct, - public IUnion, - public IException, - public IInterface, - public INamespace, - public IFile, - public IGroup, - public IPage, - public BaseHandler -{ - friend class RelatedCompound; - - public: - virtual void startSection(const QXmlAttributes& attrib); - virtual void startCompound(const QXmlAttributes& attrib); - virtual void startSuperClass(const QXmlAttributes& attrib); - virtual void endSuperClass(); - virtual void startSubClass(const QXmlAttributes& attrib); - virtual void endSubClass(); - virtual void endCompound(); - virtual void endCompoundName(); - virtual void startBriefDesc(const QXmlAttributes& attrib); - virtual void startDetailedDesc(const QXmlAttributes& attrib); - virtual void startLocation(const QXmlAttributes& attrib); - virtual void startProgramListing(const QXmlAttributes& attrib); - virtual void startInheritanceGraph(const QXmlAttributes& attrib); - virtual void startCollaborationGraph(const QXmlAttributes& attrib); - virtual void startIncludeDependencyGraph(const QXmlAttributes& attrib); - virtual void startIncludedByDependencyGraph(const QXmlAttributes& attrib); - virtual void startIncludes(const QXmlAttributes& attrib); - virtual void startIncludedBy(const QXmlAttributes& attrib); - virtual void startInnerDir(const QXmlAttributes& attrib); - virtual void startInnerClass(const QXmlAttributes& attrib); - virtual void startInnerNamespace(const QXmlAttributes& attrib); - virtual void startInnerFile(const QXmlAttributes& attrib); - virtual void startInnerGroup(const QXmlAttributes& attrib); - virtual void startInnerPage(const QXmlAttributes& attrib); - virtual void startTitle(const QXmlAttributes& attrib); - virtual void startTemplateParamList(const QXmlAttributes& attrib); - virtual void startListOfAllMembers(const QXmlAttributes& attrib); - virtual void addref() { m_refCount++; } - - CompoundHandler(const QString &dirName); - virtual ~CompoundHandler(); - bool parseXML(const char *compId); - void initialize(MainHandler *mh); - void insertMember(MemberHandler *mh); - ICompound *toICompound() const; - - // ICompound implementation - const IString *name() const { return &m_name; } - const IString *id() const { return &m_id; } - CompoundKind kind() const { return m_kind; } - const IString *kindString() const { return &m_kindString; } - ISectionIterator *sections() const; - IDocRoot *briefDescription() const; - IDocRoot *detailedDescription() const; - IMember *memberById(const char *id) const; - IMemberIterator *memberByName(const char *name) const; - IParamIterator *templateParameters() const; - void release(); - - // IClass implementation - IGraph *inheritanceGraph() const; - IGraph *collaborationGraph() const; - IRelatedCompoundIterator *baseCompounds() const; - IRelatedCompoundIterator *derivedCompounds() const; - ICompoundIterator *nestedCompounds() const; - ICompoundIterator *nestedGroup() const; - const IString *locationFile() const { return &m_defFile; } - int locationLine() const { return m_defLine; } - const IString *locationBodyFile() const { return &m_defBodyFile; } - int locationBodyStartLine() const { return m_defBodyStart; } - int locationBodyEndLine() const { return m_defBodyEnd; } - IMemberReferenceIterator *members() const; - - // IFile implementation - IGraph *includeDependencyGraph() const; - IGraph *includedByDependencyGraph() const; - IDocProgramListing *source() const; - IIncludeIterator *includes() const; - IIncludeIterator *includedBy() const; - - // IPage implementation - const IDocTitle *title() const; - - private: - // XML elements: - // ------------- - StringImpl m_name; // compoundname - TitleHandler* m_titleHandler; // title - QList m_subClasses; // basecompoundref - QList m_superClasses; // derivedcompoundref - QList m_includes; // includes - QList m_includedBy; // includedBy - GraphHandler* m_includeDependencyGraph; // incdepgraph - GraphHandler* m_includedByDependencyGraph; // invincdepgraph - QList m_innerCompounds; // innerdir/innerfile/innerclass/innernamespace/innergroup - TemplateParamListHandler* m_templateParamList; // templateparamlist - QList m_sections; // sectiondef - DocHandler* m_brief; // briefdescription - DocHandler* m_detailed; // detaileddescription - GraphHandler* m_inheritanceGraph; // inheritancegraph - GraphHandler* m_collaborationGraph; // collaborationgraph - ProgramListingHandler* m_programListing; // programlisting - // location - StringImpl m_defFile; // - file - int m_defLine; // - line - StringImpl m_defBodyFile; // - bodyfile - int m_defBodyStart; // - bodystart - int m_defBodyEnd; // - bodyend - ListOfAllMembersHandler* m_members; // listofallmember - - // XML attributes: - // --------------- - StringImpl m_id; // id - CompoundKind m_kind; // kind - StringImpl m_kindString; // kind as a string - StringImpl m_protection; // prot - - // local variables - QString m_xmlDir; // directory where the info is found - int m_refCount; // object reference counter - QDict m_memberDict; // id->member lookup - QDict > m_memberNameDict; // name->memberlist lookup - MainHandler* m_mainHandler; // parent object -}; - -void compoundhandler_init(); -void compoundhandler_exit(); - -#endif diff --git a/addon/doxmlparser/src/debug.cpp b/addon/doxmlparser/src/debug.cpp deleted file mode 100644 index a8be32c..0000000 --- a/addon/doxmlparser/src/debug.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include -#include - -#include "debug.h" - -static int s_debugLevel = 0; - -void debug(int level,const char *msg,...) -{ - if (level<=s_debugLevel) - { - va_list args; - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); - } -} - -void setDebugLevel(int level) -{ - s_debugLevel = level; -} - diff --git a/addon/doxmlparser/src/debug.h b/addon/doxmlparser/src/debug.h deleted file mode 100644 index c77f7fe..0000000 --- a/addon/doxmlparser/src/debug.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _DEBUG_H -#define _DEBUG_H - -void debug(int level,const char *msg,...); -void setDebugLevel(int level); - -#endif diff --git a/addon/doxmlparser/src/dochandler.cpp b/addon/doxmlparser/src/dochandler.cpp deleted file mode 100644 index ba562ef..0000000 --- a/addon/doxmlparser/src/dochandler.cpp +++ /dev/null @@ -1,2241 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include - -#include "dochandler.h" -#include "debug.h" -#include "linkedtexthandler.h" - - -//---------------------------------------------------------------------- - -class TypeNameMapper -{ - public: - TypeNameMapper() - { - m_map.insert("see", SimpleSectHandler::See); - m_map.insert("return", SimpleSectHandler::Return); - m_map.insert("author", SimpleSectHandler::Author); - m_map.insert("version", SimpleSectHandler::Version); - m_map.insert("since", SimpleSectHandler::Since); - m_map.insert("date", SimpleSectHandler::Date); - m_map.insert("bug", SimpleSectHandler::Bug); - m_map.insert("note", SimpleSectHandler::Note); - m_map.insert("warning", SimpleSectHandler::Warning); - m_map.insert("par", SimpleSectHandler::Par); - m_map.insert("deprecated",SimpleSectHandler::Deprecated); - m_map.insert("pre", SimpleSectHandler::Pre); - m_map.insert("post", SimpleSectHandler::Post); - m_map.insert("invariant", SimpleSectHandler::Invar); - m_map.insert("remark", SimpleSectHandler::Remark); - m_map.insert("attention", SimpleSectHandler::Attention); - m_map.insert("todo", SimpleSectHandler::Todo); - m_map.insert("test", SimpleSectHandler::Test); - m_map.insert("rcs", SimpleSectHandler::RCS); - m_map.insert("enumvalues",SimpleSectHandler::EnumValues); - m_map.insert("examples", SimpleSectHandler::Examples); - } - SimpleSectHandler::Types stringToType(const QString &typeStr) - { - return m_map[typeStr]; - } - private: - QMap m_map; -}; - -class HighlightMapper -{ - public: - HighlightMapper() - { - m_map.insert("comment", HighlightHandler::Comment); - m_map.insert("keyword", HighlightHandler::Keyword); - m_map.insert("keywordtype", HighlightHandler::KeywordType); - m_map.insert("keywordflow", HighlightHandler::KeywordFlow); - m_map.insert("charliteral", HighlightHandler::CharLiteral); - m_map.insert("stringliteral", HighlightHandler::StringLiteral); - m_map.insert("preprocessor", HighlightHandler::Preprocessor); - } - HighlightHandler::HighlightKind stringToKind(const QString &kindStr) - { - return m_map[kindStr]; - } - private: - QMap m_map; -}; - -static TypeNameMapper *s_typeMapper; -static HighlightMapper *s_highlightMapper; - -void dochandler_init() -{ - s_typeMapper = new TypeNameMapper; - s_highlightMapper = new HighlightMapper; -} - -void dochandler_exit() -{ - delete s_typeMapper; - delete s_highlightMapper; -} - -//---------------------------------------------------------------------- -// MarkupHandler -//---------------------------------------------------------------------- - -MarkupHandler::MarkupHandler(QList &children,QString &curString) - : m_children(children), m_curString(curString), - m_curMarkup(IDocMarkup::Normal), m_headingLevel(0) -{ - addStartHandler("bold",this,&MarkupHandler::startBold); - addEndHandler("bold",this,&MarkupHandler::endBold); - - addStartHandler("emphasis",this,&MarkupHandler::startEmphasis); - addEndHandler("emphasis",this,&MarkupHandler::endEmphasis); - - addStartHandler("computeroutput",this,&MarkupHandler::startComputerOutput); - addEndHandler("computeroutput",this,&MarkupHandler::endComputerOutput); - - addStartHandler("center",this,&MarkupHandler::startCenter); - addEndHandler("center",this,&MarkupHandler::endCenter); - - addStartHandler("small",this,&MarkupHandler::startSmallFont); - addEndHandler("small",this,&MarkupHandler::endSmallFont); - - addStartHandler("subscript",this,&MarkupHandler::startSubscript); - addEndHandler("subscript",this,&MarkupHandler::endSubscript); - - addStartHandler("superscript",this,&MarkupHandler::startSuperscript); - addEndHandler("superscript",this,&MarkupHandler::endSuperscript); - - addStartHandler("preformatted",this,&MarkupHandler::startPreformatted); - addEndHandler("preformatted",this,&MarkupHandler::endPreformatted); - - addStartHandler("heading1",this,&MarkupHandler::startHeading1); - addEndHandler("heading1",this,&MarkupHandler::endHeading1); - - addStartHandler("heading2",this,&MarkupHandler::startHeading2); - addEndHandler("heading2",this,&MarkupHandler::endHeading2); - - addStartHandler("heading3",this,&MarkupHandler::startHeading3); - addEndHandler("heading3",this,&MarkupHandler::endHeading3); - - addStartHandler("heading4",this,&MarkupHandler::startHeading4); - addEndHandler("heading4",this,&MarkupHandler::endHeading4); - - addStartHandler("heading5",this,&MarkupHandler::startHeading5); - addEndHandler("heading5",this,&MarkupHandler::endHeading5); - - addStartHandler("heading6",this,&MarkupHandler::startHeading6); - addEndHandler("heading6",this,&MarkupHandler::endHeading6); -} - -MarkupHandler::~MarkupHandler() -{ -} - -void MarkupHandler::addTextNode() -{ - if (!m_curString.isEmpty()) - { - m_children.append(new TextNode(m_curString,m_curMarkup,m_headingLevel)); - debug(2,"addTextNode() text=%s markup=%x\n",m_curString.data(),m_curMarkup); - m_curString=""; - } -} - -void MarkupHandler::startBold(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Bold,TRUE)); - m_curMarkup |= IDocMarkup::Bold; -} - -void MarkupHandler::endBold() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Bold,FALSE)); - m_curMarkup &= ~IDocMarkup::Bold; -} - -void MarkupHandler::startEmphasis(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Emphasis,TRUE)); - m_curMarkup |= IDocMarkup::Emphasis; -} - -void MarkupHandler::endEmphasis() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Emphasis,FALSE)); - m_curMarkup &= ~IDocMarkup::Emphasis; -} - -void MarkupHandler::startComputerOutput(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::ComputerOutput,TRUE)); - m_curMarkup |= IDocMarkup::ComputerOutput; -} - -void MarkupHandler::endComputerOutput() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::ComputerOutput,FALSE)); - m_curMarkup &= ~IDocMarkup::ComputerOutput; -} - -void MarkupHandler::startCenter(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Center,TRUE)); - m_curMarkup |= IDocMarkup::Center; -} - -void MarkupHandler::endCenter() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Center,FALSE)); - m_curMarkup &= ~IDocMarkup::Center; -} - -void MarkupHandler::startSmallFont(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::SmallFont,TRUE)); - m_curMarkup |= IDocMarkup::SmallFont; -} - -void MarkupHandler::endSmallFont() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::SmallFont,FALSE)); - m_curMarkup &= ~IDocMarkup::SmallFont; -} - -void MarkupHandler::startSubscript(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Subscript,TRUE)); - m_curMarkup |= IDocMarkup::Subscript; -} - -void MarkupHandler::endSubscript() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Subscript,FALSE)); - m_curMarkup &= ~IDocMarkup::Subscript; -} - -void MarkupHandler::startSuperscript(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Superscript,TRUE)); - m_curMarkup |= IDocMarkup::Superscript; -} - -void MarkupHandler::endSuperscript() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Superscript,FALSE)); - m_curMarkup &= ~IDocMarkup::Superscript; -} - -void MarkupHandler::startPreformatted(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Preformatted,TRUE)); - m_curMarkup |= IDocMarkup::Preformatted; -} - -void MarkupHandler::endPreformatted() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Preformatted,FALSE)); - m_curMarkup &= ~IDocMarkup::Preformatted; -} - -void MarkupHandler::startHeading1(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,1)); - m_curMarkup |= IDocMarkup::Heading; - m_headingLevel=1; -} - -void MarkupHandler::endHeading1() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,1)); - m_curMarkup &= ~IDocMarkup::Heading; - m_headingLevel=0; -} - -void MarkupHandler::startHeading2(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,2)); - m_curMarkup |= IDocMarkup::Heading; - m_headingLevel=2; -} - -void MarkupHandler::endHeading2() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,2)); - m_curMarkup &= ~IDocMarkup::Heading; - m_headingLevel=0; -} - -void MarkupHandler::startHeading3(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,3)); - m_curMarkup |= IDocMarkup::Heading; - m_headingLevel=3; -} - -void MarkupHandler::endHeading3() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,3)); - m_curMarkup &= ~IDocMarkup::Heading; - m_headingLevel=0; -} - -void MarkupHandler::startHeading4(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,4)); - m_curMarkup |= IDocMarkup::Heading; - m_headingLevel=4; -} - -void MarkupHandler::endHeading4() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,4)); - m_curMarkup &= ~IDocMarkup::Heading; - m_headingLevel=0; -} - -void MarkupHandler::startHeading5(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,5)); - m_curMarkup |= IDocMarkup::Heading; - m_headingLevel=5; -} - -void MarkupHandler::endHeading5() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,5)); - m_curMarkup &= ~IDocMarkup::Heading; - m_headingLevel=0; -} - -void MarkupHandler::startHeading6(const QXmlAttributes & /*attrib*/) -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,6)); - m_curMarkup |= IDocMarkup::Heading; - m_headingLevel=6; -} - -void MarkupHandler::endHeading6() -{ - addTextNode(); - m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,6)); - m_curMarkup &= ~IDocMarkup::Heading; - m_headingLevel=0; -} - - -//---------------------------------------------------------------------- -// ListItemHandler -//---------------------------------------------------------------------- - -ListItemHandler::ListItemHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - - addEndHandler("listitem",this,&ListItemHandler::endListItem); - - addStartHandler("para",this,&ListItemHandler::startParagraph); -} - -ListItemHandler::~ListItemHandler() -{ -} - -void ListItemHandler::startListItem(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"start list item handler\n"); -} - -void ListItemHandler::endListItem() -{ - debug(2,"end list item handler\n"); - m_parent->setDelegate(0); -} - -void ListItemHandler::startParagraph(const QXmlAttributes& attrib) -{ - ParagraphHandler *parHandler = new ParagraphHandler(this); - parHandler->startParagraph(attrib); - m_children.append(parHandler); -} - -IDocIterator *ListItemHandler::contents() const -{ - return new ListItemIterator(*this); -} - -//---------------------------------------------------------------------- -// OrderedListHandler -//---------------------------------------------------------------------- - -OrderedListHandler::OrderedListHandler(IBaseHandler *parent) : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - addEndHandler("orderedlist",this,&OrderedListHandler::endOrderedList); - addStartHandler("listitem",this,&OrderedListHandler::startOrderedListItem); -} - -OrderedListHandler::~OrderedListHandler() -{ -} - -void OrderedListHandler::startOrderedList(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); -} - -void OrderedListHandler::endOrderedList() -{ - m_parent->setDelegate(0); -} - -void OrderedListHandler::startOrderedListItem(const QXmlAttributes& attrib) -{ - ListItemHandler *liHandler = new ListItemHandler(this); - liHandler->startListItem(attrib); - m_children.append(liHandler); -} - -IDocIterator *OrderedListHandler::elements() const -{ - return new OrderedListIterator(*this); -} - -//---------------------------------------------------------------------- -// ItemizedListHandler -//---------------------------------------------------------------------- - -ItemizedListHandler::ItemizedListHandler(IBaseHandler *parent) : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - addEndHandler("itemizedlist",this,&ItemizedListHandler::endItemizedList); - addStartHandler("listitem",this,&ItemizedListHandler::startItemizedListItem); -} - -ItemizedListHandler::~ItemizedListHandler() -{ -} - -void ItemizedListHandler::startItemizedList(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); -} - -void ItemizedListHandler::endItemizedList() -{ - m_parent->setDelegate(0); -} - -void ItemizedListHandler::startItemizedListItem(const QXmlAttributes& attrib) -{ - ListItemHandler *liHandler = new ListItemHandler(this); - liHandler->startListItem(attrib); - m_children.append(liHandler); -} - -IDocIterator *ItemizedListHandler::elements() const -{ - return new ItemizedListIterator(*this); -} - -//---------------------------------------------------------------------- -// TocListHandler -//---------------------------------------------------------------------- - -TocListHandler::TocListHandler(IBaseHandler *parent) : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - addEndHandler("toclist",this,&TocListHandler::endTocList); - addStartHandler("tocitem",this,&TocListHandler::startTocItem); -} - -TocListHandler::~TocListHandler() -{ -} - -void TocListHandler::startTocList(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); -} - -void TocListHandler::endTocList() -{ - m_parent->setDelegate(0); -} - -void TocListHandler::startTocItem(const QXmlAttributes& attrib) -{ - TocItemHandler *tiHandler = new TocItemHandler(this); - tiHandler->startTocItem(attrib); - m_children.append(tiHandler); -} - -IDocIterator *TocListHandler::elements() const -{ - return new TocListIterator(*this); -} - -//---------------------------------------------------------------------- -// TocItemHandler -//---------------------------------------------------------------------- - -TocItemHandler::TocItemHandler(IBaseHandler *parent) : m_parent(parent) -{ - addEndHandler("tocitem",this,&TocItemHandler::endTocItem); -} - -TocItemHandler::~TocItemHandler() -{ -} - -void TocItemHandler::startTocItem(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - m_id = attrib.value("id"); - m_curString=""; -} - -void TocItemHandler::endTocItem() -{ - m_title = m_curString; - m_parent->setDelegate(0); -} - -//---------------------------------------------------------------------- -// ParameterHandler -//---------------------------------------------------------------------- - -ParameterHandler::ParameterHandler(IBaseHandler *parent) : - m_parent(parent) -{ - addEndHandler("parametername",this,&ParameterHandler::endParameterName); -} - -ParameterHandler::~ParameterHandler() -{ -} - -void ParameterHandler::startParameterName(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); -} - -void ParameterHandler::endParameterName() -{ - m_name = m_curString; - debug(2,"parameter %s\n",m_name.data()); - m_curString=""; - m_parent->setDelegate(0); -} - -//---------------------------------------------------------------------- -// ParameterListHandler -//---------------------------------------------------------------------- - -ParameterItemHandler::ParameterItemHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("parameteritem",this,&ParameterItemHandler::endParameterItem); - addStartHandler("parameternamelist"); - addEndHandler("parameternamelist"); - addStartHandler("parametername",this,&ParameterItemHandler::startParameterName); - addStartHandler("parameterdescription"); - addEndHandler("parameterdescription"); - addStartHandler("para",this,&ParameterItemHandler::startParagraph); - m_parameters.setAutoDelete(TRUE); - m_description = 0; -} - -ParameterItemHandler::~ParameterItemHandler() -{ - delete m_description; -} - -void ParameterItemHandler::startParameterItem(const QXmlAttributes&) -{ - m_parent->setDelegate(this); -} - -void ParameterItemHandler::endParameterItem() -{ - m_parent->setDelegate(0); -} - -void ParameterItemHandler::startParameterName(const QXmlAttributes& attrib) -{ - ParameterHandler *param = new ParameterHandler(this); - m_parameters.append(param); - param->startParameterName(attrib); -} - -void ParameterItemHandler::startParagraph(const QXmlAttributes& attrib) -{ - m_description = new ParagraphHandler(this); - m_description->startParagraph(attrib); -} - -IDocIterator *ParameterItemHandler::paramNames() const -{ - return new ParameterItemIterator(*this); -} - -//---------------------------------------------------------------------- -// ParameterListHandler -//---------------------------------------------------------------------- - -ParameterListHandler::ParameterListHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("parameterlist",this,&ParameterListHandler::endParameterList); - addStartHandler("parameteritem",this,&ParameterListHandler::startParameterItem); - m_paramItems.setAutoDelete(TRUE); -} - -ParameterListHandler::~ParameterListHandler() -{ -} - -void ParameterListHandler::startParameterList(const QXmlAttributes& attrib) -{ - QString kind = attrib.value("kind"); - if (kind=="retval") m_type=RetVal; - else if (kind=="exception") m_type=Exception; - else if (kind=="param") m_type=Param; - else - { - debug(1,"Error: invalid parameterlist type: %s\n",kind.data()); - } - debug(2,"parameterlist kind=%s\n",kind.data()); - m_parent->setDelegate(this); -} - -void ParameterListHandler::endParameterList() -{ - m_parent->setDelegate(0); -} - -void ParameterListHandler::startParameterItem(const QXmlAttributes& attrib) -{ - ParameterItemHandler *paramItem = new ParameterItemHandler(this); - m_paramItems.append(paramItem); - paramItem->startParameterItem(attrib); -} - -IDocIterator *ParameterListHandler::params() const -{ - return new ParameterListIterator(*this); -} - -//---------------------------------------------------------------------- -// LinkHandler -//---------------------------------------------------------------------- - -LinkHandler::LinkHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("link",this,&LinkHandler::endLink); -} - -LinkHandler::~LinkHandler() -{ -} - -void LinkHandler::startLink(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - debug(2,"Start link\n"); - m_ref = attrib.value("linkend"); - m_curString=""; -} - -void LinkHandler::endLink() -{ - m_text = m_curString; - m_curString=""; - m_parent->setDelegate(0); - debug(2,"End link\n"); -} - -//---------------------------------------------------------------------- -// EMailHandler -//---------------------------------------------------------------------- - -EMailHandler::EMailHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("email",this,&EMailHandler::endEMail); -} - -EMailHandler::~EMailHandler() -{ -} - -void EMailHandler::startEMail(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"Start email\n"); - m_curString=""; -} - -void EMailHandler::endEMail() -{ - m_address = m_curString; - m_curString=""; - m_parent->setDelegate(0); - debug(2,"End email\n"); -} - -//---------------------------------------------------------------------- -// ULinkHandler -//---------------------------------------------------------------------- - -ULinkHandler::ULinkHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("ulink",this,&ULinkHandler::endULink); -} - -ULinkHandler::~ULinkHandler() -{ -} - -void ULinkHandler::startULink(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - debug(2,"Start ulink\n"); - m_url = attrib.value("url"); - m_curString=""; -} - -void ULinkHandler::endULink() -{ - m_text = m_curString; - m_curString=""; - m_parent->setDelegate(0); - debug(2,"End ulink\n"); -} - -//---------------------------------------------------------------------- -// LineBreakHandler -//---------------------------------------------------------------------- - -LineBreakHandler::LineBreakHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("linebreak",this,&LineBreakHandler::endLineBreak); -} - -LineBreakHandler::~LineBreakHandler() -{ -} - -void LineBreakHandler::startLineBreak(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"Start linebreak\n"); -} - -void LineBreakHandler::endLineBreak() -{ - m_parent->setDelegate(0); - debug(2,"End linebreak\n"); -} - -//---------------------------------------------------------------------- -// HRulerHandler -//---------------------------------------------------------------------- - -HRulerHandler::HRulerHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("hruler",this,&HRulerHandler::endHRuler); -} - -HRulerHandler::~HRulerHandler() -{ -} - -void HRulerHandler::startHRuler(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"Start hruler\n"); -} - -void HRulerHandler::endHRuler() -{ - m_parent->setDelegate(0); - debug(2,"End hruler\n"); -} - -//---------------------------------------------------------------------- -// RefHandler -//---------------------------------------------------------------------- - -RefHandler::RefHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("ref",this,&RefHandler::endRef); -} - -RefHandler::~RefHandler() -{ -} - -void RefHandler::startRef(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - m_refId = attrib.value("refid"); - m_extId = attrib.value("external"); - ASSERT(attrib.value("kindref")=="compound" || - attrib.value("kindref")=="member"); - m_targetKind = attrib.value("kindref")=="compound" ? Compound : Member; - debug(2,"Start ref refId=%s\n",m_refId.data()); - m_curString=""; -} - -void RefHandler::endRef() -{ - m_linkText = m_curString; - m_parent->setDelegate(0); - debug(2,"End ref: text=`%s'\n",m_linkText.data()); -} - - -//---------------------------------------------------------------------- -// TitleHandler -//---------------------------------------------------------------------- - -TitleHandler::TitleHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - m_markupHandler = new MarkupHandler(m_children,m_curString); - setFallBackHandler(m_markupHandler); - addStartHandler("ref",this,&TitleHandler::startRef); - addEndHandler("title",this,&TitleHandler::endTitle); -} - -TitleHandler::~TitleHandler() -{ - delete m_markupHandler; -} - -void TitleHandler::startTitle(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"Start title\n"); - m_curString=""; -} - -void TitleHandler::endTitle() -{ - addTextNode(); - m_parent->setDelegate(0); - debug(2,"End title\n"); -} - -void TitleHandler::addTextNode() -{ - if (!m_curString.isEmpty()) - { - m_children.append( - new TextNode( - m_curString, - m_markupHandler->markup(), - m_markupHandler->headingLevel() - ) - ); - debug(2,"addTextNode() text=\"%s\" markup=%x headingLevel=%d\n", - m_curString.data(),m_markupHandler->markup(),m_markupHandler->headingLevel()); - m_curString=""; - } -} - -void TitleHandler::startRef(const QXmlAttributes& attrib) -{ - RefHandler *ref = new RefHandler(this); - ref->startRef(attrib); - m_children.append(ref); -} - -IDocIterator *TitleHandler::title() const -{ - return new TitleIterator(*this); -} - -//---------------------------------------------------------------------- -// SimpleSectHandler -//---------------------------------------------------------------------- - -SimpleSectHandler::SimpleSectHandler(IBaseHandler *parent) - : m_parent(parent), m_paragraph(0), m_title(0) -{ - addStartHandler("title",this,&SimpleSectHandler::startTitle); - addStartHandler("para",this,&SimpleSectHandler::startParagraph); - addEndHandler("simplesect",this,&SimpleSectHandler::endSimpleSect); -} - -SimpleSectHandler::~SimpleSectHandler() -{ -} - -void SimpleSectHandler::startSimpleSect(const QXmlAttributes& attrib) -{ - m_typeString = attrib.value("kind"); - m_type = s_typeMapper->stringToType(m_typeString); - debug(2,"start simple section %s\n",m_typeString.data()); - m_parent->setDelegate(this); -} - -void SimpleSectHandler::endSimpleSect() -{ - debug(2,"end simple section\n"); - m_parent->setDelegate(0); -} - -void SimpleSectHandler::startTitle(const QXmlAttributes& attrib) -{ - ASSERT(m_title==0); - m_title = new TitleHandler(this); - m_title->startTitle(attrib); -} - -void SimpleSectHandler::startParagraph(const QXmlAttributes& attrib) -{ - ASSERT(m_paragraph==0); - m_paragraph = new ParagraphHandler(this); - m_paragraph->startParagraph(attrib); -} - -//---------------------------------------------------------------------- -// VariableListEntryHandler -//---------------------------------------------------------------------- - -VariableListEntryHandler::VariableListEntryHandler(IBaseHandler *parent) - : m_parent(parent), m_description(0), m_linkedTextHandler(0) -{ - addStartHandler("term",this,&VariableListEntryHandler::startTerm); - addEndHandler("term",this,&VariableListEntryHandler::endTerm); - addStartHandler("para",this,&VariableListEntryHandler::startParagraph); - addEndHandler("varlistentry",this,&VariableListEntryHandler::endVarListEntry); - addEndHandler("listitem",this,&VariableListEntryHandler::endListItem); -} - -VariableListEntryHandler::~VariableListEntryHandler() -{ - delete m_description; -} - -void VariableListEntryHandler::startVarListEntry(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"start varlistentry\n"); -} - -void VariableListEntryHandler::endVarListEntry() -{ - m_parent->setDelegate(0); - debug(2,"end varlistentry\n"); -} - -void VariableListEntryHandler::startListItem(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"start listitem\n"); -} - -void VariableListEntryHandler::endListItem() -{ - m_parent->setDelegate(0); - debug(2,"end listitem\n"); -} - -void VariableListEntryHandler::startTerm(const QXmlAttributes& /*attrib*/) -{ - m_curString=""; - m_linkedTextHandler = new LinkedTextHandler(this,m_term); - m_linkedTextHandler->start("term"); -} - -void VariableListEntryHandler::endTerm() -{ - delete m_linkedTextHandler; -} - -void VariableListEntryHandler::startParagraph(const QXmlAttributes& attrib) -{ - ASSERT(m_description==0); - m_description = new ParagraphHandler(this); - m_description->startParagraph(attrib); -} - -ILinkedTextIterator *VariableListEntryHandler::term() const -{ - return new LinkedTextIterator(m_term); -} - - -//---------------------------------------------------------------------- -// VariableListHandler -//---------------------------------------------------------------------- - -VariableListHandler::VariableListHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_entries.setAutoDelete(TRUE); - addStartHandler("varlistentry",this,&VariableListHandler::startVarListEntry); - addStartHandler("listitem",this,&VariableListHandler::startListItem); - addEndHandler("variablelist",this,&VariableListHandler::endVariableList); -} - -VariableListHandler::~VariableListHandler() -{ -} - -void VariableListHandler::startVariableList(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"start variablelist\n"); -} - -void VariableListHandler::endVariableList() -{ - debug(2,"end variablelist\n"); - m_parent->setDelegate(0); -} - -void VariableListHandler::startVarListEntry(const QXmlAttributes& attrib) -{ - VariableListEntryHandler *vle = new VariableListEntryHandler(this); - vle->startVarListEntry(attrib); - m_curEntry = vle; - m_entries.append(vle); -} - -void VariableListHandler::startListItem(const QXmlAttributes& attrib) -{ - ASSERT(m_curEntry!=0); - m_curEntry->startListItem(attrib); -} - -IDocIterator *VariableListHandler::entries() const -{ - return new VariableListIterator(*this); -} - -//---------------------------------------------------------------------- -// HighlightHandler -//---------------------------------------------------------------------- - -HighlightHandler::HighlightHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - addEndHandler("highlight",this,&HighlightHandler::endHighlight); - addStartHandler("ref",this,&HighlightHandler::startRef); - addStartHandler("sp",this,&HighlightHandler::startSpace); - m_hl = IDocHighlight::Invalid; -} - -HighlightHandler::~HighlightHandler() -{ -} - -void HighlightHandler::startHighlight(const QXmlAttributes& attrib) -{ - m_hlString = attrib.value("class"); - m_hl = s_highlightMapper->stringToKind(m_hlString); - m_curString=""; - m_parent->setDelegate(this); - debug(2,"start highlight\n"); -} - -void HighlightHandler::endHighlight() -{ - addTextNode(); - debug(2,"end highlight class=`%s'\n",m_hlString.data()); - m_parent->setDelegate(0); -} - -void HighlightHandler::startRef(const QXmlAttributes& attrib) -{ - addTextNode(); - RefHandler *rh = new RefHandler(this); - m_children.append(rh); - rh->startRef(attrib); -} - -void HighlightHandler::startSpace(const QXmlAttributes&) -{ - m_curString=" "; - addTextNode(); -} - -void HighlightHandler::addTextNode() -{ - printf("m_curString=`%s'\n",m_curString.data()); - if (!m_curString.isEmpty()) - { - m_children.append(new TextNode(m_curString,IDocMarkup::Normal,0)); - debug(2,"addTextNode() text=\"%s\"\n", - m_curString.data()); - m_curString=""; - } -} - -IDocIterator *HighlightHandler::codeElements() const -{ - return new HighlightIterator(*this); -} - -//---------------------------------------------------------------------- -// CodeLineHandler -//---------------------------------------------------------------------- - -CodeLineHandler::CodeLineHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - addEndHandler("codeline",this,&CodeLineHandler::endCodeLine); - addEndHandler("linenumber",this,&CodeLineHandler::endLineNumber); - addStartHandler("highlight",this,&CodeLineHandler::startHighlight); - addStartHandler("ref",this,&CodeLineHandler::startRef); - m_lineNumber = 0; -} - -CodeLineHandler::~CodeLineHandler() -{ -} - -void CodeLineHandler::startCodeLine(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"start codeline\n"); -} - -void CodeLineHandler::endCodeLine() -{ - addTextNode(); - debug(2,"end codeline\n"); - m_parent->setDelegate(0); -} - -void CodeLineHandler::startLineNumber(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - debug(2,"start linenumber\n"); - m_lineNumber = attrib.value("line").toInt(); - m_refId = attrib.value("refid"); -} - -void CodeLineHandler::endLineNumber() -{ - m_parent->setDelegate(0); -} - -void CodeLineHandler::startHighlight(const QXmlAttributes& attrib) -{ - addTextNode(); - HighlightHandler *hlh = new HighlightHandler(this); - m_children.append(hlh); - hlh->startHighlight(attrib); -} - -void CodeLineHandler::startRef(const QXmlAttributes& attrib) -{ - addTextNode(); - RefHandler *rh = new RefHandler(this); - m_children.append(rh); - rh->startRef(attrib); -} - -void CodeLineHandler::addTextNode() -{ - if (!m_curString.isEmpty()) - { - m_children.append(new TextNode(m_curString,IDocMarkup::Normal,0)); - debug(2,"addTextNode() text=\"%s\"\n", - m_curString.data()); - m_curString=""; - } -} - -IDocIterator *CodeLineHandler::codeElements() const -{ - return new CodeLineIterator(*this); -} - - -//---------------------------------------------------------------------- -// ProgramListingHandler -//---------------------------------------------------------------------- - -ProgramListingHandler::ProgramListingHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - m_hasLineNumber=FALSE; - addEndHandler("programlisting",this,&ProgramListingHandler::endProgramListing); - - addStartHandler("linenumber",this,&ProgramListingHandler::startLineNumber); - addStartHandler("codeline",this,&ProgramListingHandler::startCodeLine); -} - -ProgramListingHandler::~ProgramListingHandler() -{ -} - -void ProgramListingHandler::startProgramListing(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"start programlisting\n"); -} - -void ProgramListingHandler::endProgramListing() -{ - debug(2,"end programlisting\n"); - m_parent->setDelegate(0); -} - -void ProgramListingHandler::startLineNumber(const QXmlAttributes& attrib) -{ - CodeLineHandler *clh = new CodeLineHandler(this); - m_children.append(clh); - m_hasLineNumber=TRUE; - clh->startLineNumber(attrib); -} - -void ProgramListingHandler::startCodeLine(const QXmlAttributes& attrib) -{ - CodeLineHandler *clh = 0; - if (!m_hasLineNumber) - { - clh = new CodeLineHandler(this); - m_children.append(clh); - } - else - { - clh = m_children.getLast(); - } - ASSERT(clh!=0); - clh->startCodeLine(attrib); - m_hasLineNumber=FALSE; -} - -IDocIterator *ProgramListingHandler::codeLines() const -{ - return new ProgramListingIterator(*this); -} - - - -//---------------------------------------------------------------------- -// FormulaHandler -//---------------------------------------------------------------------- - -FormulaHandler::FormulaHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("formula",this,&FormulaHandler::endFormula); -} - -FormulaHandler::~FormulaHandler() -{ -} - -void FormulaHandler::startFormula(const QXmlAttributes& attrib) -{ - m_id = attrib.value("id"); - m_curString=""; - m_parent->setDelegate(this); -} - -void FormulaHandler::endFormula() -{ - m_text = m_curString; - debug(2,"formula id=`%s' text=`%s'\n",m_id.data(),m_text.data()); - m_parent->setDelegate(0); -} - -//---------------------------------------------------------------------- -// AnchorHandler -//---------------------------------------------------------------------- - -AnchorHandler::AnchorHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("anchor",this,&AnchorHandler::endAnchor); -} - -AnchorHandler::~AnchorHandler() -{ -} - -void AnchorHandler::startAnchor(const QXmlAttributes& attrib) -{ - m_id = attrib.value("id"); - m_parent->setDelegate(this); -} - -void AnchorHandler::endAnchor() -{ - debug(2,"anchor id=`%s'\n",m_id.data()); - m_parent->setDelegate(0); -} - -//---------------------------------------------------------------------- -// ImageHandler -//---------------------------------------------------------------------- - -ImageHandler::ImageHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("image",this,&ImageHandler::endImage); -} - -ImageHandler::~ImageHandler() -{ -} - -void ImageHandler::startImage(const QXmlAttributes& attrib) -{ - m_name = attrib.value("name"); - m_curString=""; - m_parent->setDelegate(this); -} - -void ImageHandler::endImage() -{ - m_caption = m_curString; - debug(2,"image name=`%s' caption=`%s'\n",m_name.data(),m_caption.data()); - m_parent->setDelegate(0); -} - -//---------------------------------------------------------------------- -// DotFileHandler -//---------------------------------------------------------------------- - -DotFileHandler::DotFileHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("dotfile",this,&DotFileHandler::endDotFile); -} - -DotFileHandler::~DotFileHandler() -{ -} - -void DotFileHandler::startDotFile(const QXmlAttributes& attrib) -{ - m_name = attrib.value("name"); - m_curString=""; - m_parent->setDelegate(this); -} - -void DotFileHandler::endDotFile() -{ - m_caption = m_curString; - debug(2,"image name=`%s' caption=`%s'\n",m_name.data(),m_caption.data()); - m_parent->setDelegate(0); -} - -//---------------------------------------------------------------------- -// IndexEntryHandler -//---------------------------------------------------------------------- - -IndexEntryHandler::IndexEntryHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("indexentry",this,&IndexEntryHandler::endIndexEntry); - addStartHandler("primaryie",this,&IndexEntryHandler::startPrimaryIE); - addEndHandler("primaryie",this,&IndexEntryHandler::endPrimaryIE); - addStartHandler("secondaryie",this,&IndexEntryHandler::startSecondaryIE); - addEndHandler("secondaryie",this,&IndexEntryHandler::endSecondaryIE); -} - -IndexEntryHandler::~IndexEntryHandler() -{ -} - -void IndexEntryHandler::startIndexEntry(const QXmlAttributes& /*attrib*/) -{ - debug(2,"start index entry\n"); - m_parent->setDelegate(this); -} - -void IndexEntryHandler::endIndexEntry() -{ - debug(2,"index entry primary=`%s' secondary=`%s'\n", - m_primary.data(),m_secondary.data()); - m_parent->setDelegate(0); -} - -void IndexEntryHandler::startPrimaryIE(const QXmlAttributes& /*attrib*/) -{ - m_curString=""; -} - -void IndexEntryHandler::endPrimaryIE() -{ - m_primary = m_curString; -} - -void IndexEntryHandler::startSecondaryIE(const QXmlAttributes& /*attrib*/) -{ - m_curString=""; -} - -void IndexEntryHandler::endSecondaryIE() -{ - m_secondary = m_curString; -} - -//---------------------------------------------------------------------- -// EntryHandler -//---------------------------------------------------------------------- - -EntryHandler::EntryHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - addEndHandler("entry",this,&EntryHandler::endEntry); - addStartHandler("para",this,&EntryHandler::startParagraph); -} - -EntryHandler::~EntryHandler() -{ -} - -void EntryHandler::startEntry(const QXmlAttributes&) -{ - m_parent->setDelegate(this); -} - -void EntryHandler::endEntry() -{ - m_parent->setDelegate(0); -} - -void EntryHandler::startParagraph(const QXmlAttributes& attrib) -{ - ParagraphHandler *ph = new ParagraphHandler(this); - ph->startParagraph(attrib); - m_children.append(ph); -} - -IDocIterator *EntryHandler::contents() const -{ - return new EntryIterator(*this); -} - -//---------------------------------------------------------------------- -// RowHandler -//---------------------------------------------------------------------- - -RowHandler::RowHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - addEndHandler("row",this,&RowHandler::endRow); - addStartHandler("entry",this,&RowHandler::startEntry); -} - -RowHandler::~RowHandler() -{ -} - -void RowHandler::startRow(const QXmlAttributes&) -{ - m_parent->setDelegate(this); -} - -void RowHandler::endRow() -{ - m_parent->setDelegate(0); -} - -void RowHandler::startEntry(const QXmlAttributes& attrib) -{ - EntryHandler *eh = new EntryHandler(this); - eh->startEntry(attrib); - m_children.append(eh); -} - -IDocIterator *RowHandler::entries() const -{ - return new RowIterator(*this); -} - -//---------------------------------------------------------------------- -// TableHandler -//---------------------------------------------------------------------- - -TableHandler::TableHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - addEndHandler("table",this,&TableHandler::endTable); - addStartHandler("row",this,&TableHandler::startRow); - addStartHandler("caption",this,&TableHandler::startCaption); - addEndHandler("caption",this,&TableHandler::endCaption); -} - -TableHandler::~TableHandler() -{ -} - -void TableHandler::startTable(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - m_numColumns = attrib.value("cols").toInt(); - debug(2,"table cols=%d\n",m_numColumns); -} - -void TableHandler::endTable() -{ - m_parent->setDelegate(0); -} - -void TableHandler::startRow(const QXmlAttributes& attrib) -{ - RowHandler *rh = new RowHandler(this); - rh->startRow(attrib); - m_children.append(rh); -} - -void TableHandler::startCaption(const QXmlAttributes& /*attrib*/) -{ - m_curString=""; -} - -void TableHandler::endCaption() -{ - m_caption = m_curString; -} - -IDocIterator *TableHandler::rows() const -{ - return new TableIterator(*this); -} - -//---------------------------------------------------------------------- -// CopyHandler -//---------------------------------------------------------------------- - -CopyHandler::CopyHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - - addEndHandler("copydoc",this,&CopyHandler::endCopy); - - addStartHandler("para",this,&CopyHandler::startParagraph); -} - -CopyHandler::~CopyHandler() -{ -} - -void CopyHandler::startCopy(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"start copy handler\n"); -} - -void CopyHandler::endCopy() -{ - debug(2,"end copy handler\n"); - m_parent->setDelegate(0); -} - -void CopyHandler::startParagraph(const QXmlAttributes& attrib) -{ - ParagraphHandler *parHandler = new ParagraphHandler(this); - parHandler->startParagraph(attrib); - m_children.append(parHandler); -} - -IDocIterator *CopyHandler::contents() const -{ - return new CopyIterator(*this); -} - -//---------------------------------------------------------------------- -// VerbatimHandler -//---------------------------------------------------------------------- - -VerbatimHandler::VerbatimHandler(IBaseHandler *parent) - : m_parent(parent), m_type(IDocVerbatim::Invalid) -{ - addEndHandler("verbatim",this,&VerbatimHandler::endVerbatim); - addEndHandler("latexonly",this,&VerbatimHandler::endVerbatim); - addEndHandler("htmlonly",this,&VerbatimHandler::endVerbatim); -} - -VerbatimHandler::~VerbatimHandler() -{ -} - -void VerbatimHandler::startVerbatim(const QXmlAttributes&,Types type) -{ - m_type = type; - m_parent->setDelegate(this); - m_curString=""; -} - -void VerbatimHandler::endVerbatim() -{ - m_text = m_curString; - m_parent->setDelegate(0); -} - - -//---------------------------------------------------------------------- -// SymbolHandler -//---------------------------------------------------------------------- - -SymbolHandler::SymbolHandler(IBaseHandler *parent,Types type) - : m_parent(parent), m_letter('\0'), m_type(type) -{ - addEndHandler("symbol"); - switch (type) - { - case IDocSymbol::Invalid: m_typeString="invalid"; break; - case IDocSymbol::Umlaut: m_typeString="umlaut"; break; - case IDocSymbol::Acute: m_typeString="acute"; break; - case IDocSymbol::Grave: m_typeString="grave"; break; - case IDocSymbol::Circ: m_typeString="circ"; break; - case IDocSymbol::Tilde: m_typeString="tilde"; break; - case IDocSymbol::Szlig: m_typeString="szlig"; break; - case IDocSymbol::Cedil: m_typeString="cedil"; break; - case IDocSymbol::Ring: m_typeString="ring"; break; - case IDocSymbol::Nbsp: m_typeString="nbsp"; break; - case IDocSymbol::Copy: m_typeString="copy"; break; - } -} - -SymbolHandler::~SymbolHandler() -{ -} - -void SymbolHandler::startSymbol(const QXmlAttributes& attrib) -{ - QString ls = attrib.value("char"); - if (!ls.isEmpty()) m_letter = ls.latin1()[0]; -} - -//---------------------------------------------------------------------- -// ParagraphHandler -//---------------------------------------------------------------------- - -ParagraphHandler::ParagraphHandler(IBaseHandler *parent) - : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - - m_markupHandler = new MarkupHandler(m_children,m_curString); - - // preformatted - setFallBackHandler(m_markupHandler); - - addEndHandler("para",this,&ParagraphHandler::endParagraph); - - addStartHandler("linebreak",this,&ParagraphHandler::startLineBreak); - addStartHandler("hruler",this,&ParagraphHandler::startHRuler); - addStartHandler("programlisting",this,&ParagraphHandler::startProgramListing); - addStartHandler("verbatim",this,&ParagraphHandler::startVerbatim); - addStartHandler("indexentry",this,&ParagraphHandler::startIndexEntry); - addStartHandler("orderedlist",this,&ParagraphHandler::startOrderedList); - addStartHandler("itemizedlist",this,&ParagraphHandler::startItemizedList); - addStartHandler("simplesect",this,&ParagraphHandler::startSimpleSect); - // TODO: title - addStartHandler("variablelist",this,&ParagraphHandler::startVariableList); - addStartHandler("table",this,&ParagraphHandler::startTable); - // TODO: heading - addStartHandler("image",this,&ParagraphHandler::startImage); - addStartHandler("dotfile",this,&ParagraphHandler::startDotFile); - addStartHandler("toclist",this,&ParagraphHandler::startTocList); - // TODO: language??? - addStartHandler("parameterlist",this,&ParagraphHandler::startParameterList); - // TODO: xrefsect - addStartHandler("copydoc",this,&ParagraphHandler::startCopyDoc); - - addStartHandler("ref",this,&ParagraphHandler::startRef); - addStartHandler("ulink",this,&ParagraphHandler::startULink); - addStartHandler("email",this,&ParagraphHandler::startEMail); - addStartHandler("link",this,&ParagraphHandler::startLink); - addStartHandler("formula",this,&ParagraphHandler::startFormula); - addStartHandler("latexonly",this,&ParagraphHandler::startHtmlOnly); - addStartHandler("htmlonly",this,&ParagraphHandler::startLatexOnly); - addStartHandler("umlaut",this,&ParagraphHandler::startUmlaut); - addStartHandler("acute",this,&ParagraphHandler::startAcute); - addStartHandler("grave",this,&ParagraphHandler::startGrave); - addStartHandler("circ",this,&ParagraphHandler::startCirc); - addStartHandler("tilde",this,&ParagraphHandler::startTilde); - addStartHandler("szlig",this,&ParagraphHandler::startSzlig); - addStartHandler("cedil",this,&ParagraphHandler::startCedil); - addStartHandler("ring",this,&ParagraphHandler::startRing); - addStartHandler("nbsp",this,&ParagraphHandler::startNbsp); - addStartHandler("copy",this,&ParagraphHandler::startCopy); - addStartHandler("anchor",this,&ParagraphHandler::startAnchor); -} - -ParagraphHandler::~ParagraphHandler() -{ - delete m_markupHandler; -} - -void ParagraphHandler::startParagraph(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"para\n"); -} - -void ParagraphHandler::endParagraph() -{ - addTextNode(); - debug(2,"end para\n"); - m_parent->setDelegate(0); -} - -void ParagraphHandler::startItemizedList(const QXmlAttributes& attrib) -{ - addTextNode(); - ItemizedListHandler *listHandler = new ItemizedListHandler(this); - listHandler->startItemizedList(attrib); - m_children.append(listHandler); -} - -void ParagraphHandler::startOrderedList(const QXmlAttributes& attrib) -{ - addTextNode(); - OrderedListHandler *listHandler = new OrderedListHandler(this); - listHandler->startOrderedList(attrib); - m_children.append(listHandler); -} - -void ParagraphHandler::startParameterList(const QXmlAttributes& attrib) -{ - addTextNode(); - ParameterListHandler *listHandler = new ParameterListHandler(this); - listHandler->startParameterList(attrib); - m_children.append(listHandler); -} - -void ParagraphHandler::startSimpleSect(const QXmlAttributes& attrib) -{ - addTextNode(); - SimpleSectHandler *sectHandler = new SimpleSectHandler(this); - sectHandler->startSimpleSect(attrib); - m_children.append(sectHandler); -} - -void ParagraphHandler::startRef(const QXmlAttributes& attrib) -{ - addTextNode(); - RefHandler *ref = new RefHandler(this); - ref->startRef(attrib); - m_children.append(ref); -} - -void ParagraphHandler::startVariableList(const QXmlAttributes& attrib) -{ - addTextNode(); - VariableListHandler *vl = new VariableListHandler(this); - vl->startVariableList(attrib); - m_children.append(vl); -} - -void ParagraphHandler::startHRuler(const QXmlAttributes& attrib) -{ - addTextNode(); - HRulerHandler *hr = new HRulerHandler(this); - hr->startHRuler(attrib); - m_children.append(hr); -} - -void ParagraphHandler::startLineBreak(const QXmlAttributes& attrib) -{ - addTextNode(); - LineBreakHandler *lb = new LineBreakHandler(this); - lb->startLineBreak(attrib); - m_children.append(lb); -} - -void ParagraphHandler::startULink(const QXmlAttributes& attrib) -{ - addTextNode(); - ULinkHandler *uh = new ULinkHandler(this); - uh->startULink(attrib); - m_children.append(uh); -} - -void ParagraphHandler::startEMail(const QXmlAttributes& attrib) -{ - addTextNode(); - EMailHandler *eh = new EMailHandler(this); - eh->startEMail(attrib); - m_children.append(eh); -} - -void ParagraphHandler::startLink(const QXmlAttributes& attrib) -{ - addTextNode(); - LinkHandler *lh = new LinkHandler(this); - lh->startLink(attrib); - m_children.append(lh); -} - -void ParagraphHandler::startProgramListing(const QXmlAttributes& attrib) -{ - addTextNode(); - ProgramListingHandler *pl = new ProgramListingHandler(this); - pl->startProgramListing(attrib); - m_children.append(pl); -} - -void ParagraphHandler::startFormula(const QXmlAttributes& attrib) -{ - addTextNode(); - FormulaHandler *fh = new FormulaHandler(this); - fh->startFormula(attrib); - m_children.append(fh); -} - -void ParagraphHandler::startImage(const QXmlAttributes& attrib) -{ - addTextNode(); - ImageHandler *ih = new ImageHandler(this); - ih->startImage(attrib); - m_children.append(ih); -} - -void ParagraphHandler::startDotFile(const QXmlAttributes& attrib) -{ - addTextNode(); - DotFileHandler *df = new DotFileHandler(this); - df->startDotFile(attrib); - m_children.append(df); -} - -void ParagraphHandler::startIndexEntry(const QXmlAttributes& attrib) -{ - addTextNode(); - IndexEntryHandler *df = new IndexEntryHandler(this); - df->startIndexEntry(attrib); - m_children.append(df); -} - -void ParagraphHandler::startTable(const QXmlAttributes& attrib) -{ - addTextNode(); - TableHandler *th = new TableHandler(this); - th->startTable(attrib); - m_children.append(th); -} - -void ParagraphHandler::startVerbatim(const QXmlAttributes& attrib) -{ - addTextNode(); - VerbatimHandler *vh = new VerbatimHandler(this); - vh->startVerbatim(attrib,IDocVerbatim::Verbatim); - m_children.append(vh); -} - -void ParagraphHandler::startHtmlOnly(const QXmlAttributes& attrib) -{ - addTextNode(); - VerbatimHandler *vh = new VerbatimHandler(this); - vh->startVerbatim(attrib,IDocVerbatim::HtmlOnly); - m_children.append(vh); -} - -void ParagraphHandler::startLatexOnly(const QXmlAttributes& attrib) -{ - addTextNode(); - VerbatimHandler *vh = new VerbatimHandler(this); - vh->startVerbatim(attrib,IDocVerbatim::LatexOnly); - m_children.append(vh); -} - -void ParagraphHandler::startUmlaut(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Umlaut); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startAcute(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Acute); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startGrave(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Grave); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startCirc(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Circ); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startTilde(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Tilde); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startSzlig(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Szlig); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startCedil(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Cedil); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startRing(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Ring); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startNbsp(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Nbsp); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startCopy(const QXmlAttributes& attrib) -{ - addTextNode(); - SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Copy); - sh->startSymbol(attrib); - m_children.append(sh); -} - -void ParagraphHandler::startAnchor(const QXmlAttributes& attrib) -{ - addTextNode(); - AnchorHandler *ah = new AnchorHandler(this); - ah->startAnchor(attrib); - m_children.append(ah); -} - -void ParagraphHandler::startCopyDoc(const QXmlAttributes& attrib) -{ - addTextNode(); - CopyHandler *ch = new CopyHandler(this); - ch->startCopy(attrib); - m_children.append(ch); -} - -void ParagraphHandler::startTocList(const QXmlAttributes& attrib) -{ - addTextNode(); - TocListHandler *th = new TocListHandler(this); - th->startTocList(attrib); - m_children.append(th); -} - -void ParagraphHandler::addTextNode() -{ - if (!m_curString.isEmpty()) - { - m_children.append( - new TextNode( - m_curString, - m_markupHandler->markup(), - m_markupHandler->headingLevel() - ) - ); - debug(2,"addTextNode() text=\"%s\" markup=%x headingLevel=%d\n", - m_curString.data(),m_markupHandler->markup(),m_markupHandler->headingLevel()); - m_curString=""; - } -} - -IDocIterator *ParagraphHandler::contents() const -{ - return new ParagraphIterator(*this); -} - -//---------------------------------------------------------------------- -// DocSectionHandler -//---------------------------------------------------------------------- - -DocSectionHandler::DocSectionHandler(IBaseHandler *parent,int level) - : m_parent(parent), m_internal(0), m_level(level), m_title(0) -{ - QString sectionKey; - m_paragraphs.setAutoDelete(TRUE); - m_subsections.setAutoDelete(TRUE); - addStartHandler("title",this,&DocSectionHandler::startTitle); - addStartHandler("para",this,&DocSectionHandler::startParagraph); - if (level<6) - { - sectionKey.sprintf("sect%d",level+1); - addStartHandler(sectionKey,this,&DocSectionHandler::startSubSection); - } - addStartHandler("internal",this,&DocSectionHandler::startInternal); - sectionKey.sprintf("sect%d",level); - addEndHandler(sectionKey,this,&DocSectionHandler::endDocSection); -} - -DocSectionHandler::~DocSectionHandler() -{ -} - -void DocSectionHandler::startDocSection(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - debug(2,"Start docsection\n"); - m_id = attrib.value("id"); -} - -void DocSectionHandler::endDocSection() -{ - m_parent->setDelegate(0); - debug(2,"End docsection\n"); -} - -void DocSectionHandler::startSubSection(const QXmlAttributes& attrib) -{ - DocSectionHandler *secHandler = new DocSectionHandler(this,m_level+1); - secHandler->startDocSection(attrib); - m_subsections.append(secHandler); -} - -void DocSectionHandler::startParagraph(const QXmlAttributes& attrib) -{ - ParagraphHandler *parHandler = new ParagraphHandler(this); - parHandler->startParagraph(attrib); - m_paragraphs.append(parHandler); -} - -void DocSectionHandler::startInternal(const QXmlAttributes& attrib) -{ - m_internal = new DocInternalHandler(this,m_level); - m_internal->startInternal(attrib); -} - -void DocSectionHandler::startTitle(const QXmlAttributes& attrib) -{ - m_title = new TitleHandler(this); - m_title->startTitle(attrib); -} - -IDocIterator *DocSectionHandler::paragraphs() const -{ - return new DocSectionParaIterator(*this); -} - -IDocIterator *DocSectionHandler::subSections() const -{ - return new DocSectionSubIterator(*this); -} - -IDocInternal *DocSectionHandler::internal() const -{ - return m_internal; -} - -//---------------------------------------------------------------------- -// DocInternal -//---------------------------------------------------------------------- - -DocInternalHandler::DocInternalHandler(IBaseHandler *parent,int level) - : m_parent(parent), m_level(level) -{ - m_paragraphs.setAutoDelete(TRUE); - m_subsections.setAutoDelete(TRUE); - addStartHandler("para",this,&DocInternalHandler::startParagraph); - QString sectionKey; - sectionKey.sprintf("sect%d",level+1); - addStartHandler(sectionKey,this,&DocInternalHandler::startSubSection); - addEndHandler("internal",this,&DocInternalHandler::endInternal); -} - -DocInternalHandler::~DocInternalHandler() -{ -} - -void DocInternalHandler::startInternal(const QXmlAttributes&) -{ - m_parent->setDelegate(this); - debug(2,"Start internal\n"); -} - -void DocInternalHandler::endInternal() -{ - m_parent->setDelegate(0); - debug(2,"End internal\n"); -} - -void DocInternalHandler::startSubSection(const QXmlAttributes& attrib) -{ - DocSectionHandler *secHandler = new DocSectionHandler(this,m_level+1); - secHandler->startDocSection(attrib); - m_subsections.append(secHandler); -} - -void DocInternalHandler::startParagraph(const QXmlAttributes& attrib) -{ - ParagraphHandler *parHandler = new ParagraphHandler(this); - parHandler->startParagraph(attrib); - m_paragraphs.append(parHandler); -} - -IDocIterator *DocInternalHandler::paragraphs() const -{ - return new DocInternalParaIterator(*this); -} - -IDocIterator *DocInternalHandler::subSections() const -{ - return new DocInternalSubIterator(*this); -} - - -//---------------------------------------------------------------------- -// DocHandler -//---------------------------------------------------------------------- - -DocHandler::DocHandler(IBaseHandler *parent) : m_parent(parent) -{ - m_children.setAutoDelete(TRUE); - - addEndHandler("briefdescription",this,&DocHandler::endDoc); - addEndHandler("detaileddescription",this,&DocHandler::endDoc); - addEndHandler("inbodydescription",this,&DocHandler::endDoc); - //addEndHandler("internal"); // TODO: implement this as a section - addStartHandler("internal",this,&DocHandler::startInternal); - - addStartHandler("para",this,&DocHandler::startParagraph); - addStartHandler("sect1",this,&DocHandler::startSect1); - addStartHandler("title",this,&DocHandler::startTitle); - //addStartHandler("internal"); -} - -DocHandler::~DocHandler() -{ -} - -void DocHandler::startDoc(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"start dochandler\n"); -} - -void DocHandler::endDoc() -{ - debug(2,"end dochandler\n"); - m_parent->setDelegate(0); -} - -void DocHandler::startParagraph(const QXmlAttributes& attrib) -{ - ParagraphHandler *parHandler = new ParagraphHandler(this); - parHandler->startParagraph(attrib); - m_children.append(parHandler); -} - -void DocHandler::startSect1(const QXmlAttributes& attrib) -{ - DocSectionHandler *secHandler = new DocSectionHandler(this,1); - secHandler->startDocSection(attrib); - m_children.append(secHandler); -} - -void DocHandler::startTitle(const QXmlAttributes& attrib) -{ - TitleHandler *titleHandler = new TitleHandler(this); - titleHandler->startTitle(attrib); - m_children.append(titleHandler); -} - -void DocHandler::startInternal(const QXmlAttributes& attrib) -{ - m_internal = new DocInternalHandler(this,1); - m_internal->startInternal(attrib); -} - -IDocIterator *DocHandler::contents() const -{ - return new DocIterator(*this); -} - -IDocInternal *DocHandler::internal() const -{ - return m_internal; -} - diff --git a/addon/doxmlparser/src/dochandler.h b/addon/doxmlparser/src/dochandler.h deleted file mode 100644 index 922624d..0000000 --- a/addon/doxmlparser/src/dochandler.h +++ /dev/null @@ -1,1352 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _DOCHANDLER_H -#define _DOCHANDLER_H - -#include -#include -#include - -#include -#include "stringimpl.h" -#include "basehandler.h" -#include "baseiterator.h" - -class ParagraphHandler; -class DocInternalHandler; -class LinkedTextImpl; -class LinkedTextHandler; - -//----------------------------------------------------------------------------- - -class DocImpl : public IDoc { public: virtual ~DocImpl() {} }; - -#define DEFINE_CLS_IMPL(cls) \ - class cls##Impl : public I##cls, public DocImpl { public: virtual ~cls##Impl() {} } - -DEFINE_CLS_IMPL(DocMarkup); -DEFINE_CLS_IMPL(DocPara); -DEFINE_CLS_IMPL(DocText); -DEFINE_CLS_IMPL(DocMarkupModifier); -DEFINE_CLS_IMPL(DocItemizedList); -DEFINE_CLS_IMPL(DocOrderedList); -DEFINE_CLS_IMPL(DocListItem); -DEFINE_CLS_IMPL(DocParameterList); -DEFINE_CLS_IMPL(DocParameterItem); -DEFINE_CLS_IMPL(DocParameter); -DEFINE_CLS_IMPL(DocTitle); -DEFINE_CLS_IMPL(DocSimpleSect); -DEFINE_CLS_IMPL(DocRef); -DEFINE_CLS_IMPL(DocVariableList); -DEFINE_CLS_IMPL(DocVariableListEntry); -DEFINE_CLS_IMPL(DocHRuler); -DEFINE_CLS_IMPL(DocLineBreak); -DEFINE_CLS_IMPL(DocULink); -DEFINE_CLS_IMPL(DocEMail); -DEFINE_CLS_IMPL(DocLink); -DEFINE_CLS_IMPL(DocProgramListing); -DEFINE_CLS_IMPL(DocCodeLine); -DEFINE_CLS_IMPL(DocHighlight); -DEFINE_CLS_IMPL(DocFormula); -DEFINE_CLS_IMPL(DocImage); -DEFINE_CLS_IMPL(DocDotFile); -DEFINE_CLS_IMPL(DocIndexEntry); -DEFINE_CLS_IMPL(DocTable); -DEFINE_CLS_IMPL(DocRow); -DEFINE_CLS_IMPL(DocEntry); -DEFINE_CLS_IMPL(DocSection); -DEFINE_CLS_IMPL(DocVerbatim); -DEFINE_CLS_IMPL(DocCopy); -DEFINE_CLS_IMPL(DocTocList); -DEFINE_CLS_IMPL(DocTocItem); -DEFINE_CLS_IMPL(DocAnchor); -DEFINE_CLS_IMPL(DocSymbol); -DEFINE_CLS_IMPL(DocInternal); -DEFINE_CLS_IMPL(DocRoot); - -//----------------------------------------------------------------------------- - - -/*! \brief Node representing a piece of text. - * - */ -class TextNode : public DocTextImpl -{ - public: - TextNode(const QString &t,int markup,int level) - : m_text(t), m_markup(markup), m_headingLevel(level) {} - virtual ~TextNode() {} - - // IDocText - virtual Kind kind() const { return DocImpl::Text; } - virtual const IString *text() const { return &m_text; } - virtual int markup() const { return m_markup; } - virtual int headingLevel() const { return m_headingLevel; } - - private: - StringImpl m_text; - int m_markup; - int m_headingLevel; -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a change in the markup style. - * - */ -class MarkupModifierNode : public DocMarkupModifierImpl -{ - public: - MarkupModifierNode(int markup,bool enabled,int level=0) - : m_markup(markup), m_enabled(enabled), m_headingLevel(level) {} - virtual ~MarkupModifierNode() {} - - // IDocMarkupModifier - virtual Kind kind() const { return DocImpl::MarkupModifier; } - virtual bool enabled() const { return m_enabled; } - virtual int markup() const { return m_markup; } - virtual int headingLevel() const { return m_headingLevel; } - - private: - int m_markup; - bool m_enabled; - int m_headingLevel; -}; - - -//----------------------------------------------------------------------------- - -/*! \brief Handles markup commands in the XML input. - * - */ -class MarkupHandler : public BaseFallBackHandler -{ - public: - MarkupHandler(QList &children,QString &curString); - virtual ~MarkupHandler(); - int markup() const { return m_curMarkup; } - int headingLevel() const { return m_headingLevel; } - - virtual void startBold(const QXmlAttributes &attrib); - virtual void endBold(); - virtual void startEmphasis(const QXmlAttributes &attrib); - virtual void endEmphasis(); - virtual void startComputerOutput(const QXmlAttributes &attrib); - virtual void endComputerOutput(); - virtual void startCenter(const QXmlAttributes &attrib); - virtual void endCenter(); - virtual void startSmallFont(const QXmlAttributes &attrib); - virtual void endSmallFont(); - virtual void startSubscript(const QXmlAttributes &attrib); - virtual void endSubscript(); - virtual void startSuperscript(const QXmlAttributes &attrib); - virtual void endSuperscript(); - virtual void startPreformatted(const QXmlAttributes &attrib); - virtual void endPreformatted(); - virtual void startHeading1(const QXmlAttributes &attrib); - virtual void endHeading1(); - virtual void startHeading2(const QXmlAttributes &attrib); - virtual void endHeading2(); - virtual void startHeading3(const QXmlAttributes &attrib); - virtual void endHeading3(); - virtual void startHeading4(const QXmlAttributes &attrib); - virtual void endHeading4(); - virtual void startHeading5(const QXmlAttributes &attrib); - virtual void endHeading5(); - virtual void startHeading6(const QXmlAttributes &attrib); - virtual void endHeading6(); - - - private: - void addTextNode(); - - QList &m_children; - QString &m_curString; - int m_curMarkup; - int m_headingLevel; -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a paragraph of text and commands. - * - */ -// children: itemizedlist, orderedlist, parameterlist, simplesect, ref, -// variablelist, hruler, linebreak, ulink, email, link -// programlisting, formula, image, dotfile, indexentry, -// table -// -// children handled by MarkupHandler: -// bold, computeroutput, emphasis, center, -// small, subscript, superscript. -// -class ParagraphHandler : public DocParaImpl, - public BaseHandler -{ - friend class ParagraphIterator; - - public: - virtual void startParagraph(const QXmlAttributes& attrib); - virtual void endParagraph(); - virtual void startItemizedList(const QXmlAttributes& attrib); - virtual void startOrderedList(const QXmlAttributes& attrib); - virtual void startParameterList(const QXmlAttributes& attrib); - virtual void startSimpleSect(const QXmlAttributes& attrib); - virtual void startRef(const QXmlAttributes& attrib); - virtual void startVariableList(const QXmlAttributes& attrib); - virtual void startHRuler(const QXmlAttributes& attrib); - virtual void startLineBreak(const QXmlAttributes& attrib); - virtual void startULink(const QXmlAttributes& attrib); - virtual void startEMail(const QXmlAttributes& attrib); - virtual void startLink(const QXmlAttributes& attrib); - virtual void startProgramListing(const QXmlAttributes& attrib); - virtual void startFormula(const QXmlAttributes& attrib); - virtual void startImage(const QXmlAttributes& attrib); - virtual void startDotFile(const QXmlAttributes& attrib); - virtual void startIndexEntry(const QXmlAttributes& attrib); - virtual void startTable(const QXmlAttributes& attrib); - virtual void startVerbatim(const QXmlAttributes& attrib); - virtual void startHtmlOnly(const QXmlAttributes& attrib); - virtual void startLatexOnly(const QXmlAttributes& attrib); - virtual void startUmlaut(const QXmlAttributes& attrib); - virtual void startAcute(const QXmlAttributes& attrib); - virtual void startGrave(const QXmlAttributes& attrib); - virtual void startCirc(const QXmlAttributes& attrib); - virtual void startTilde(const QXmlAttributes& attrib); - virtual void startSzlig(const QXmlAttributes& attrib); - virtual void startCedil(const QXmlAttributes& attrib); - virtual void startRing(const QXmlAttributes& attrib); - virtual void startNbsp(const QXmlAttributes& attrib); - virtual void startCopy(const QXmlAttributes& attrib); - virtual void startAnchor(const QXmlAttributes& attrib); - virtual void startCopyDoc(const QXmlAttributes& attrib); - virtual void startTocList(const QXmlAttributes& attrib); - - ParagraphHandler(IBaseHandler *parent); - virtual ~ParagraphHandler(); - - // IDocPara - virtual Kind kind() const { return DocImpl::Para; } - virtual IDocIterator *contents() const; - - private: - void addTextNode(); - IBaseHandler *m_parent; - QList m_children; - MarkupHandler *m_markupHandler; -}; - -class ParagraphIterator : public BaseIteratorVia -{ - public: - ParagraphIterator(const ParagraphHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a list item. - * - */ -class ListItemHandler : public DocListItemImpl, public BaseHandler -{ - friend class ListItemIterator; - public: - ListItemHandler(IBaseHandler *parent); - virtual ~ListItemHandler(); - virtual void startListItem(const QXmlAttributes& attrib); - virtual void endListItem(); - virtual void startParagraph(const QXmlAttributes& attrib); - - // IDocItem - virtual Kind kind() const { return DocImpl::ListItem; } - virtual IDocIterator *contents() const; - - private: - IBaseHandler *m_parent; - QList m_children; -}; - -class ListItemIterator : public BaseIteratorVia -{ - public: - ListItemIterator(const ListItemHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - - -//----------------------------------------------------------------------------- - -/*! \brief Node representing list of items. - * - */ -class OrderedListHandler : public DocOrderedListImpl, public BaseHandler -{ - friend class OrderedListIterator; - public: - OrderedListHandler(IBaseHandler *parent); - virtual ~OrderedListHandler(); - virtual void startOrderedList(const QXmlAttributes& attrib); - virtual void endOrderedList(); - virtual void startOrderedListItem(const QXmlAttributes& attrib); - - // IDocOrderedList - virtual Kind kind() const { return DocImpl::OrderedList; } - virtual IDocIterator *elements() const; - - private: - IBaseHandler *m_parent; - QList m_children; -}; - -class OrderedListIterator : public BaseIteratorVia -{ - public: - OrderedListIterator(const OrderedListHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing table of contents list. - * - */ -class TocListHandler : public DocTocListImpl, public BaseHandler -{ - friend class TocListIterator; - public: - TocListHandler(IBaseHandler *parent); - virtual ~TocListHandler(); - virtual void startTocList(const QXmlAttributes& attrib); - virtual void endTocList(); - virtual void startTocItem(const QXmlAttributes& attrib); - - // IDocTocList - virtual Kind kind() const { return DocImpl::TocList; } - virtual IDocIterator *elements() const; - - private: - IBaseHandler *m_parent; - QList m_children; -}; - -class TocListIterator : public BaseIteratorVia -{ - public: - TocListIterator(const TocListHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a table of contents item. - * - */ -class TocItemHandler : public DocTocItemImpl, public BaseHandler -{ - friend class TocItemIterator; - public: - TocItemHandler(IBaseHandler *parent); - virtual ~TocItemHandler(); - virtual void startTocItem(const QXmlAttributes& attrib); - virtual void endTocItem(); - - // IDocItem - virtual Kind kind() const { return DocImpl::TocItem; } - virtual const IString *id() const { return &m_id; } - virtual const IString *title() const { return &m_title; } - - private: - IBaseHandler *m_parent; - StringImpl m_id; - StringImpl m_title; -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing list of items. - * - */ -class ItemizedListHandler : public DocItemizedListImpl, public BaseHandler -{ - friend class ItemizedListIterator; - public: - ItemizedListHandler(IBaseHandler *parent); - virtual ~ItemizedListHandler(); - virtual void startItemizedList(const QXmlAttributes& attrib); - virtual void endItemizedList(); - virtual void startItemizedListItem(const QXmlAttributes& attrib); - - // IDocItemizedList - virtual Kind kind() const { return DocImpl::ItemizedList; } - virtual IDocIterator *elements() const; - - private: - IBaseHandler *m_parent; - QList m_children; -}; - -class ItemizedListIterator : public BaseIteratorVia -{ - public: - ItemizedListIterator(const ItemizedListHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - - -//----------------------------------------------------------------------------- -/*! \brief Node representing a parameter. - * - */ -class ParameterHandler : public DocParameterImpl, - public BaseHandler -{ - public: - ParameterHandler(IBaseHandler *parent); - virtual ~ParameterHandler(); - virtual void startParameterName(const QXmlAttributes& attrib); - virtual void endParameterName(); - - // IDocParameter - virtual Kind kind() const { return DocImpl::Parameter; } - virtual const IString *name() const { return &m_name; } - - private: - IBaseHandler *m_parent; - StringImpl m_name; -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing a list of param names with a single description. - * - */ -class ParameterItemHandler : public DocParameterItemImpl, - public BaseHandler -{ - friend class ParameterItemIterator; - public: - ParameterItemHandler(IBaseHandler *parent); - virtual ~ParameterItemHandler(); - virtual void startParameterItem(const QXmlAttributes& attrib); - virtual void endParameterItem(); - virtual void startParameterName(const QXmlAttributes& attrib); - virtual void startParagraph(const QXmlAttributes& attrib); - - // IDocParameterItem - virtual Kind kind() const { return DocImpl::ParameterItem; } - virtual IDocIterator *paramNames() const; - virtual IDocPara *description() const { return m_description; } - - private: - IBaseHandler *m_parent; - QList m_parameters; - ParagraphHandler *m_description; -}; - -class ParameterItemIterator : public BaseIteratorVia -{ - public: - ParameterItemIterator(const ParameterItemHandler &handler) : - BaseIteratorVia(handler.m_parameters) {} -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing a parameter section. - * - */ -class ParameterListHandler : public DocParameterListImpl, - public BaseHandler -{ - friend class ParameterListIterator; - public: - ParameterListHandler(IBaseHandler *parent); - virtual ~ParameterListHandler(); - virtual void startParameterList(const QXmlAttributes& attrib); - virtual void endParameterList(); - virtual void startParameterItem(const QXmlAttributes& attrib); - - // IDocParameterList - virtual Kind kind() const { return DocImpl::ParameterList; } - virtual Types sectType() const { return m_type; } - virtual IDocIterator *params() const; - - private: - IBaseHandler *m_parent; - QList m_paramItems; - Types m_type; -}; - -class ParameterListIterator : public BaseIteratorVia -{ - public: - ParameterListIterator(const ParameterListHandler &handler) : - BaseIteratorVia(handler.m_paramItems) {} -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing a horizontal ruler - * - */ -class LineBreakHandler : public DocLineBreakImpl, public BaseHandler -{ - public: - LineBreakHandler(IBaseHandler *parent); - virtual ~LineBreakHandler(); - - void startLineBreak(const QXmlAttributes& attrib); - void endLineBreak(); - - // IDocLineBreak - virtual Kind kind() const { return DocImpl::LineBreak; } - - private: - IBaseHandler *m_parent; -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing a link to section - * - */ -class LinkHandler : public DocLinkImpl, public BaseHandler -{ - public: - LinkHandler(IBaseHandler *parent); - virtual ~LinkHandler(); - - void startLink(const QXmlAttributes& attrib); - void endLink(); - - // IDocLink - virtual Kind kind() const { return DocImpl::Link; } - virtual const IString *refId() const { return &m_ref; } - virtual const IString *text() const { return &m_text; } - - private: - IBaseHandler *m_parent; - StringImpl m_ref; - StringImpl m_text; -}; - - -//----------------------------------------------------------------------------- - -/* \brief Node representing a link to an email address - * - */ -class EMailHandler : public DocEMailImpl, public BaseHandler -{ - public: - EMailHandler(IBaseHandler *parent); - virtual ~EMailHandler(); - - void startEMail(const QXmlAttributes& attrib); - void endEMail(); - - // IDocEMail - virtual Kind kind() const { return DocImpl::EMail; } - virtual const IString *address() const { return &m_address; } - - private: - IBaseHandler *m_parent; - StringImpl m_address; -}; - - -//----------------------------------------------------------------------------- - -/* \brief Node representing a link to an URL - * - */ -class ULinkHandler : public DocULinkImpl, public BaseHandler -{ - public: - ULinkHandler(IBaseHandler *parent); - virtual ~ULinkHandler(); - - void startULink(const QXmlAttributes& attrib); - void endULink(); - - // IDocULink - virtual Kind kind() const { return DocImpl::ULink; } - virtual const IString * url() const { return &m_url; } - virtual const IString * text() const { return &m_text; } - - private: - IBaseHandler *m_parent; - StringImpl m_url; - StringImpl m_text; -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing a horizontal ruler - * - */ -class HRulerHandler : public DocHRulerImpl, public BaseHandler -{ - public: - HRulerHandler(IBaseHandler *parent); - virtual ~HRulerHandler(); - - void startHRuler(const QXmlAttributes& attrib); - void endHRuler(); - - // IDocHRuler - virtual Kind kind() const { return DocImpl::HRuler; } - - private: - IBaseHandler *m_parent; -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing a reference to another item - * - */ -class RefHandler : public DocRefImpl, public BaseHandler -{ - public: - RefHandler(IBaseHandler *parent); - virtual ~RefHandler(); - void startRef(const QXmlAttributes& attrib); - void endRef(); - - // IDocRef - virtual Kind kind() const { return DocImpl::Ref; } - virtual const IString *refId() const { return &m_refId; } - virtual TargetKind targetKind() const { return m_targetKind; } - virtual const IString *external() const { return &m_extId; } - virtual const IString *text() const { return &m_linkText; } - - private: - IBaseHandler *m_parent; - StringImpl m_refId; - StringImpl m_extId; - StringImpl m_linkText; - TargetKind m_targetKind; -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing the title of a section - * - */ -// children: text, ref -// children handled by MarkupHandler: -// bold, computeroutput, emphasis, center, -// small, subscript, superscript. -class TitleHandler : public DocTitleImpl, public BaseHandler -{ - friend class TitleIterator; - public: - TitleHandler(IBaseHandler *parent); - virtual ~TitleHandler(); - virtual void startTitle(const QXmlAttributes& attrib); - virtual void endTitle(); - virtual void startRef(const QXmlAttributes& attrib); - void addTextNode(); - - // IDocTitle - virtual Kind kind() const { return DocImpl::Title; } - virtual IDocIterator *title() const; - - private: - IBaseHandler *m_parent; - QList m_children; - MarkupHandler *m_markupHandler; -}; - -class TitleIterator : public BaseIteratorVia -{ - public: - TitleIterator(const TitleHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing a simple section with an unnumbered header. - * - */ -// children: title, para -class SimpleSectHandler : public DocSimpleSectImpl, - public BaseHandler -{ - public: - SimpleSectHandler(IBaseHandler *parent); - virtual ~SimpleSectHandler(); - virtual void startSimpleSect(const QXmlAttributes& attrib); - virtual void endSimpleSect(); - virtual void startTitle(const QXmlAttributes& attrib); - virtual void startParagraph(const QXmlAttributes& attrib); - - // IDocSimpleSect - virtual Kind kind() const { return DocImpl::SimpleSect; } - virtual Types type() const { return m_type; } - virtual const IString *typeString() const { return &m_typeString; } - virtual IDocTitle *title() const { return m_title; } - virtual IDocPara *description() const { return m_paragraph; } - - private: - IBaseHandler *m_parent; - ParagraphHandler *m_paragraph; - Types m_type; - StringImpl m_typeString; - TitleHandler *m_title; -}; - -//----------------------------------------------------------------------------- - -/* \brief Node representing an named item of a VariableList. - * - */ -class VariableListEntryHandler : public DocVariableListEntryImpl, - public BaseHandler -{ - public: - virtual void startVarListEntry(const QXmlAttributes& attrib); - virtual void endVarListEntry(); - virtual void startListItem(const QXmlAttributes& attrib); - virtual void endListItem(); - virtual void startTerm(const QXmlAttributes& attrib); - virtual void endTerm(); - virtual void startParagraph(const QXmlAttributes& attrib); - - VariableListEntryHandler(IBaseHandler *parent); - virtual ~VariableListEntryHandler(); - - // IDocVariableListEntry - virtual Kind kind() const { return DocImpl::VariableListEntry; } - virtual ILinkedTextIterator *term() const; - virtual IDocPara *description() const { return m_description; } - - private: - IBaseHandler* m_parent; - QList m_term; - ParagraphHandler* m_description; - LinkedTextHandler* m_linkedTextHandler; -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a list of named items. - * - */ -// children: varlistentry, listitem -class VariableListHandler : public DocVariableListImpl, - public BaseHandler -{ - friend class VariableListIterator; - - public: - virtual void startVariableList(const QXmlAttributes& attrib); - virtual void endVariableList(); - virtual void startVarListEntry(const QXmlAttributes& attrib); - virtual void startListItem(const QXmlAttributes& attrib); - - VariableListHandler(IBaseHandler *parent); - virtual ~VariableListHandler(); - - // IDocVariableList - virtual Kind kind() const { return DocImpl::VariableList; } - virtual IDocIterator *entries() const; - - private: - IBaseHandler *m_parent; - QList m_entries; - VariableListEntryHandler *m_curEntry; -}; - -class VariableListIterator : public BaseIteratorVia -{ - public: - VariableListIterator(const VariableListHandler &handler) : - BaseIteratorVia(handler.m_entries) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a highlighted text fragment. - * - */ -// children: ref -class HighlightHandler : public DocHighlightImpl, public BaseHandler -{ - friend class HighlightIterator; - public: - HighlightHandler(IBaseHandler *parent); - virtual ~HighlightHandler(); - void startHighlight(const QXmlAttributes& attrib); - void endHighlight(); - virtual void startRef(const QXmlAttributes&); - virtual void startSpace(const QXmlAttributes&); - - // IDocHighlight - virtual Kind kind() const { return DocImpl::Highlight; } - virtual HighlightKind highlightKind() const { return m_hl; } - virtual IDocIterator *codeElements() const; - - private: - void addTextNode(); - - IBaseHandler *m_parent; - HighlightKind m_hl; - QString m_hlString; - QList m_children; -}; - -class HighlightIterator : public BaseIteratorVia -{ - public: - HighlightIterator(const HighlightHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a line of code. - * - */ -// children: linenumber, highlight, anchor, ref -class CodeLineHandler : public DocCodeLineImpl, public BaseHandler -{ - friend class CodeLineIterator; - public: - - virtual void startCodeLine(const QXmlAttributes&); - virtual void endCodeLine(); - virtual void startLineNumber(const QXmlAttributes&); - virtual void endLineNumber(); - virtual void startHighlight(const QXmlAttributes&); - virtual void startRef(const QXmlAttributes&); - - CodeLineHandler(IBaseHandler *parent); - virtual ~CodeLineHandler(); - - // IDocCodeLine - virtual Kind kind() const { return DocImpl::CodeLine; } - virtual int lineNumber() const { return m_lineNumber; } - virtual const IString *refId() const { return &m_refId; } - virtual IDocIterator *codeElements() const; - - private: - void addTextNode(); - - IBaseHandler *m_parent; - int m_lineNumber; - StringImpl m_refId; - QList m_children; -}; - -class CodeLineIterator : public BaseIteratorVia -{ - public: - CodeLineIterator(const CodeLineHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a program listing - * - */ -// children: codeline, linenumber -class ProgramListingHandler : public DocProgramListingImpl, public BaseHandler -{ - friend class ProgramListingIterator; - public: - virtual void startProgramListing(const QXmlAttributes& attrib); - virtual void endProgramListing(); - virtual void startCodeLine(const QXmlAttributes&); - virtual void startLineNumber(const QXmlAttributes&); - - ProgramListingHandler(IBaseHandler *parent); - virtual ~ProgramListingHandler(); - - // IDocProgramListing - virtual Kind kind() const { return DocImpl::ProgramListing; } - virtual IDocIterator *codeLines() const; - - private: - IBaseHandler *m_parent; - QList m_children; - bool m_hasLineNumber; -}; - -//----------------------------------------------------------------------------- - -class ProgramListingIterator : public BaseIteratorVia -{ - public: - ProgramListingIterator(const ProgramListingHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a formula. - * - */ -// children: - -class FormulaHandler : public DocFormulaImpl, public BaseHandler -{ - public: - FormulaHandler(IBaseHandler *parent); - virtual ~FormulaHandler(); - void startFormula(const QXmlAttributes& attrib); - void endFormula(); - - // IDocFormula - virtual Kind kind() const { return DocImpl::Formula; } - virtual const IString *id() const { return &m_id; } - virtual const IString *text() const { return &m_text; } - - private: - IBaseHandler *m_parent; - StringImpl m_id; - StringImpl m_text; -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing an image. - * - */ -// children: - -class ImageHandler : public DocImageImpl, public BaseHandler -{ - public: - ImageHandler(IBaseHandler *parent); - virtual ~ImageHandler(); - void startImage(const QXmlAttributes& attrib); - void endImage(); - - // IDocImage - virtual Kind kind() const { return DocImpl::Image; } - virtual const IString *name() const { return &m_name; } - virtual const IString *caption() const { return &m_caption; } - - private: - IBaseHandler *m_parent; - StringImpl m_name; - StringImpl m_caption; -}; - - -//----------------------------------------------------------------------------- -/*! \brief Node representing an anchor. - * - */ -// children: - -class AnchorHandler : public DocAnchorImpl, public BaseHandler -{ - public: - AnchorHandler(IBaseHandler *parent); - virtual ~AnchorHandler(); - void startAnchor(const QXmlAttributes& attrib); - void endAnchor(); - - // IDocAnchor - virtual Kind kind() const { return DocImpl::Anchor; } - virtual const IString *id() const { return &m_id; } - - private: - IBaseHandler *m_parent; - StringImpl m_id; -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a dot file. - * - */ -// children: - -class DotFileHandler : public DocDotFileImpl, public BaseHandler -{ - public: - DotFileHandler(IBaseHandler *parent); - virtual ~DotFileHandler(); - void startDotFile(const QXmlAttributes& attrib); - void endDotFile(); - - // IDocDotFile - virtual Kind kind() const { return DocImpl::DotFile; } - virtual const IString *name() const { return &m_name; } - virtual const IString *caption() const { return &m_caption; } - - private: - IBaseHandler *m_parent; - StringImpl m_name; - StringImpl m_caption; -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing an entry in the index. - * - */ -// children: - -class IndexEntryHandler : public DocIndexEntryImpl, public BaseHandler -{ - public: - IndexEntryHandler(IBaseHandler *parent); - virtual ~IndexEntryHandler(); - void startIndexEntry(const QXmlAttributes& attrib); - void endIndexEntry(); - void startPrimaryIE(const QXmlAttributes& attrib); - void endPrimaryIE(); - void startSecondaryIE(const QXmlAttributes& attrib); - void endSecondaryIE(); - - // IDocIndexEntry - virtual Kind kind() const { return DocImpl::IndexEntry; } - virtual const IString *primary() const { return &m_primary; } - virtual const IString *secondary() const { return &m_secondary; } - - private: - IBaseHandler *m_parent; - StringImpl m_primary; - StringImpl m_secondary; -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing an entry in the table entry. - * - */ -// children: para -class EntryHandler : public DocEntryImpl, public BaseHandler -{ - friend class EntryIterator; - public: - EntryHandler(IBaseHandler *parent); - virtual ~EntryHandler(); - void startEntry(const QXmlAttributes& attrib); - void endEntry(); - void startParagraph(const QXmlAttributes& attrib); - - // IDocEntry - virtual Kind kind() const { return DocImpl::Entry; } - virtual IDocIterator *contents() const; - - private: - IBaseHandler *m_parent; - QList m_children; -}; - -class EntryIterator : public BaseIteratorVia -{ - public: - EntryIterator(const EntryHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing an entry in the table row. - * - */ -// children: entry -class RowHandler : public DocRowImpl, public BaseHandler -{ - friend class RowIterator; - public: - RowHandler(IBaseHandler *parent); - virtual ~RowHandler(); - void startRow(const QXmlAttributes& attrib); - void endRow(); - void startEntry(const QXmlAttributes& attrib); - - // IDocRow - virtual Kind kind() const { return DocImpl::Row; } - virtual IDocIterator *entries() const; - - private: - IBaseHandler *m_parent; - QList m_children; -}; - -class RowIterator : public BaseIteratorVia -{ - public: - RowIterator(const RowHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing an entry in the table. - * - */ -// children: row, caption -class TableHandler : public DocTableImpl, public BaseHandler -{ - friend class TableIterator; - public: - TableHandler(IBaseHandler *parent); - virtual ~TableHandler(); - void startTable(const QXmlAttributes& attrib); - void endTable(); - void startRow(const QXmlAttributes& attrib); - void startCaption(const QXmlAttributes& attrib); - void endCaption(); - - // IDocTable - virtual Kind kind() const { return DocImpl::Table; } - virtual IDocIterator *rows() const; - virtual int numColumns() const { return m_numColumns; } - virtual const IString *caption() const { return &m_caption; } - - private: - IBaseHandler *m_parent; - QList m_children; - int m_numColumns; - StringImpl m_caption; -}; - -class TableIterator : public BaseIteratorVia -{ - public: - TableIterator(const TableHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a copied piece of documentation. - * - */ -class CopyHandler : public DocCopyImpl, public BaseHandler -{ - friend class CopyIterator; - public: - CopyHandler(IBaseHandler *parent); - virtual ~CopyHandler(); - virtual void startCopy(const QXmlAttributes& attrib); - virtual void endCopy(); - virtual void startParagraph(const QXmlAttributes& attrib); - - // IDocCopy - virtual Kind kind() const { return DocImpl::Copy; } - virtual IDocIterator *contents() const; - - private: - IBaseHandler *m_parent; - QList m_children; -}; - -class CopyIterator : public BaseIteratorVia -{ - public: - CopyIterator(const CopyHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -/*! \brief Node representing an preformatted section - */ -class VerbatimHandler : public DocVerbatimImpl, - public BaseHandler -{ - public: - VerbatimHandler(IBaseHandler *parent); - virtual ~VerbatimHandler(); - void startVerbatim(const QXmlAttributes& attrib,Types type); - void endVerbatim(); - - // IDocVerbatim - virtual Kind kind() const { return DocImpl::Verbatim; } - virtual const IString *text() const { return &m_text; } - virtual Types type() const { return m_type; } - - private: - IBaseHandler *m_parent; - StringImpl m_text; - Types m_type; -}; - - -//----------------------------------------------------------------------------- - -/*! \brief Node representing an special symbol. - * - */ -// children: - -class SymbolHandler : public DocSymbolImpl, public BaseHandler -{ - public: - SymbolHandler(IBaseHandler *parent,Types type); - virtual ~SymbolHandler(); - void startSymbol(const QXmlAttributes& attrib); - void endSymbol(); - - // IDocSymbol - virtual Kind kind() const { return DocImpl::Symbol; } - virtual Types type() const { return m_type; } - virtual const IString *typeString() const { return &m_typeString; } - virtual char letter() const { return m_letter; } - - private: - IBaseHandler *m_parent; - char m_letter; - Types m_type; - StringImpl m_typeString; -}; - - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a section. - * - */ -// children: title, para, sect(n+1) -class DocSectionHandler : public DocSectionImpl, public BaseHandler -{ - friend class DocSectionParaIterator; - friend class DocSectionSubIterator; - public: - DocSectionHandler(IBaseHandler *parent,int level); - virtual ~DocSectionHandler(); - virtual void startDocSection(const QXmlAttributes& attrib); - virtual void endDocSection(); - virtual void startTitle(const QXmlAttributes& attrib); - virtual void startSubSection(const QXmlAttributes& attrib); - virtual void startParagraph(const QXmlAttributes& attrib); - virtual void startInternal(const QXmlAttributes& attrib); - - // IDocSection - virtual Kind kind() const { return DocImpl::Section; } - virtual const IString *id() const { return &m_id; } - virtual int level() const { return m_level; } - virtual IDocTitle *title() const { return m_title; } - virtual IDocIterator *paragraphs() const; - virtual IDocIterator *subSections() const; - virtual IDocInternal *internal() const; - - private: - IBaseHandler *m_parent; - QList m_paragraphs; - QList m_subsections; - DocInternalHandler *m_internal; - StringImpl m_id; - int m_level; - TitleHandler *m_title; -}; - -class DocSectionParaIterator : public BaseIteratorVia -{ - public: - DocSectionParaIterator(const DocSectionHandler &handler) : - BaseIteratorVia(handler.m_paragraphs) {} -}; - -class DocSectionSubIterator : public BaseIteratorVia -{ - public: - DocSectionSubIterator(const DocSectionHandler &handler) : - BaseIteratorVia(handler.m_subsections) {} -}; - -//----------------------------------------------------------------------------- - -class DocInternalHandler : public DocInternalImpl, public BaseHandler -{ - public: - friend class DocInternalParaIterator; - friend class DocInternalSubIterator; - DocInternalHandler(IBaseHandler *parent,int level); - virtual ~DocInternalHandler(); - virtual void startInternal(const QXmlAttributes& attrib); - virtual void endInternal(); - virtual void startSubSection(const QXmlAttributes& attrib); - virtual void startParagraph(const QXmlAttributes& attrib); - - // IDocInternal - virtual Kind kind() const { return DocImpl::Internal; } - virtual IDocIterator *paragraphs() const; - virtual IDocIterator *subSections() const; - - private: - IBaseHandler *m_parent; - QList m_paragraphs; - QList m_subsections; - int m_level; -}; - -class DocInternalParaIterator : public BaseIteratorVia -{ - public: - DocInternalParaIterator(const DocInternalHandler &handler) : - BaseIteratorVia(handler.m_paragraphs) {} -}; - -class DocInternalSubIterator : public BaseIteratorVia -{ - public: - DocInternalSubIterator(const DocInternalHandler &handler) : - BaseIteratorVia(handler.m_subsections) {} -}; - - -//----------------------------------------------------------------------------- - -/*! \brief Node representing a documentation block. - * - */ -// children: para, title, sect1, internal -class DocHandler : public DocRootImpl, public BaseHandler -{ - friend class DocIterator; - public: - virtual void startDoc(const QXmlAttributes& attrib); - virtual void endDoc(); - virtual void startParagraph(const QXmlAttributes& attrib); - virtual void startSect1(const QXmlAttributes& attrib); - virtual void startTitle(const QXmlAttributes& attrib); - virtual void startInternal(const QXmlAttributes& attrib); - - DocHandler(IBaseHandler *parent); - virtual ~DocHandler(); - - // IDocRoot - virtual Kind kind() const { return DocImpl::Root; } - virtual IDocIterator *contents() const; - virtual IDocInternal *internal() const; - - private: - IBaseHandler *m_parent; - QList m_children; - DocInternalHandler *m_internal; -}; - -class DocIterator : public BaseIteratorVia -{ - public: - DocIterator(const DocHandler &handler) : - BaseIteratorVia(handler.m_children) {} -}; - -//----------------------------------------------------------------------------- - -void dochandler_init(); -void dochandler_exit(); - -#endif diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h deleted file mode 100644 index 79dc763..0000000 --- a/addon/doxmlparser/src/doxmlintf.h +++ /dev/null @@ -1,1101 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _DOXMLINTF_H -#define _DOXMLINTF_H - -/*! \file - * \brief The interface to the object model provided by the XML parser - * library. - * - * To start using this library one calls createObjectModel() and then - * uses the returned IDoxygen interface to read doxygen generated - * XML output and navigate through the information contained in it. - * - * @see createObjectModel() - */ - -class IMember; -class IDocIterator; -class ICompound; -class ISection; -class INode; -class IDocInternal; -class IDocRoot; - -/*! \brief Read only interface to a string. - */ -class IString -{ - public: - /*! Returns a latin1 character representation of the string. */ - virtual const char *latin1() const = 0; - /*! Returns a 16-bit unicode character representation of the character at - * position \a index in the string. The first character is at index 0. - */ - virtual unsigned short unicodeCharAt(int index) const = 0; - /*! Returns true if this string is empty or false otherwise */ - virtual bool isEmpty() const = 0; - /*! Returns the number of characters in the string. */ - virtual int length() const = 0; -}; - -/*! \brief Base interface for hyperlinked text - * - * Depending on the result of kind() the interface is extended by - * ILT_Text or ILT_Ref. - */ -class ILinkedText -{ - public: - enum Kind { Kind_Text, Kind_Ref }; - virtual Kind kind() const = 0; -}; - -/*! \brief Plain text fragment. - */ -class ILT_Text : public ILinkedText -{ - public: - virtual const IString *text() const = 0; -}; - -/*! \brief Reference to an object. - */ -class ILT_Ref : public ILinkedText -{ - public: - enum TargetKind { Member, Compound }; - virtual const IString *id() const = 0; - virtual TargetKind targetKind() const = 0; - virtual const IString *external() const = 0; - virtual const IString *text() const = 0; -}; - -/*! \brief Iterates over a list of ILinkedText fragments. - */ -class ILinkedTextIterator -{ - public: - virtual ILinkedText *toFirst() = 0; - virtual ILinkedText *toLast() = 0; - virtual ILinkedText *toNext() = 0; - virtual ILinkedText *toPrev() = 0; - virtual ILinkedText *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief Representation of a parameter of a function. */ -class IParam -{ - public: - virtual ILinkedTextIterator *type() const = 0; - virtual const IString * declarationName() const = 0; - virtual const IString * definitionName() const = 0; - virtual const IString * attrib() const = 0; - virtual const IString * arraySpecifier() const = 0; - virtual ILinkedTextIterator *defaultValue() const = 0; - virtual IDocRoot *briefDescription() const = 0; -}; - -class IParamIterator -{ - public: - virtual IParam *toFirst() = 0; - virtual IParam *toLast() = 0; - virtual IParam *toNext() = 0; - virtual IParam *toPrev() = 0; - virtual IParam *current() const = 0; - virtual void release() = 0; -}; - -class IMemberReference -{ - public: - virtual IMember *member() const = 0; - virtual const IString * name() const = 0; - virtual const IString * scope() const = 0; - virtual const IString * protection() const = 0; - virtual const IString * virtualness() const = 0; - virtual const IString * ambiguityScope() const = 0; -}; - -class IMemberReferenceIterator -{ - public: - virtual IMemberReference *toFirst() = 0; - virtual IMemberReference *toLast() = 0; - virtual IMemberReference *toNext() = 0; - virtual IMemberReference *toPrev() = 0; - virtual IMemberReference *current() const = 0; - virtual void release() = 0; -}; - -class IDoc -{ - public: - enum Kind - { - Invalid = 0, // 0 - Para, // 1 -> IDocPara - Text, // 2 -> IDocText - MarkupModifier, // 3 -> IDocMarkupModifier - ItemizedList, // 4 -> IDocItemizedList - OrderedList, // 5 -> IDocOrderedList - ListItem, // 6 -> IDocListItem - ParameterList, // 7 -> IDocParameterList - Parameter, // 8 -> IDocParameter - SimpleSect, // 9 -> IDocSimpleSect - Title, // 10 -> IDocTitle - Ref, // 11 -> IDocRef - VariableList, // 12 -> IDocVariableList - VariableListEntry, // 13 -> IDocVariableListEntry - HRuler, // 14 -> IDocHRuler - LineBreak, // 15 -> IDocLineBreak - ULink, // 16 -> IDocULink - EMail, // 17 -> IDocEMail - Link, // 18 -> IDocLink - ProgramListing, // 19 -> IDocProgramListing - CodeLine, // 20 -> IDocCodeLine - Highlight, // 21 -> IDocHighlight - Formula, // 22 -> IDocFormula - Image, // 23 -> IDocImage - DotFile, // 24 -> IDocDotFile - IndexEntry, // 25 -> IDocIndexEntry - Table, // 26 -> IDocTable - Row, // 27 -> IDocRow - Entry, // 28 -> IDocEntry - Section, // 29 -> IDocSection - Verbatim, // 30 -> IDocVerbatim - Copy, // 31 -> IDocCopy - TocList, // 32 -> IDocTocList - TocItem, // 33 -> IDocTocItem - Anchor, // 34 -> IDocAnchor - Symbol, // 35 -> IDocSymbol - Internal, // 36 -> IDocInternal - Root, // 37 -> IDocRoot - ParameterItem // 38 -> IDocParameterItem - }; - virtual Kind kind() const = 0; -}; - -class IDocMarkup : public IDoc -{ - public: - enum Markup - { - Normal = 0x000, - Bold = 0x001, - Emphasis = 0x002, - ComputerOutput = 0x004, - Subscript = 0x008, - Superscript = 0x010, - SmallFont = 0x020, - Center = 0x040, - Preformatted = 0x080, - Heading = 0x100 - }; -}; - -class IDocPara : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocText : public IDocMarkup -{ - public: - virtual const IString * text() const = 0; - virtual int markup() const = 0; - virtual int headingLevel() const = 0; -}; - -class IDocMarkupModifier : public IDoc -{ - public: - virtual bool enabled() const = 0; - virtual int markup() const = 0; - virtual int headingLevel() const = 0; -}; - -class IDocItemizedList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocOrderedList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocListItem : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocParameterList : public IDoc -{ - public: - enum Types { Param, RetVal, Exception }; - virtual Types sectType() const = 0; - virtual IDocIterator *params() const = 0; -}; - -class IDocParameterItem : public IDoc -{ - public: - virtual IDocIterator *paramNames() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocParameter : public IDoc -{ - public: - virtual const IString * name() const = 0; -}; - -class IDocTitle : public IDoc -{ - public: - virtual IDocIterator *title() const = 0; -}; - -class IDocSimpleSect : public IDoc -{ - public: - enum Types { Invalid = 0, - See, Return, Author, Version, - Since, Date, Bug, Note, - Warning, Par, Deprecated, Pre, - Post, Invar, Remark, Attention, - Todo, Test, RCS, EnumValues, - Examples - }; - virtual Types type() const = 0; - virtual const IString * typeString() const = 0; - virtual IDocTitle *title() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocRef : public IDoc -{ - public: - enum TargetKind { Member, Compound }; - virtual const IString * refId() const = 0; - virtual TargetKind targetKind() const = 0; - virtual const IString * external() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocVariableList : public IDoc -{ - public: - virtual IDocIterator *entries() const = 0; -}; - -class IDocVariableListEntry : public IDoc -{ - public: - virtual ILinkedTextIterator * term() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocHRuler : public IDoc -{ -}; - -class IDocLineBreak : public IDoc -{ -}; - -class IDocULink : public IDoc -{ - public: - virtual const IString * url() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocEMail : public IDoc -{ - public: - virtual const IString * address() const = 0; -}; - -class IDocLink : public IDoc -{ - public: - virtual const IString * refId() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocProgramListing : public IDoc -{ - public: - virtual IDocIterator *codeLines() const = 0; -}; - -class IDocCodeLine : public IDoc -{ - public: - virtual int lineNumber() const = 0; - virtual const IString * refId() const = 0; - virtual IDocIterator *codeElements() const = 0; -}; - -class IDocHighlight : public IDoc -{ - public: - enum HighlightKind - { Invalid=0, - Comment, Keyword, - KeywordType, KeywordFlow, CharLiteral, - StringLiteral, Preprocessor - }; - virtual HighlightKind highlightKind() const = 0; - virtual IDocIterator *codeElements() const = 0; -}; - -class IDocFormula : public IDoc -{ - public: - virtual const IString * id() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocImage : public IDoc -{ - public: - virtual const IString * name() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocDotFile : public IDoc -{ - public: - virtual const IString * name() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocIndexEntry : public IDoc -{ - public: - virtual const IString * primary() const = 0; - virtual const IString * secondary() const = 0; -}; - -class IDocTable : public IDoc -{ - public: - virtual IDocIterator *rows() const = 0; - virtual int numColumns() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocRow : public IDoc -{ - public: - virtual IDocIterator *entries() const = 0; -}; - -class IDocEntry : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocSection : public IDoc -{ - public: - virtual const IString * id() const = 0; - virtual int level() const = 0; - virtual IDocTitle *title() const = 0; - virtual IDocIterator *paragraphs() const = 0; - virtual IDocIterator *subSections() const = 0; - virtual IDocInternal *internal() const = 0; -}; - -class IDocInternal : public IDoc -{ - public: - virtual IDocIterator *paragraphs() const = 0; - virtual IDocIterator *subSections() const = 0; -}; - -class IDocTocList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocTocItem : public IDoc -{ - public: - virtual const IString *id() const = 0; - virtual const IString *title() const = 0; -}; - -class IDocCopy : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocVerbatim : public IDoc -{ - public: - enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim }; - virtual const IString *text() const = 0; - virtual Types type() const = 0; -}; - -class IDocAnchor : public IDoc -{ - public: - virtual const IString *id() const = 0; -}; - -class IDocSymbol : public IDoc -{ - public: - enum Types - { Invalid = 0, - Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy - }; - virtual Types type() const = 0; - virtual const IString * typeString() const = 0; - virtual char letter() const = 0; -}; - -class IDocRoot : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; - virtual IDocInternal *internal() const = 0; -}; - -class IDocIterator -{ - public: - virtual IDoc *toFirst() = 0; - virtual IDoc *toLast() = 0; - virtual IDoc *toNext() = 0; - virtual IDoc *toPrev() = 0; - virtual IDoc *current() const = 0; - virtual void release() = 0; -}; - -class IEdgeLabel -{ - public: - virtual const IString * label() const = 0; -}; - -class IEdgeLabelIterator -{ - public: - virtual IEdgeLabel *toFirst() = 0; - virtual IEdgeLabel *toLast() = 0; - virtual IEdgeLabel *toNext() = 0; - virtual IEdgeLabel *toPrev() = 0; - virtual IEdgeLabel *current() const = 0; - virtual void release() = 0; -}; - -class IChildNode -{ - public: - enum NodeRelation { PublicInheritance, ProtectedInheritance, - PrivateInheritance, Usage, TemplateInstance - }; - virtual INode * node() const = 0; - virtual NodeRelation relation() const = 0; - virtual const IString * relationString() const = 0; - virtual IEdgeLabelIterator *edgeLabels() const = 0; -}; - -class IChildNodeIterator -{ - public: - virtual IChildNode *toFirst() = 0; - virtual IChildNode *toLast() = 0; - virtual IChildNode *toNext() = 0; - virtual IChildNode *toPrev() = 0; - virtual IChildNode *current() const = 0; - virtual void release() = 0; -}; - -class INode -{ - public: - virtual const IString * id() const = 0; - virtual const IString * label() const = 0; - virtual const IString * linkId() const = 0; - virtual IChildNodeIterator *children() const = 0; -}; - -class INodeIterator -{ - public: - virtual INode *toFirst() = 0; - virtual INode *toLast() = 0; - virtual INode *toNext() = 0; - virtual INode *toPrev() = 0; - virtual INode *current() const = 0; - virtual void release() = 0; -}; - -class IGraph -{ - public: - virtual INodeIterator *nodes() const = 0; -}; - -class IMember -{ - public: - enum MemberKind { Invalid=0, - Define, Property, Variable, Typedef, Enum, - Function, Signal, Prototype, Friend, DCOP, Slot, - EnumValue - }; - virtual ICompound *compound() const = 0; - virtual ISection *section() const = 0; - virtual MemberKind kind() const = 0; - virtual const IString * kindString() const = 0; - virtual const IString * id() const = 0; - virtual const IString * protection() const = 0; - virtual const IString * virtualness() const = 0; - virtual ILinkedTextIterator *type() const = 0; - virtual const IString * typeString() const = 0; - virtual const IString * name() const = 0; - virtual const IString * readAccessor() const = 0; - virtual const IString * writeAccessor() const = 0; - virtual const IString * definition() const = 0; - virtual const IString * argsstring() const = 0; - virtual bool isConst() const = 0; - virtual bool isVolatile() const = 0; - virtual bool isStatic() const = 0; - virtual bool isExplicit() const = 0; - virtual bool isInline() const = 0; - virtual bool isMutable() const = 0; - virtual bool isReadable() const = 0; - virtual bool isWritable() const = 0; - virtual IParamIterator *parameters() const = 0; - virtual IParamIterator *templateParameters() const = 0; - virtual ILinkedTextIterator *initializer() const = 0; - virtual ILinkedTextIterator *exceptions() const = 0; - virtual IMemberReferenceIterator *references() const = 0; - virtual IMemberReferenceIterator *referencedBy() const = 0; - virtual const IString *bodyFile() const = 0; - virtual int bodyStart() const = 0; - virtual int bodyEnd() const = 0; - virtual const IString * definitionFile() const = 0; - virtual int definitionLine() const = 0; - virtual IMemberReference *reimplements() const = 0; - virtual IMemberReferenceIterator *reimplementedBy() const = 0; - virtual IDocRoot *briefDescription() const = 0; - virtual IDocRoot *detailedDescription() const = 0; - virtual IDocRoot *inbodyDescription() const = 0; -}; - -class IDefine : public IMember -{ - public: -}; - -class IProperty : public IMember -{ - public: -}; - -class IVariable : public IMember -{ - public: -}; - -class ITypedef : public IMember -{ - public: -}; - -class IFunction : public IMember -{ - public: -}; - -class ISignal : public IMember -{ - public: -}; - -class IPrototype : public IMember -{ - public: -}; - -class IFriend : public IMember -{ - public: -}; - -class IDCOP : public IMember -{ - public: -}; - -class ISlot : public IMember -{ - public: -}; - -class IEnumValue : public IMember -{ - public: - virtual const IString * name() const = 0; -}; - -/*! \brief Include relation - */ -class IInclude -{ - public: - virtual const IString * name() const = 0; - virtual const IString * refId() const = 0; - virtual bool isLocal() const = 0; -}; - -class IIncludeIterator -{ - public: - virtual IInclude *toFirst() = 0; - virtual IInclude *toLast() = 0; - virtual IInclude *toNext() = 0; - virtual IInclude *toPrev() = 0; - virtual IInclude *current() const = 0; - virtual void release() = 0; -}; - -class IMemberIterator -{ - public: - virtual IMember *toFirst() = 0; - virtual IMember *toLast() = 0; - virtual IMember *toNext() = 0; - virtual IMember *toPrev() = 0; - virtual IMember *current() const = 0; - virtual void release() = 0; -}; - -class IEnum : public IMember -{ - public: - virtual IMemberIterator *enumValues() const = 0; -}; - -/*! \brief The interface to a section in the object model. - * - * A compound can have a number of sections, where each - * section contains a set of members with the properties implied by - * the section kind. The kind() method returns the kind of the section. - * The members of the section can be accessed via members(). Apart - * from using kind(), some of the individual properties of the section can - * also be inspected via isStatic(), isPublic(), isProtected() and - * isPrivate(). - */ -class ISection -{ - public: - /*! Possible section types */ - enum SectionKind - { Invalid=0, - UserDefined, //!< A user defined member group - PubTypes, //!< Public member typedefs - PubFuncs, //!< Public member functions - PubAttribs, //!< Public member attributes - PubSlots, //!< Public Qt Slots - Signals, //!< Qt Signals - DCOPFuncs, //!< KDE-DCOP interface functions - Properties, //!< IDL properties - Events, //!< C# events - PubStatFuncs, //!< Public static member functions - PubStatAttribs, //!< Public static attributes - ProTypes, //!< Protected member typedefs - ProFuncs, //!< Protected member functions - ProAttribs, //!< Protected member attributes - ProSlots, //!< Protected slots - ProStatFuncs, //!< Protected static member functions - ProStatAttribs, //!< Protected static member attributes - PacTypes, //!< Package member typedefs - PacFuncs, //!< Package member functions - PacAttribs, //!< Package member attributes - PacStatFuncs, //!< Package static member functions - PacStatAttribs, //!< Package static member attributes - PriTypes, //!< Private member typedefs - PriFuncs, //!< Private member functions - PriAttribs, //!< Private member attributes - PriSlots, //!< Private Qt slots - PriStatFuncs, //!< Private static member functions - PriStatAttribs, //!< Private static member attributes - Friend, //!< Friends - Related, //!< Function marked as related - Defines, //!< Preprocessor defines - Prototypes, //!< Global function prototypes - Typedefs, //!< Global typedefs - Enums, //!< Enumerations - Functions, //!< Global functions - Variables //!< Global variables - }; - - /*! Returns a string representation of the value returned by kind() */ - virtual const IString * kindString() const = 0; - - /*! Returns what kind of section this is */ - virtual SectionKind kind() const = 0; - - /*! Returns the description attached to this section (for user defined - * sections, also known as member groups). - */ - virtual IDocRoot *description() const = 0; - - /*! Returns an iterator for the members of this section */ - virtual IMemberIterator *members() const = 0; - - /*! Returns \c true if this section contains statics */ - virtual bool isStatic() const = 0; - - /*! Returns \c true if this section belongs to a - * public section of a class - */ - virtual bool isPublic() const = 0; - - /*! Returns \c true if this section belongs to a - * private section of a class - */ - virtual bool isPrivate() const = 0; - - /*! Returns \c true if this section belongs to a - * protected section of a class - * */ - virtual bool isProtected() const = 0; -}; - -class IUserDefined : public ISection -{ - public: - virtual const IString * header() const = 0; -}; - -class ISectionIterator -{ - public: - virtual ISection *toFirst() = 0; - virtual ISection *toLast() = 0; - virtual ISection *toNext() = 0; - virtual ISection *toPrev() = 0; - virtual ISection *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief The interface to a compound in the object model. - * - * A compound has a name which can be obtained via the name() method - * and a unique id, which is return via the id() method. - * A compound consists zero or more members which are grouped into sections. - * The sections() method can be used to access the individual sections. - * Alternatively, members can be obtained by name or id. There are - * different types of compounds. The kind() method returns what kind of - * compound this is. Depending on the return value one can dynamically - * cast an interface pointer to an more specialised interface that provides - * additional methods. - * Example: - * \code - * ICompound *comp=...; - * if (comp->kind()==ICompound::Class) - * { - * IClass *cls = dynamic_cast(comp); - * // use methods of IClass - * } - * \endcode - * The documentation that is provided by a compound is available via - * the briefDescription() and detailedDescription() methods. - * To avoid excessive memory usage, release() should be called (once) on each - * compound interface pointer that is no longer needed. - */ -class ICompound -{ - public: - /*! Represents the kind of compounds recognised by doxygen. */ - enum CompoundKind { Invalid=0, - Class, Struct, Union, Interface, Protocol, Category, - Exception, File, Namespace, Group, Page, Example, Dir - }; - - /*! Returns the name of this compound */ - virtual const IString * name() const = 0; - - /*! Returns the id of this compound. The id is a - * unique string representing a specific compound object. - */ - virtual const IString * id() const = 0; - - /*! Returns the kind of compound. See #CompoundKind for possible - * values. - */ - virtual CompoundKind kind() const = 0; - - /*! Returns a string representation of the compound kind. - * @see kind() - */ - virtual const IString * kindString() const = 0; - - /*! Returns an iterator for the different member sections in this - * compound. - */ - virtual ISectionIterator *sections() const = 0; - - /*! Returns a tree-structured representation of the brief - * description that is attached to this compound. - */ - virtual IDocRoot *briefDescription() const = 0; - - /*! Returns a tree-structured representation of the detailed - * description that is attached to this compound. - */ - virtual IDocRoot *detailedDescription() const = 0; - - /*! Returns an interface to a member given its id. - * @param id The member id. - */ - virtual IMember *memberById(const char * id) const = 0; - - /*! Returns a list of all members within the compound having a certain - * name. Member overloading is the reason why there can be more than - * one member. - * @param name The name of the member. - */ - virtual IMemberIterator *memberByName(const char * name) const = 0; - - /*! Decreases the reference counter for this compound. If it reaches - * zero, the memory for the compound will be released. - */ - virtual void release() = 0; -}; - -class ICompoundIterator -{ - public: - virtual void toFirst() = 0; - virtual void toLast() = 0; - virtual void toNext() = 0; - virtual void toPrev() = 0; - virtual ICompound *current() const = 0; - virtual void release() = 0; -}; - -class IRelatedCompound -{ - public: - enum Protection { Public, Protected, Private }; - enum Kind { Normal, Virtual }; - virtual ICompound *compound() const = 0; - virtual Protection protection() const = 0; - virtual Kind kind() const = 0; - virtual const IString *name() const = 0; - -}; - -class IRelatedCompoundIterator -{ - public: - virtual IRelatedCompound *toFirst() = 0; - virtual IRelatedCompound *toLast() = 0; - virtual IRelatedCompound *toNext() = 0; - virtual IRelatedCompound *toPrev() = 0; - virtual IRelatedCompound *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief The interface to a class in the object model. - */ -class IClass : public ICompound -{ - public: - virtual IGraph *inheritanceGraph() const = 0; - virtual IGraph *collaborationGraph() const = 0; - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; - virtual ICompoundIterator *nestedCompounds() const = 0; - virtual IParamIterator *templateParameters() const = 0; - virtual const IString *locationFile() const = 0; - virtual int locationLine() const = 0; - virtual const IString *locationBodyFile() const = 0; - virtual int locationBodyStartLine() const = 0; - virtual int locationBodyEndLine() const = 0; - - // TODO: - // class: - // listOfAllMembers() - // protection() - // isAbstract() -}; - -/*! \brief The interface to a struct in the object model. - */ -class IStruct : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; - virtual const IString *locationFile() const = 0; - virtual int locationLine() const = 0; - virtual int locationBodyStartLine() const = 0; - virtual int locationBodyEndLine() const = 0; -}; - -/*! \brief The interface to a union in the object model. - */ -class IUnion : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! \brief The interface to a Java/IDL interface in the object model. - */ -class IInterface : public ICompound -{ - public: - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; -}; - - -/*! \brief The interface to a Java/IDL exception in the object model. - */ -class IException : public ICompound -{ -}; - -/*! \brief The interface to a namespace in the object model. - */ -class INamespace : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! \brief The interface to a file in the object model. - */ -class IFile : public ICompound -{ - public: - virtual IGraph *includeDependencyGraph() const = 0; - virtual IGraph *includedByDependencyGraph() const = 0; - virtual IDocProgramListing *source() const = 0; - virtual ICompoundIterator *nestedCompounds() const = 0; - - virtual IIncludeIterator *includes() const = 0; - virtual IIncludeIterator *includedBy() const = 0; - - // ICompound *innerNamespaces() - // ICompoundIterator *innerClasses() -}; - -/*! \brief The interface to a group in the object model. - */ -class IGroup : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; - // group: - // Title() - // innerFile() - // innerPage() -}; - -/*! \brief The interface to a page in the object model. - */ -class IPage : public ICompound -{ - public: - virtual const IDocTitle *title() const = 0; -}; - -/*! Root node of the object model. */ -class IDoxygen -{ - public: - - /*! Returns an iterator that can be used to iterate over the list - * of compounds found in the project. - */ - virtual ICompoundIterator *compounds() const = 0; - - /*! Returns a compound given its unique \a id. If you have a - * compound id this function is much more efficient than iterating - * over the compound list. Returns 0 if the id is not valid. - */ - virtual ICompound *compoundById(const char * id) const = 0; - - /*! Returns a compound given its name (including the scope). - * Returns 0 if the name is not found in the project. - */ - virtual ICompound *compoundByName(const char * name) const = 0; - - /*! Returns an interface to a compound containing a member given it the - * member's id. Given the ICompound interface one can use the same id - * to obtain the IMember interface. - * @param id The member id. - */ - virtual ICompound *memberById(const char * id) const = 0; - - /*! Returns a list of all compounds containing at least one members - * with a certain name. Each compound can be asked to return the - * list of members with that name. - * @param name The name of the member. - */ - virtual ICompoundIterator *memberByName(const char * name) const = 0; - - /*! Releases the memory for the object hierarchy obtained by - * createdObjecModelFromXML(). First release all iterators before calling - * this function. - */ - virtual void release() = 0; - - /*! Sets the debug level. - * - 0 all debugging messages are disabled (the default). - * - 1 display important messages only - * - 2 display any messages. - */ - virtual void setDebugLevel(int level) = 0; - - /*! Reads an XML directory produced by doxygen and builds up a data - * structure representing the contents of the XML files in the directory. - */ - virtual bool readXMLDir(const char *xmlDirName) = 0; -}; - -/*! Factory method that creates an empty object model for a doxygen generated XML file. - * Use the readXMLDir() method to build the model from an XML output - * directory containing doxygen output. - */ -IDoxygen *createObjectModel(); - -#endif diff --git a/addon/doxmlparser/src/doxmlparser.pro.in b/addon/doxmlparser/src/doxmlparser.pro.in deleted file mode 100644 index 841a46c..0000000 --- a/addon/doxmlparser/src/doxmlparser.pro.in +++ /dev/null @@ -1,27 +0,0 @@ -TEMPLATE = lib.t -CONFIG = console staticlib warn_on $extraopts -HEADERS = basehandler.h mainhandler.h \ - compoundhandler.h sectionhandler.h \ - memberhandler.h paramhandler.h \ - dochandler.h linkedtexthandler.h \ - debug.h graphhandler.h stringimpl.h \ - loamhandler.h -SOURCES = mainhandler.cpp \ - compoundhandler.cpp sectionhandler.cpp \ - memberhandler.cpp paramhandler.cpp \ - dochandler.cpp linkedtexthandler.cpp \ - basehandler.cpp debug.cpp graphhandler.cpp \ - loamhandler.cpp -unix:LIBS += -L../../../lib -lqtools -win32:INCLUDEPATH += . -win32-mingw:LIBS += -L../../../lib -lqtools -win32-msvc:LIBS += qtools.lib shell32.lib -win32-msvc:TMAKE_LFLAGS += /LIBPATH:....\\..\lib -win32-borland:LIBS += qtools.lib doxycfg.lib shell32.lib -win32-borland:TMAKE_LFLAGS += -L..\..\..\lib -win32:TMAKE_CXXFLAGS += -DQT_NODLL -DESTDIR = ../lib -OBJECTS_DIR = ../objects -TARGET = doxmlparser -INCLUDEPATH += ../../../qtools ../include - diff --git a/addon/doxmlparser/src/graphhandler.cpp b/addon/doxmlparser/src/graphhandler.cpp deleted file mode 100644 index 7816970..0000000 --- a/addon/doxmlparser/src/graphhandler.cpp +++ /dev/null @@ -1,216 +0,0 @@ -#include "graphhandler.h" - -class EdgeRelationMapper -{ - public: - EdgeRelationMapper() - { - m_map.insert("public-inheritance", IChildNode::PublicInheritance); - m_map.insert("protected-inheritance", IChildNode::ProtectedInheritance); - m_map.insert("private-inheritance", IChildNode::PrivateInheritance); - m_map.insert("usage", IChildNode::Usage); - m_map.insert("template-instance", IChildNode::TemplateInstance); - } - IChildNode::NodeRelation stringToNodeRelation(const QString &nrStr) - { - return m_map[nrStr]; - } - private: - QMap m_map; -}; - -static EdgeRelationMapper *s_edgeRelationMapper; - -void graphhandler_init() -{ - s_edgeRelationMapper = new EdgeRelationMapper; -} - -void graphhandler_exit() -{ - delete s_edgeRelationMapper; -} - -//------------------------------------------------------------------------ - -GraphHandler::GraphHandler(IBaseHandler *parent,const char *endTag) - : m_parent(parent) -{ - addEndHandler(endTag,this,&GraphHandler::endGraph); - addStartHandler("node",this,&GraphHandler::startNode); - m_nodes.setAutoDelete(TRUE); - m_nodeDict = new QDict(1009); -} - -GraphHandler::~GraphHandler() -{ - delete m_nodeDict; -} - -void GraphHandler::startGraph(const QXmlAttributes &) -{ - debug(2,"startGraph\n"); - m_parent->setDelegate(this); -} - -void GraphHandler::endGraph() -{ - debug(2,"endGraph\n"); - m_parent->setDelegate(0); -} - -void GraphHandler::startNode(const QXmlAttributes &attrib) -{ - NodeHandler *n = new NodeHandler(this); - n->startNode(attrib); - m_nodes.append(n); - m_nodeDict->insert(attrib.value("id"),n); -} - -INodeIterator *GraphHandler::nodes() const -{ - return new NodeIterator(*this); -} - -NodeHandler *GraphHandler::getNodeById(const QString &id) const -{ - return m_nodeDict->find(id); -} - -//------------------------------------------------------------------------ - -NodeHandler::NodeHandler(GraphHandler *gh) - : m_parent(gh), m_graph(gh) -{ - addEndHandler("node",this,&NodeHandler::endNode); - addStartHandler("link",this,&NodeHandler::startLink); - addEndHandler("link",this,&NodeHandler::endLink); - addStartHandler("label",this,&NodeHandler::startLabel); - addEndHandler("label",this,&NodeHandler::endLabel); - addStartHandler("childnode",this,&NodeHandler::startChildNode); - m_children.setAutoDelete(TRUE); -} - -NodeHandler::~NodeHandler() -{ -} - -void NodeHandler::startNode(const QXmlAttributes &attrib) -{ - debug(2,"startNode\n"); - m_parent->setDelegate(this); - m_id = attrib.value("id"); -} - -void NodeHandler::endNode() -{ - debug(2,"endNode\n"); - m_parent->setDelegate(0); -} - -void NodeHandler::startLink(const QXmlAttributes &attrib) -{ - m_link = attrib.value("refid"); -} - -void NodeHandler::endLink() -{ -} - -void NodeHandler::startLabel(const QXmlAttributes &/*attrib*/) -{ - m_curString=""; -} - -void NodeHandler::endLabel() -{ - m_label = m_curString; -} - -void NodeHandler::startChildNode(const QXmlAttributes &attrib) -{ - ChildNodeHandler *cnh = new ChildNodeHandler(this,m_graph); - cnh->startChildNode(attrib); - m_children.append(cnh); -} - -IChildNodeIterator *NodeHandler::children() const -{ - return new ChildNodeIterator(*this); -} - -//------------------------------------------------------------------------ - -ChildNodeHandler::ChildNodeHandler(IBaseHandler *parent,GraphHandler *gh) - : m_parent(parent), m_graph(gh) -{ - addEndHandler("childnode",this,&ChildNodeHandler::endChildNode); - addStartHandler("edgelabel",this,&ChildNodeHandler::startEdgeLabel); - m_edgeLabels.setAutoDelete(TRUE); -} - -ChildNodeHandler::~ChildNodeHandler() -{ -} - -void ChildNodeHandler::startChildNode(const QXmlAttributes &attrib) -{ - debug(2,"startChildNode\n"); - m_id = attrib.value("refid"); - m_relationString = attrib.value("relation"); - m_relation = s_edgeRelationMapper->stringToNodeRelation(m_relationString); - m_parent->setDelegate(this); -} - -void ChildNodeHandler::endChildNode() -{ - debug(2,"endChildNode\n"); - m_parent->setDelegate(0); -} - - -void ChildNodeHandler::startEdgeLabel(const QXmlAttributes &attrib) -{ - EdgeLabelHandler *elh = new EdgeLabelHandler(this); - elh->startEdgeLabel(attrib); - m_edgeLabels.append(elh); -} - -IEdgeLabelIterator *ChildNodeHandler::edgeLabels() const -{ - return new EdgeLabelIterator(*this); -} - -INode *ChildNodeHandler::node() const -{ - return m_graph->getNodeById(m_id); -} - -//----------------------------------------------------------------------- - -EdgeLabelHandler::EdgeLabelHandler(IBaseHandler *parent) - : m_parent(parent) -{ - addEndHandler("edgelabel",this,&EdgeLabelHandler::endEdgeLabel); -} - -EdgeLabelHandler::~EdgeLabelHandler() -{ -} - -void EdgeLabelHandler::startEdgeLabel(const QXmlAttributes &) -{ - m_parent->setDelegate(this); - m_curString=""; -} - -void EdgeLabelHandler::endEdgeLabel() -{ - m_label=m_curString; - m_parent->setDelegate(0); -} - - - - - diff --git a/addon/doxmlparser/src/graphhandler.h b/addon/doxmlparser/src/graphhandler.h deleted file mode 100644 index 24a33d3..0000000 --- a/addon/doxmlparser/src/graphhandler.h +++ /dev/null @@ -1,154 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _GRAPHHANDLER_H -#define _GRAPHHANDLER_H - -#include "stringimpl.h" -#include "doxmlintf.h" -#include "basehandler.h" -#include "baseiterator.h" - -class NodeHandler; -class ChildNodeHandler; -class EdgeLabelHandler; - -class GraphHandler : public IGraph, public BaseHandler -{ - friend class NodeIterator; - public: - GraphHandler(IBaseHandler *parent,const char *endTag); - virtual ~GraphHandler(); - - void startGraph(const QXmlAttributes &attrib); - void endGraph(); - void startNode(const QXmlAttributes &attrib); - NodeHandler *getNodeById(const QString &id) const; - - // IGraph - virtual INodeIterator *nodes() const; - - private: - IBaseHandler *m_parent; - QList m_nodes; - QDict *m_nodeDict; -}; - -//---------------------------------------------------------------------- - -class NodeHandler : public INode, public BaseHandler -{ - friend class ChildNodeIterator; - public: - NodeHandler(GraphHandler *gh); - virtual ~NodeHandler(); - - void startNode(const QXmlAttributes &attrib); - void endNode(); - void startLabel(const QXmlAttributes &attrib); - void endLabel(); - void startLink(const QXmlAttributes &attrib); - void endLink(); - void startChildNode(const QXmlAttributes &attrib); - - // INode - virtual const IString *id() const { return &m_id; } - virtual const IString *label() const { return &m_label; } - virtual const IString *linkId() const { return &m_link; } - virtual IChildNodeIterator *children() const; - - private: - IBaseHandler *m_parent; - StringImpl m_id; - StringImpl m_label; - StringImpl m_link; - QList m_children; - GraphHandler *m_graph; -}; - -class NodeIterator : public BaseIterator -{ - public: - NodeIterator(const GraphHandler &handler) : - BaseIterator(handler.m_nodes) {} -}; - -//---------------------------------------------------------------------- - -class ChildNodeHandler : public IChildNode, public BaseHandler -{ - friend class EdgeLabelIterator; - public: - ChildNodeHandler(IBaseHandler *parent,GraphHandler *gh); - virtual ~ChildNodeHandler(); - - void startChildNode(const QXmlAttributes &attrib); - void endChildNode(); - void startEdgeLabel(const QXmlAttributes &attrib); - - // IChildNode - virtual INode *node() const; - virtual NodeRelation relation() const { return m_relation; } - virtual const IString * relationString() const { return &m_relationString; } - virtual IEdgeLabelIterator *edgeLabels() const; - - private: - IBaseHandler *m_parent; - QString m_id; - NodeRelation m_relation; - StringImpl m_relationString; - QList m_edgeLabels; - GraphHandler *m_graph; -}; - -class ChildNodeIterator : public BaseIterator -{ - public: - ChildNodeIterator(const NodeHandler &handler) : - BaseIterator(handler.m_children) {} -}; - -//---------------------------------------------------------------------- - -class EdgeLabelHandler : public IEdgeLabel, public BaseHandler -{ - friend class EdgeLabelIterator; - public: - EdgeLabelHandler(IBaseHandler *parent); - virtual ~EdgeLabelHandler(); - - void startEdgeLabel(const QXmlAttributes &attrib); - void endEdgeLabel(); - - // IEdgeLabel - virtual const IString *label() const { return &m_label; } - - private: - IBaseHandler *m_parent; - StringImpl m_label; -}; - -class EdgeLabelIterator : public BaseIterator -{ - public: - EdgeLabelIterator(const ChildNodeHandler &handler) : - BaseIterator(handler.m_edgeLabels) {} -}; - -void graphhandler_init(); -void graphhandler_exit(); - -#endif - diff --git a/addon/doxmlparser/src/linkedtexthandler.cpp b/addon/doxmlparser/src/linkedtexthandler.cpp deleted file mode 100644 index d27adcc..0000000 --- a/addon/doxmlparser/src/linkedtexthandler.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ -#include "linkedtexthandler.h" -#include "debug.h" -#include -#include "stringimpl.h" - -class LT_Text : public LinkedTextImpl, public ILT_Text -{ - public: - LT_Text(const QString &text) : m_text(text) {} - virtual ~LT_Text() {} - - // ILT_Text - virtual const IString *text() const { return &m_text; } - virtual Kind kind() const { return LinkedTextImpl::Kind_Text; } - private: - StringImpl m_text; -}; - -class LT_Ref : public LinkedTextImpl, public ILT_Ref -{ - public: - LT_Ref() {} - virtual ~LT_Ref() {} - void setRefId(const QString &refId) { m_refId=refId; } - void setText(const QString &text) { m_text=text; } - void setExtId(const QString &extId) { m_extId=extId; } - void setTargetKind(TargetKind k) { m_targetKind=k; } - - // ILT_Ref - virtual const IString *text() const { return &m_text; } - virtual const IString * id() const { return &m_refId; } - virtual TargetKind targetKind() const { return m_targetKind; } - virtual const IString *external() const { return &m_extId; } - virtual Kind kind() const { return LinkedTextImpl::Kind_Ref; } - - private: - StringImpl m_refId; - StringImpl m_extId; - StringImpl m_text; - TargetKind m_targetKind; -}; - -LinkedTextHandler::LinkedTextHandler(IBaseHandler *parent, - QList &children - ) - : m_parent(parent), m_children(children) -{ - addStartHandler("ref",this,&LinkedTextHandler::startRef); - addEndHandler("ref",this,&LinkedTextHandler::endRef); - m_children.setAutoDelete(TRUE); - m_ref=0; -} - -LinkedTextHandler::~LinkedTextHandler() -{ -} - -void LinkedTextHandler::start(const char *endTag) -{ - addEndHandler(endTag,this,&LinkedTextHandler::end); - m_parent->setDelegate(this); - m_curString=""; -} - -void LinkedTextHandler::end() -{ - if (!m_curString.isEmpty()) - { - m_children.append(new LT_Text(m_curString)); - debug(2,"LinkedTextHandler: add text `%s'\n",m_curString.data()); - m_curString=""; - } - m_parent->setDelegate(0); -} - -void LinkedTextHandler::startRef(const QXmlAttributes& attrib) -{ - if (!m_curString.isEmpty()) - { - m_children.append(new LT_Text(m_curString)); - debug(2,"LinkedTextHandler: add text `%s'\n",m_curString.data()); - m_curString=""; - } - ASSERT(m_ref==0); - m_ref = new LT_Ref; - m_ref->setRefId(attrib.value("refid")); - m_ref->setExtId(attrib.value("external")); - ASSERT(attrib.value("kindref")=="compound" || attrib.value("kindref")=="member"); - m_ref->setTargetKind(attrib.value("kindref")=="compound" ? ILT_Ref::Compound : ILT_Ref::Member); -} - -void LinkedTextHandler::endRef() -{ - m_ref->setText(m_curString); - m_children.append(m_ref); - debug(2,"LinkedTextHandler: add ref `%s'\n",m_ref->text()->latin1()); - m_ref=0; -} - -QString LinkedTextHandler::toString(const QList &list) -{ - QListIterator li(list); - QString result; - LinkedTextImpl *lt; - for (li.toFirst();(lt=li.current());++li) - { - switch(lt->kind()) - { - case ILinkedText::Kind_Text: - result+=dynamic_cast(lt)->text()->latin1(); - break; - case ILinkedText::Kind_Ref: - result+=dynamic_cast(lt)->text()->latin1(); - break; - } - } - return result; -} - diff --git a/addon/doxmlparser/src/linkedtexthandler.h b/addon/doxmlparser/src/linkedtexthandler.h deleted file mode 100644 index 01dbf4a..0000000 --- a/addon/doxmlparser/src/linkedtexthandler.h +++ /dev/null @@ -1,54 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ -#ifndef LINKEDTEXTHANDLER_H -#define LINKEDTEXTHANDLER_H - -#include "baseiterator.h" -#include "basehandler.h" - -class LT_Ref; -class LinkedTextImpl : public ILinkedText -{ - public: - virtual ~LinkedTextImpl() {} -}; - -class LinkedTextHandler : public BaseHandler -{ - public: - LinkedTextHandler(IBaseHandler *parent,QList &children); - virtual ~LinkedTextHandler(); - virtual void start(const char *endTag); - virtual void end(); - virtual void startRef(const QXmlAttributes& attrib); - virtual void endRef(); - static QString toString(const QList &list); - - // ILinkedText - - private: - IBaseHandler *m_parent; - QList &m_children; - LT_Ref *m_ref; -}; - -class LinkedTextIterator : public BaseIterator -{ - public: - LinkedTextIterator(const QList &list) : - BaseIterator(list) {} -}; - -#endif diff --git a/addon/doxmlparser/src/loamhandler.cpp b/addon/doxmlparser/src/loamhandler.cpp deleted file mode 100644 index a939b7b..0000000 --- a/addon/doxmlparser/src/loamhandler.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "loamhandler.h" -#include "memberhandler.h" - - -ListOfAllMembersHandler::ListOfAllMembersHandler(IBaseHandler *parent) : m_parent(parent) -{ - m_members.setAutoDelete(TRUE); - - addStartHandler("member",this,&ListOfAllMembersHandler::startMember); - addStartHandler("name",this,&ListOfAllMembersHandler::startName); - addEndHandler("name",this,&ListOfAllMembersHandler::endName); - addStartHandler("scope",this,&ListOfAllMembersHandler::startScope); - addEndHandler("scope",this,&ListOfAllMembersHandler::endScope); - - addEndHandler("listofallmembers",this,&ListOfAllMembersHandler::endListOfAllMembers); -} - -void ListOfAllMembersHandler::initialize(MainHandler *mh) -{ - QListIterator mli(m_members); - MemberReference *mr; - for (;(mr=mli.current());++mli) - { - mr->initialize(mh); - } -} - -void ListOfAllMembersHandler::startMember(const QXmlAttributes& attrib) -{ - MemberReference *mr = new MemberReference; - mr->m_memId = attrib.value("refid"); - mr->m_virtualness = attrib.value("virt"); - mr->m_protection = attrib.value("prot"); - mr->m_ambiguityScope = attrib.value("ambiguityscope"); - m_members.append(new MemberReference); -} - -void ListOfAllMembersHandler::startName(const QXmlAttributes&) -{ - m_curString=""; -} - -void ListOfAllMembersHandler::endName() -{ - ASSERT(m_members.getLast()); - m_members.getLast()->m_name = m_curString; -} - -void ListOfAllMembersHandler::startScope(const QXmlAttributes&) -{ - m_curString=""; -} - -void ListOfAllMembersHandler::endScope() -{ - ASSERT(m_members.getLast()); - m_members.getLast()->m_scope = m_curString; -} - -void ListOfAllMembersHandler::startListOfAllMembers(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"listofallmembers start\n"); -} - -void ListOfAllMembersHandler::endListOfAllMembers() -{ - m_parent->setDelegate(0); - debug(2,"listofallmembers end\n"); -} - -IMemberReferenceIterator *ListOfAllMembersHandler::members() const -{ - return new MemberReferenceIterator(m_members); -} diff --git a/addon/doxmlparser/src/loamhandler.h b/addon/doxmlparser/src/loamhandler.h deleted file mode 100644 index 2cff8d4..0000000 --- a/addon/doxmlparser/src/loamhandler.h +++ /dev/null @@ -1,52 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _LOAMHANDLER_H -#define _LOAMHANDLER_H - -#include -#include -#include - -#include "basehandler.h" - -class MainHandler; -class MemberReference; - -class ListOfAllMembersHandler : public BaseHandler -{ - public: - virtual void startMember(const QXmlAttributes& attrib); - virtual void startName(const QXmlAttributes& attrib); - virtual void endName(); - virtual void startScope(const QXmlAttributes& attrib); - virtual void endScope(); - virtual void startListOfAllMembers(const QXmlAttributes& attrib); - virtual void endListOfAllMembers(); - - ListOfAllMembersHandler(IBaseHandler *parent); - virtual ~ListOfAllMembersHandler() {} - - void initialize(MainHandler *mh); - - virtual IMemberReferenceIterator *members() const; - - protected: - IBaseHandler *m_parent; - QList m_members; -}; - -#endif - diff --git a/addon/doxmlparser/src/mainhandler.cpp b/addon/doxmlparser/src/mainhandler.cpp deleted file mode 100644 index a0a1b07..0000000 --- a/addon/doxmlparser/src/mainhandler.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include -#include "mainhandler.h" -#include "compoundhandler.h" -#include "sectionhandler.h" -#include "graphhandler.h" -#include "dochandler.h" -#include "memberhandler.h" -#include "debug.h" - - -class ErrorHandler : public QXmlErrorHandler -{ - public: - virtual ~ErrorHandler() {} - bool warning( const QXmlParseException & ) - { - return FALSE; - } - bool error( const QXmlParseException & ) - { - return FALSE; - } - bool fatalError( const QXmlParseException &exception ) - { - debug(1,"Fatal error at line %d column %d: %s\n", - exception.lineNumber(),exception.columnNumber(), - exception.message().data()); - return FALSE; - } - QString errorString() { return ""; } - - private: - QString errorMsg; -}; - -//-------------------------------------------------------------------------- - -class CompoundEntryIterator : public ICompoundIterator, - public QListIterator -{ - public: - CompoundEntryIterator(const MainHandler *m,const QList &list) : - QListIterator(list), m_mainHandler(m) {} - virtual ~CompoundEntryIterator() {} - - virtual void toFirst() - { - QListIterator::toFirst(); - } - virtual void toLast() - { - QListIterator::toLast(); - } - virtual void toNext() - { - QListIterator::operator++(); - } - virtual void toPrev() - { - QListIterator::operator--(); - } - virtual ICompound *current() const - { - CompoundEntry *ch = QListIterator::current(); - return ch ? m_mainHandler->compoundById(ch->id) : 0; - } - virtual void release() - { delete this; } - - private: - const MainHandler *m_mainHandler; -}; - -//-------------------------------------------------------------------------- - -MainHandler::MainHandler() : m_compoundDict(2999), m_compoundNameDict(2999), - m_memberDict(12251), m_memberNameDict(12251), - m_compoundsLoaded(1009) -{ - m_compounds.setAutoDelete(TRUE); - m_memberNameDict.setAutoDelete(TRUE); - addStartHandler("doxygenindex"); - addEndHandler("doxygenindex"); - addStartHandler("compound",this,&MainHandler::startCompound); - addEndHandler("compound"); - addStartHandler("member",this,&MainHandler::startMember); - addEndHandler("member",this,&MainHandler::endMember); - addStartHandler("name",this,&MainHandler::startName); - addEndHandler("name",this,&MainHandler::endName); - m_curCompound = 0; - m_insideMember = FALSE; -} - -MainHandler::~MainHandler() -{ - debug(2,"MainHandler::~MainHandler()\n"); -} - -void MainHandler::startCompound(const QXmlAttributes& attrib) -{ - m_curCompound = new CompoundEntry(257); - m_curCompound->id = attrib.value("refid"); - m_compounds.append(m_curCompound); - m_compoundDict.insert(m_curCompound->id,m_curCompound); -} - -void MainHandler::startName(const QXmlAttributes& /*attrib*/) -{ - m_curString = ""; -} - -void MainHandler::endName() -{ - if (m_insideMember) - { - m_curMember->name = m_curString; - } - else - { - m_curCompound->name = m_curString; - m_compoundNameDict.insert(m_curString,m_curCompound); - } -} - -void MainHandler::startMember(const QXmlAttributes& attrib) -{ - m_insideMember = TRUE; - m_curMember = new MemberEntry; - m_curMember->id = attrib.value("refid"); - m_curMember->compound = m_curCompound; - m_memberDict.insert(m_curMember->id,m_curMember); -} - -void MainHandler::endMember() -{ - m_curCompound->memberDict.insert(m_curString,m_curMember); - QList *cel=0; - if ((cel=m_memberNameDict.find(m_curString))==0) - { - cel = new QList; - m_memberNameDict.insert(m_curString,cel); - } - cel->append(m_curCompound); - m_insideMember = FALSE; -} - -void MainHandler::setDebugLevel(int level) -{ - ::setDebugLevel(level); -} - -void MainHandler::dump() -{ - QListIterator cli(m_compounds); - CompoundEntry *ce; - for (cli.toFirst();(ce=cli.current());++cli) - { - debug(2,"compound id=`%s' name=`%s'\n",ce->id.data(),ce->name.data()); - QDictIterator mdi(ce->memberDict); - MemberEntry *me; - for (mdi.toFirst();(me=mdi.current());++mdi) - { - debug(2," member id=`%s' name=`%s'\n",me->id.data(),me->name.data()); - } - } -} - -bool MainHandler::readXMLDir(const char * xmlDirName) -{ - m_xmlDirName = xmlDirName; - QString xmlFileName=m_xmlDirName+"/index.xml"; - QFile xmlFile(xmlFileName); - //printf("Trying %s xmlFile.exists()=%d isReadable()=%d\n", - // xmlFileName.data(),xmlFile.exists(),xmlFile.isReadable()); - if (xmlFile.exists()) - { - ErrorHandler errorHandler; - QXmlInputSource source( xmlFile ); - QXmlSimpleReader reader; - reader.setContentHandler( this ); - reader.setErrorHandler( &errorHandler ); - reader.parse( source ); - dump(); - return TRUE; - } - return FALSE; -} - -ICompoundIterator *MainHandler::compounds() const -{ - return new CompoundEntryIterator(this,m_compounds); -} - -ICompound *MainHandler::compoundById(const char *id) const -{ - QString ids = id; - if (ids.isEmpty()) return 0; - CompoundHandler *ch = m_compoundsLoaded[ids]; - if (ch) // compound already in memory - { - ch->addref(); // returning alias -> increase reference counter - return ch->toICompound(); - } - CompoundEntry *ce = m_compoundDict.find(ids); - if (ce==0) return 0; // id not found - // create and load a new compound - ch = new CompoundHandler(m_xmlDirName); - if (!ch->parseXML(id)) - { - // compound could not be initialized. - delete ch; - return 0; - } - - // we disregard the constness here, because the object stays conceptually - // unchanged. - MainHandler *that = (MainHandler *)this; - ch->initialize(that); - //printf("loading compound %s in memory\n",id); - that->m_compoundsLoaded.insert(id,ch); - return ch->toICompound(); -} - -void MainHandler::unloadCompound(CompoundHandler *ch) -{ - //printf("unloading compound %s from memory\n",ch->id()->latin1()); - bool result = m_compoundsLoaded.remove(ch->id()->latin1()); - if (!result) debug(1,"Failed to unload component!\n"); -} - -ICompound *MainHandler::compoundByName(const char *name) const -{ - QString nameStr = name; - if (nameStr.isEmpty()) return 0; - CompoundEntry *ce = m_compoundNameDict[name]; - if (ce==0) return 0; // name not found - return compoundById(ce->id); -} - -ICompound *MainHandler::memberById(const char *id) const -{ - QString ids = id; - if (ids.isEmpty()) return 0; - MemberEntry *me = m_memberDict[id]; - if (me==0) return 0; // id not found - return compoundById(me->compound->id); -} - -ICompoundIterator *MainHandler::memberByName(const char *name) const -{ - QString nameStr = name; - if (nameStr.isEmpty()) return 0; - QList *cel = m_memberNameDict[name]; - if (cel==0) return 0; // name not found - return new CompoundEntryIterator(this,*cel); -} - -IDoxygen *createObjectModel() -{ - compoundhandler_init(); - sectionhandler_init(); - memberhandler_init(); - dochandler_init(); - graphhandler_init(); - return new MainHandler; -} - -void MainHandler::release() -{ - //printf("MainHandler::release()\n"); - QDictIterator chi(m_compoundsLoaded); - CompoundHandler *ch; - for (chi.toFirst();(ch=chi.current());++chi) - { - debug(1,"Compound %s not released\n",ch->name()->latin1()); - } - graphhandler_exit(); - dochandler_exit(); - memberhandler_exit(); - sectionhandler_exit(); - compoundhandler_exit(); - delete this; -} - diff --git a/addon/doxmlparser/src/mainhandler.h b/addon/doxmlparser/src/mainhandler.h deleted file mode 100644 index a9f68b0..0000000 --- a/addon/doxmlparser/src/mainhandler.h +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _MAINHANDLER_H -#define _MAINHANDLER_H - -#include - -#include -#include "basehandler.h" - -class CompoundHandler; -struct CompoundEntry; - -struct IndexEntry -{ - QString id; - QString name; -}; - -struct MemberEntry : public IndexEntry -{ - CompoundEntry *compound; -}; - -struct CompoundEntry : public IndexEntry -{ - CompoundEntry(int size) : memberDict(size) - { memberDict.setAutoDelete(TRUE); } - QDict memberDict; -}; - -class MainHandler : public IDoxygen, public BaseHandler -{ - public: - virtual void startCompound(const QXmlAttributes& attrib); - virtual void startMember(const QXmlAttributes& attrib); - virtual void endMember(); - virtual void startName(const QXmlAttributes& attrib); - virtual void endName(); - MainHandler(); - virtual ~MainHandler(); - - // IDoxygen - ICompoundIterator *compounds() const; - ICompound *compoundById(const char *id) const; - virtual ICompound *compoundByName(const char *name) const; - virtual ICompound *memberById(const char *id) const; - virtual ICompoundIterator *memberByName(const char *name) const; - - virtual void release(); - void setDebugLevel(int level); - bool readXMLDir(const char *dirName); - void dump(); - void unloadCompound(CompoundHandler *ch); - - private: - CompoundEntry *m_curCompound; - MemberEntry *m_curMember; - QList m_compounds; - QDict m_compoundDict; - QDict m_compoundNameDict; - QDict m_memberDict; - QDict > m_memberNameDict; - QString m_xmlDirName; - QDict m_compoundsLoaded; - bool m_insideMember; -}; - -#endif diff --git a/addon/doxmlparser/src/memberhandler.cpp b/addon/doxmlparser/src/memberhandler.cpp deleted file mode 100644 index 74d1347..0000000 --- a/addon/doxmlparser/src/memberhandler.cpp +++ /dev/null @@ -1,600 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include "memberhandler.h" -#include "sectionhandler.h" -#include "dochandler.h" -#include "mainhandler.h" -#include "linkedtexthandler.h" -#include "paramhandler.h" -#include "compoundhandler.h" -#include "debug.h" - -//------------------------------------------------------------------------------ - -class MemberTypeMap -{ - public: - MemberTypeMap() - { - m_map.setAutoDelete(TRUE); - m_map.insert("define",new int(IMember::Define)); - m_map.insert("property",new int(IMember::Property)); - m_map.insert("variable",new int(IMember::Variable)); - m_map.insert("typedef",new int(IMember::Typedef)); - m_map.insert("enum",new int(IMember::Enum)); - m_map.insert("function",new int(IMember::Function)); - m_map.insert("signal",new int(IMember::Signal)); - m_map.insert("prototype",new int(IMember::Prototype)); - m_map.insert("friend",new int(IMember::Friend)); - m_map.insert("dcop",new int(IMember::DCOP)); - m_map.insert("slot",new int(IMember::Slot)); - m_map.insert("enumvalue",new int(IMember::EnumValue)); - } - IMember::MemberKind map(const QString &s) - { - int *val = m_map.find(s); - if (val==0) - { - debug(1,"Warning: `%s' is an invalid member type\n",s.data()); - return IMember::Invalid; - } - else return (IMember::MemberKind)*val; - } - private: - QDict m_map; -}; - -static MemberTypeMap *s_typeMap; - -void memberhandler_init() -{ - s_typeMap = new MemberTypeMap; -} - -void memberhandler_exit() -{ - delete s_typeMap; -} - -//------------------------------------------------------------------------------ - -void MemberReference::initialize(MainHandler *mh) -{ - m_mainHandler = mh; -} - -IMember *MemberReference::member() const -{ - //return m_mainHandler->memberById(m_memId); - return 0; -} - -//------------------------------------------------------------------------------ - - -#if 0 -EnumValueHandler::EnumValueHandler(IBaseHandler *parent) : - m_parent(parent), m_brief(0), m_detailed(0), m_linkedTextHandler(0) -{ - addEndHandler("enumvalue",this,&EnumValueHandler::endEnumValue); - - addStartHandler("name",this,&EnumValueHandler::startName); - addEndHandler("name",this,&EnumValueHandler::endName); - addStartHandler("initializer",this,&EnumValueHandler::startInitializer); - - addStartHandler("briefdescription",this,&EnumValueHandler::startBriefDesc); - - addStartHandler("detaileddescription",this,&EnumValueHandler::startDetailedDesc); - - m_initializer.setAutoDelete(TRUE); -} - -EnumValueHandler::~EnumValueHandler() -{ - delete m_brief; - delete m_detailed; - delete m_linkedTextHandler; -} - -void EnumValueHandler::startEnumValue(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); -} - -void EnumValueHandler::endEnumValue() -{ - m_parent->setDelegate(0); -} - -void EnumValueHandler::startName(const QXmlAttributes& /*attrib*/) -{ - m_curString=""; -} - -void EnumValueHandler::endName() -{ - m_name = m_curString; -} - -void EnumValueHandler::startInitializer(const QXmlAttributes& /*attrib*/) -{ - delete m_linkedTextHandler; - m_linkedTextHandler = new LinkedTextHandler(this,m_initializer); - m_linkedTextHandler->start("initializer"); -} - -void EnumValueHandler::startBriefDesc(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_brief = docHandler; -} - -void EnumValueHandler::startDetailedDesc(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_detailed = docHandler; -} -#endif - -//------------------------------------------------------------------------------ - -MemberHandler::MemberHandler(IBaseHandler *parent) - : m_brief(0), m_detailed(0), m_inbody(0), - m_compound(0), m_section(0), m_parent(parent) -{ - //printf("MemberHandler::MemberHandler() %p\n",this); - addEndHandler("memberdef",this,&MemberHandler::endMember); - - addStartHandler("templateparamlist",this,&MemberHandler::startTemplateParamList); - addEndHandler("templateparamlist",this,&MemberHandler::endTemplateParamList); - - addStartHandler("type",this,&MemberHandler::startType); - - addStartHandler("definition",this,&MemberHandler::startDefinition); - addEndHandler("definition",this,&MemberHandler::endDefinition); - - addStartHandler("argsstring",this,&MemberHandler::startArgsString); - addEndHandler("argsstring",this,&MemberHandler::endArgsString); - - addStartHandler("name",this,&MemberHandler::startName); - addEndHandler("name",this,&MemberHandler::endName); - - addStartHandler("read",this,&MemberHandler::startRead); - addEndHandler("read",this,&MemberHandler::endRead); - - addStartHandler("write",this,&MemberHandler::startWrite); - addEndHandler("write",this,&MemberHandler::endWrite); - - addStartHandler("reimplements",this,&MemberHandler::startReimplements); - addEndHandler("reimplements",this,&MemberHandler::endReimplements); - - addStartHandler("reimplementedby",this,&MemberHandler::startReimplementedBy); - addEndHandler("reimplementedby",this,&MemberHandler::endReimplementedBy); - - addStartHandler("param",this,&MemberHandler::startParam); - - addStartHandler("enumvalue",this,&MemberHandler::startEnumValue2); - addEndHandler("enumvalue",this,&MemberHandler::endMember); - - addStartHandler("initializer",this,&MemberHandler::startInitializer); - addStartHandler("exceptions",this,&MemberHandler::startException); - - addStartHandler("briefdescription",this,&MemberHandler::startBriefDesc); - - addStartHandler("detaileddescription",this,&MemberHandler::startDetailedDesc); - - addStartHandler("inbodydescription",this,&MemberHandler::startInbodyDesc); - - addStartHandler("location",this,&MemberHandler::startLocation); - addEndHandler("location"); - - addStartHandler("references",this,&MemberHandler::startReferences); - addEndHandler("references",this,&MemberHandler::endReferences); - - addStartHandler("referencedby",this,&MemberHandler::startReferencedBy); - addEndHandler("referencedby",this,&MemberHandler::endReferencedBy); - - m_type.setAutoDelete(TRUE); - m_initializer.setAutoDelete(TRUE); - m_exception.setAutoDelete(TRUE); - m_params.setAutoDelete(TRUE); - m_references.setAutoDelete(TRUE); - m_referencedBy.setAutoDelete(TRUE); - m_reimplements = 0; - m_reimplementedBy.setAutoDelete(TRUE); - m_enumValues.setAutoDelete(TRUE); - m_linkedTextHandler = 0; - m_defLine=0; - m_bodyStart=0; - m_bodyEnd=0; - m_insideTemplateParamList=FALSE; - m_hasTemplateParamList=FALSE; -} - -MemberHandler::~MemberHandler() -{ - debug(2,"MemberHandler::~MemberHandler() %p\n",this); - delete m_brief; - delete m_detailed; - delete m_inbody; - delete m_linkedTextHandler; - delete m_reimplements; -} - -void MemberHandler::startMember(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - m_kindString = attrib.value("kind"); - //printf("startMember kindString=`%s'\n",m_kindString.data()); - m_kind = s_typeMap->map(m_kindString); - m_id = attrib.value("id"); - m_protection = attrib.value("prot"); - m_isStatic = attrib.value("static")=="yes"; - m_isConst = attrib.value("const")=="yes"; - m_isExplicit = attrib.value("explicit")=="yes"; - m_isInline = attrib.value("inline")=="yes"; - m_virtualness = attrib.value("virt"); - m_isVolatile = attrib.value("volatile")=="yes"; - m_isMutable = attrib.value("mutable")=="yes"; - m_isReadable = attrib.value("readable")=="yes"; - m_isWritable = attrib.value("writable")=="yes"; - - debug(2,"member kind=`%s' id=`%s' prot=`%s' virt=`%s'\n", - m_kindString.data(),m_id.data(),m_protection.data(),m_virtualness.data()); -} - -void MemberHandler::startEnumValue(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - m_kindString = "enumvalue"; - //printf("startEnumValue kindString=`%s'\n",m_kindString.data()); - m_kind = s_typeMap->map(m_kindString); - m_id = attrib.value("id"); - m_protection = attrib.value("prot"); - m_isStatic = FALSE; - m_isConst = FALSE; - m_isExplicit = FALSE; - m_isInline = FALSE; - m_virtualness = "non-virtual"; - m_isVolatile = FALSE; - m_isMutable = FALSE; - m_isReadable = FALSE; - m_isWritable = FALSE; - debug(2,"member kind=`%s' id=`%s' prot=`%s' virt=`%s'\n", - m_kindString.data(),m_id.data(),m_protection.data(),m_virtualness.data()); -} - -void MemberHandler::startEnumValue2(const QXmlAttributes& attrib) -{ - MemberHandler *mh = new MemberHandler(this); - mh->startEnumValue(attrib); - m_enumValues.append(mh); -} - - -void MemberHandler::startBriefDesc(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_brief = docHandler; -} - -void MemberHandler::startDetailedDesc(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_detailed = docHandler; -} - -void MemberHandler::startInbodyDesc(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_inbody = docHandler; -} - -void MemberHandler::startLocation(const QXmlAttributes& attrib) -{ - m_defFile = attrib.value("file"); - m_bodyFile = attrib.value("bodyfile"); - QCString s; - s = attrib.value("line"); - if (!s.isEmpty()) m_defLine=s.toInt(); - s = attrib.value("bodystart"); - if (!s.isEmpty()) m_bodyStart=s.toInt(); - s = attrib.value("bodyend"); - if (!s.isEmpty()) m_bodyEnd=s.toInt(); -} - -void MemberHandler::startReferences(const QXmlAttributes& attrib) -{ - MemberReference *mr = new MemberReference; - mr->m_memId = attrib.value("refid"); - m_references.append(mr); - m_curString=""; -} - -void MemberHandler::endReferences() -{ - m_references.getLast()->m_name = m_curString; -} - -void MemberHandler::startReferencedBy(const QXmlAttributes& attrib) -{ - MemberReference *mr = new MemberReference; - mr->m_memId = attrib.value("refid"); - m_referencedBy.append(mr); - m_curString=""; -} - -void MemberHandler::endReferencedBy() -{ - m_referencedBy.getLast()->m_name = m_curString; -} - -void MemberHandler::startReimplements(const QXmlAttributes& attrib) -{ - m_reimplements = new MemberReference; - m_reimplements->m_memId = attrib.value("refid"); - m_curString=""; -} - -void MemberHandler::endReimplements() -{ - m_reimplements->m_name = m_curString; -} - -void MemberHandler::startReimplementedBy(const QXmlAttributes& attrib) -{ - MemberReference *mr = new MemberReference; - mr->m_memId = attrib.value("refid"); - m_reimplementedBy.append(mr); - m_curString=""; -} - -void MemberHandler::endReimplementedBy() -{ - m_reimplementedBy.getLast()->m_name = m_curString; -} - -void MemberHandler::endMember() -{ - m_parent->setDelegate(0); -} - -void MemberHandler::startType(const QXmlAttributes &) -{ - debug(2,"startType!\n"); - delete m_linkedTextHandler; - m_linkedTextHandler = new LinkedTextHandler(this,m_type); - m_linkedTextHandler->start("type"); -} - -void MemberHandler::startInitializer(const QXmlAttributes &) -{ - debug(2,"startInitializer!\n"); - delete m_linkedTextHandler; - m_linkedTextHandler = new LinkedTextHandler(this,m_initializer); - m_linkedTextHandler->start("initializer"); -} - -void MemberHandler::startException(const QXmlAttributes &) -{ - debug(2,"startException!\n"); - delete m_linkedTextHandler; - m_linkedTextHandler = new LinkedTextHandler(this,m_exception); - m_linkedTextHandler->start("exceptions"); -} - -void MemberHandler::startName(const QXmlAttributes &) -{ - m_curString=""; -} - -void MemberHandler::endName() -{ - m_name = m_curString.stripWhiteSpace(); - debug(2,"member name=`%s'\n",m_name.data()); -} - -void MemberHandler::startRead(const QXmlAttributes &) -{ - m_curString=""; -} - -void MemberHandler::endRead() -{ - m_read = m_curString.stripWhiteSpace(); - debug(2,"member read=`%s'\n",m_read.data()); -} - -void MemberHandler::startWrite(const QXmlAttributes &) -{ - m_curString=""; -} - -void MemberHandler::endWrite() -{ - m_write = m_curString.stripWhiteSpace(); - debug(2,"member write=`%s'\n",m_write.data()); -} - -void MemberHandler::startDefinition(const QXmlAttributes&) -{ - m_curString=""; -} - -void MemberHandler::endDefinition() -{ - m_definition = m_curString.stripWhiteSpace(); - debug(2,"definition=%s\n",m_definition.data()); -} - -void MemberHandler::startArgsString(const QXmlAttributes&) -{ - m_curString=""; -} - -void MemberHandler::endArgsString() -{ - m_argsstring = m_curString.stripWhiteSpace(); - debug(2,"arggstring=%s\n",m_argsstring.data()); -} - -void MemberHandler::startParam(const QXmlAttributes& attrib) -{ - ParamHandler *paramHandler = new ParamHandler(this); - paramHandler->startParam(attrib); - if (m_insideTemplateParamList) - { - m_templateParams.append(paramHandler); - } - else - { - m_params.append(paramHandler); - } -} - -void MemberHandler::startTemplateParamList(const QXmlAttributes&) -{ - m_insideTemplateParamList = TRUE; - m_hasTemplateParamList = TRUE; -} - -void MemberHandler::endTemplateParamList() -{ - m_insideTemplateParamList = FALSE; -} - -void MemberHandler::initialize(MainHandler *mh) -{ - { - QListIterator mli(m_references); - MemberReference *mr; - for (;(mr=mli.current());++mli) - { - mr->initialize(mh); - } - } - { - QListIterator mli(m_referencedBy); - MemberReference *mr; - for (;(mr=mli.current());++mli) - { - mr->initialize(mh); - } - } - { - QListIterator mli(m_reimplementedBy); - MemberReference *mr; - for (;(mr=mli.current());++mli) - { - mr->initialize(mh); - } - } - if (m_reimplements) m_reimplements->initialize(mh); -} - -void MemberHandler::setCompoundHandler(CompoundHandler *c) -{ - m_compound = c; -} - -ICompound *MemberHandler::compound() const -{ - m_compound->addref(); - return m_compound->toICompound(); -} - -void MemberHandler::setSectionHandler(SectionHandler *c) -{ - m_section = c; -} - -ISection *MemberHandler::section() const -{ - return m_section; -} - -IMemberIterator *MemberHandler::enumValues() const -{ - return new MemberIterator(m_enumValues); -} - -ILinkedTextIterator *MemberHandler::type() const -{ - return new LinkedTextIterator(m_type); -} - -const IString *MemberHandler::typeString() const -{ - MemberHandler *that = (MemberHandler *)this; - that->m_typeString = LinkedTextHandler::toString(m_type); - return &m_typeString; -} - -IParamIterator *MemberHandler::parameters() const -{ - return new ParamIterator(m_params); -} - -IParamIterator *MemberHandler::templateParameters() const -{ - return m_hasTemplateParamList ? new ParamIterator(m_templateParams) : 0; -} - -IMemberReferenceIterator *MemberHandler::references() const -{ - return new MemberReferenceIterator(m_references); -} - -IMemberReferenceIterator *MemberHandler::referencedBy() const -{ - return new MemberReferenceIterator(m_referencedBy); -} - -ILinkedTextIterator *MemberHandler::initializer() const -{ - return new LinkedTextIterator(m_initializer); -} - -ILinkedTextIterator *MemberHandler::exceptions() const -{ - return new LinkedTextIterator(m_exception); -} - -IMemberReferenceIterator *MemberHandler::reimplementedBy() const -{ - return new MemberReferenceIterator(m_reimplementedBy); -} - -IDocRoot *MemberHandler::briefDescription() const -{ - return m_brief; -} - -IDocRoot *MemberHandler::detailedDescription() const -{ - return m_detailed; -} - -IDocRoot *MemberHandler::inbodyDescription() const -{ - return m_inbody; -} - diff --git a/addon/doxmlparser/src/memberhandler.h b/addon/doxmlparser/src/memberhandler.h deleted file mode 100644 index 19eacbd..0000000 --- a/addon/doxmlparser/src/memberhandler.h +++ /dev/null @@ -1,252 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _MEMBERHANDLER_H -#define _MEMBERHANDLER_H - -#include -#include -#include -#include - -#include "basehandler.h" -#include "baseiterator.h" -#include "stringimpl.h" - -class MainHandler; -class CompoundHandler; -class SectionHandler; -class ParamHandler; -class LinkedTextImpl; -class LinkedTextHandler; -class DocHandler; - -class MemberReference : public IMemberReference -{ - public: - virtual ~MemberReference() {} - virtual IMember *member() const; - virtual const IString *name() const { return &m_name; } - virtual const IString *scope() const { return &m_scope; } - virtual const IString *protection() const { return &m_protection; } - virtual const IString *virtualness() const { return &m_virtualness; } - virtual const IString *ambiguityScope() const { return &m_ambiguityScope; } - void initialize(MainHandler *m); - - QString m_memId; - StringImpl m_name; - StringImpl m_scope; - StringImpl m_virtualness; - StringImpl m_protection; - StringImpl m_ambiguityScope; - MainHandler *m_mainHandler; -}; - -class MemberReferenceIterator : public BaseIterator -{ - public: - MemberReferenceIterator(const QList &list) : - BaseIterator(list) {} -}; - -class MemberHandler : public IDefine, - public IProperty, - public IVariable, - public ITypedef, - public IFunction, - public ISignal, - public IPrototype, - public IFriend, - public IDCOP, - public ISlot, - public IEnum, - public IEnumValue, - public BaseHandler -{ - public: - virtual void startMember(const QXmlAttributes& attrib); - virtual void endMember(); - virtual void startParam(const QXmlAttributes& attrib); - virtual void startType(const QXmlAttributes& attrib); - virtual void startName(const QXmlAttributes& attrib); - virtual void endName(); - virtual void startRead(const QXmlAttributes& attrib); - virtual void endRead(); - virtual void startWrite(const QXmlAttributes& attrib); - virtual void endWrite(); - virtual void startDefinition(const QXmlAttributes& attrib); - virtual void endDefinition(); - virtual void startArgsString(const QXmlAttributes& attrib); - virtual void endArgsString(); - virtual void startBriefDesc(const QXmlAttributes& attrib); - virtual void startDetailedDesc(const QXmlAttributes& attrib); - virtual void startInbodyDesc(const QXmlAttributes& attrib); - virtual void startLocation(const QXmlAttributes& attrib); - virtual void startReferences(const QXmlAttributes& attrib); - virtual void endReferences(); - virtual void startReferencedBy(const QXmlAttributes& attrib); - virtual void endReferencedBy(); - virtual void startReimplements(const QXmlAttributes& attrib); - virtual void endReimplements(); - virtual void startReimplementedBy(const QXmlAttributes& attrib); - virtual void endReimplementedBy(); - virtual void startInitializer(const QXmlAttributes& attrib); - virtual void startException(const QXmlAttributes& attrib); - virtual void startEnumValue(const QXmlAttributes& attrib); - virtual void startEnumValue2(const QXmlAttributes& attrib); - virtual void startTemplateParamList(const QXmlAttributes &attrib); - virtual void endTemplateParamList(); - - MemberHandler(IBaseHandler *parent); - virtual ~MemberHandler(); - - // IMember implementation - virtual ICompound *compound() const; - virtual ISection *section() const; - virtual MemberKind kind() const - { return m_kind; } - virtual const IString *kindString() const - { return &m_kindString; } - virtual const IString *id() const - { return &m_id; } - virtual const IString *protection() const - { return &m_protection; } - virtual const IString *virtualness() const - { return &m_virtualness; } - virtual const IString *name() const - { return &m_name; } - virtual const IString *readAccessor() const - { return &m_read; } - virtual const IString *writeAccessor() const - { return &m_write; } - virtual const IString *definition() const - { return &m_definition; } - virtual const IString *argsstring() const - { return &m_argsstring; } - virtual bool isConst() const - { return m_isConst; } - virtual bool isVolatile() const - { return m_isVolatile; } - virtual bool isStatic() const - { return m_isStatic; } - virtual bool isExplicit() const - { return m_isExplicit; } - virtual bool isInline() const - { return m_isInline; } - virtual bool isMutable() const - { return m_isMutable; } - virtual bool isReadable() const - { return m_isReadable; } - virtual bool isWritable() const - { return m_isWritable; } - virtual ILinkedTextIterator *type() const; - virtual const IString *typeString() const; - virtual IParamIterator *parameters() const; - virtual IParamIterator *templateParameters() const; - virtual IMemberReferenceIterator *references() const; - virtual IMemberReferenceIterator *referencedBy() const; - virtual ILinkedTextIterator *initializer() const; - virtual ILinkedTextIterator *exceptions() const; - virtual const IString *bodyFile() const - { return &m_bodyFile; } - virtual int bodyStart() const - { return m_bodyStart; } - virtual int bodyEnd() const - { return m_bodyEnd; } - virtual const IString *definitionFile() const - { return &m_defFile; } - virtual int definitionLine() const - { return m_defLine; } - virtual IMemberReference *reimplements() const - { return m_reimplements; } - virtual IMemberReferenceIterator *reimplementedBy() const; - virtual IDocRoot *briefDescription() const; - virtual IDocRoot *detailedDescription() const; - virtual IDocRoot *inbodyDescription() const; - - // IEnum - virtual IMemberIterator *enumValues() const; - - void initialize(MainHandler *m); - void setCompoundHandler(CompoundHandler *c); - void setSectionHandler(SectionHandler *s); - - private: - // XML elements: - // ----------------- - QList m_templateParams; // templateparamlist - QList m_type; // type - StringImpl m_definition; // definition - StringImpl m_argsstring; // argsstring - StringImpl m_name; // name - StringImpl m_read; // read - StringImpl m_write; // write - MemberReference *m_reimplements; // reimplements - QList m_reimplementedBy; // reimplementedby - QList m_params; // param - QList m_enumValues; // enumvalue - QList m_initializer; // initializer - QList m_exception; // exceptions - DocHandler *m_brief; // briefdescription - DocHandler *m_detailed; // detaileddescription - DocHandler *m_inbody; // inbodydescription - // location - StringImpl m_defFile; // - file - int m_defLine; // - line - StringImpl m_bodyFile; // - bodyfile - int m_bodyStart; // - bodystart - int m_bodyEnd; // - bodyend - QList m_references; // references - QList m_referencedBy; // referencedby - - // XML attributes: - // --------------- - MemberKind m_kind; // kind - StringImpl m_kindString; // kind as a string - StringImpl m_id; // id - StringImpl m_protection; // prot - bool m_isStatic; // static - bool m_isConst; // const - bool m_isExplicit; // explicit - bool m_isInline; // inline - StringImpl m_virtualness; // virt - bool m_isVolatile; // volatile - bool m_isMutable; // mutable - bool m_isReadable; // readable - bool m_isWritable; // writable - - CompoundHandler *m_compound; - SectionHandler *m_section; - StringImpl m_typeString; - LinkedTextHandler *m_linkedTextHandler; - bool m_insideTemplateParamList; - bool m_hasTemplateParamList; - IBaseHandler *m_parent; -}; - -class MemberIterator : public BaseIteratorVia -{ - public: - MemberIterator(const QList &list) : - BaseIteratorVia(list) {} -}; - -void memberhandler_init(); -void memberhandler_exit(); - -#endif diff --git a/addon/doxmlparser/src/paramhandler.cpp b/addon/doxmlparser/src/paramhandler.cpp deleted file mode 100644 index 0084c80..0000000 --- a/addon/doxmlparser/src/paramhandler.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include "paramhandler.h" -#include "memberhandler.h" -#include "linkedtexthandler.h" -#include "debug.h" -#include "dochandler.h" - -TemplateParamListHandler::TemplateParamListHandler(IBaseHandler *parent) : m_parent(parent) -{ - addStartHandler("param",this,&TemplateParamListHandler::startParam); - - addEndHandler("templateparamlist",this,&TemplateParamListHandler::endTemplateParamList); -} - -void TemplateParamListHandler::startParam(const QXmlAttributes& attrib) -{ - ParamHandler *ph = new ParamHandler(this); - ph->startParam(attrib); - m_templateParams.append(ph); -} - -void TemplateParamListHandler::endParam() -{ -} - -void TemplateParamListHandler::startTemplateParamList(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"templateparamlist\n"); -} - -void TemplateParamListHandler::endTemplateParamList() -{ - m_parent->setDelegate(0); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////// - -ParamHandler::ParamHandler(IBaseHandler *parent) : m_brief(0), m_parent(parent) -{ - addEndHandler("param",this,&ParamHandler::endParam); - - addStartHandler("type",this,&ParamHandler::startType); - - addStartHandler("declname"); - addEndHandler("declname",this,&ParamHandler::endDeclName); - - addStartHandler("defname"); - addEndHandler("defname",this,&ParamHandler::endDefName); - - addStartHandler("array"); - addEndHandler("array",this,&ParamHandler::endArray); - - addStartHandler("attribute"); - addEndHandler("attribute",this,&ParamHandler::endAttrib); - - addStartHandler("briefdescription",this,&ParamHandler::startBriefDesc); - - addStartHandler("defval",this,&ParamHandler::startDefVal); - - m_linkedTextHandler = 0; -} - -ParamHandler::~ParamHandler() -{ - delete m_brief; - delete m_linkedTextHandler; -} - -void ParamHandler::startParam(const QXmlAttributes& /*attrib*/) -{ - m_parent->setDelegate(this); - debug(2,"param\n"); -} - -void ParamHandler::endParam() -{ - m_parent->setDelegate(0); -} - -void ParamHandler::startType(const QXmlAttributes& /*attrib*/) -{ - delete m_linkedTextHandler; - m_linkedTextHandler = new LinkedTextHandler(this,m_type); - m_linkedTextHandler->start("type"); - debug(2,"param type\n"); -} - -void ParamHandler::endDeclName() -{ - m_declName = m_curString.stripWhiteSpace(); - debug(2,"member declName=`%s'\n",m_declName.data()); -} - -void ParamHandler::endDefName() -{ - m_defName = m_curString.stripWhiteSpace(); - debug(2,"member defName=`%s'\n",m_defName.data()); -} - -void ParamHandler::endAttrib() -{ - m_attrib = m_curString.stripWhiteSpace(); - debug(2,"member attrib=`%s'\n",m_attrib.data()); -} - -void ParamHandler::endArray() -{ - m_array = m_curString.stripWhiteSpace(); - debug(2,"member array=`%s'\n",m_array.data()); -} - -void ParamHandler::startDefVal(const QXmlAttributes& /*attrib*/) -{ - delete m_linkedTextHandler; - m_linkedTextHandler = new LinkedTextHandler(this,m_defVal); - m_linkedTextHandler->start("defval"); - debug(2,"member defVal\n"); -} - -void ParamHandler::startBriefDesc(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_brief = docHandler; -} - -ILinkedTextIterator *ParamHandler::type() const -{ - return new LinkedTextIterator(m_type); -} - -ILinkedTextIterator *ParamHandler::defaultValue() const -{ - return new LinkedTextIterator(m_defVal); -} - -IDocRoot *ParamHandler::briefDescription() const -{ - return m_brief; -} - - - diff --git a/addon/doxmlparser/src/paramhandler.h b/addon/doxmlparser/src/paramhandler.h deleted file mode 100644 index d1194ac..0000000 --- a/addon/doxmlparser/src/paramhandler.h +++ /dev/null @@ -1,103 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _PARAMHANDLER_H -#define _PARAMHANDLER_H - -#include -#include -#include -#include - -#include "stringimpl.h" -#include "basehandler.h" -#include "baseiterator.h" - -class LinkedTextImpl; -class LinkedTextHandler; -class DocHandler; - - -class ParamHandler : public IParam, public BaseHandler -{ - public: - virtual void startParam(const QXmlAttributes& attrib); - virtual void endParam(); - virtual void startType(const QXmlAttributes& attrib); - virtual void endDeclName(); - virtual void endDefName(); - virtual void endAttrib(); - virtual void endArray(); - virtual void startDefVal(const QXmlAttributes& attrib); - virtual void startBriefDesc(const QXmlAttributes& attrib); - - ParamHandler(IBaseHandler *parent); - virtual ~ParamHandler(); - - // IParam - virtual ILinkedTextIterator *type() const; - virtual const IString * declarationName() const { return &m_declName; } - virtual const IString * definitionName() const { return &m_defName; } - virtual const IString * attrib() const { return &m_attrib; } - virtual const IString * arraySpecifier() const { return &m_array; } - virtual ILinkedTextIterator *defaultValue() const; - virtual IDocRoot *briefDescription() const; - - private: - - // XML elements: - // ------------- - QList m_type; // type - StringImpl m_declName; // declname - StringImpl m_defName; // defname - StringImpl m_array; // array - QList m_defVal; // defval - DocHandler *m_brief; // briefdescription - - StringImpl m_attrib; // TODO: not yet in XML output - - IBaseHandler *m_parent; - LinkedTextHandler *m_linkedTextHandler; -}; - -class ParamIterator : public BaseIterator -{ - public: - ParamIterator(const QList &list) : - BaseIterator(list) {} -}; - -class TemplateParamListHandler : public BaseHandler -{ - public: - - virtual void startParam(const QXmlAttributes& attrib); - virtual void endParam(); - - virtual void startTemplateParamList(const QXmlAttributes& attrib); - virtual void endTemplateParamList(); - - TemplateParamListHandler(IBaseHandler *parent); - virtual ~TemplateParamListHandler() {} - - ParamIterator* templateParams() { return new ParamIterator(m_templateParams); } - - protected: - IBaseHandler *m_parent; - QList m_templateParams; -}; - - -#endif diff --git a/addon/doxmlparser/src/sectionhandler.cpp b/addon/doxmlparser/src/sectionhandler.cpp deleted file mode 100644 index 973d990..0000000 --- a/addon/doxmlparser/src/sectionhandler.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include "mainhandler.h" -#include "compoundhandler.h" -#include "sectionhandler.h" -#include "memberhandler.h" -#include "dochandler.h" -#include "debug.h" - -class SectionTypeMap -{ - public: - SectionTypeMap() : m_map(37) - { - m_map.setAutoDelete(TRUE); - m_map.insert("user-defined",new int(ISection::UserDefined)); - m_map.insert("public-type",new int(ISection::PubTypes)); - m_map.insert("public-func",new int(ISection::PubFuncs)); - m_map.insert("public-attrib",new int(ISection::PubAttribs)); - m_map.insert("public-slot",new int(ISection::PubSlots)); - m_map.insert("signal",new int(ISection::Signals)); - m_map.insert("dcop-func",new int(ISection::DCOPFuncs)); - m_map.insert("property",new int(ISection::Properties)); - m_map.insert("event",new int(ISection::Events)); - m_map.insert("public-static-func",new int(ISection::PubStatFuncs)); - m_map.insert("public-static-attrib",new int(ISection::PubStatAttribs)); - m_map.insert("protected-type",new int(ISection::ProTypes)); - m_map.insert("protected-func",new int(ISection::ProFuncs)); - m_map.insert("protected-attrib",new int(ISection::ProAttribs)); - m_map.insert("protected-slot",new int(ISection::ProSlots)); - m_map.insert("protected-static-func",new int(ISection::ProStatFuncs)); - m_map.insert("protected-static-attrib",new int(ISection::ProStatAttribs)); - m_map.insert("package-type",new int(ISection::PacTypes)); - m_map.insert("package-func",new int(ISection::PacFuncs)); - m_map.insert("package-attrib",new int(ISection::PacAttribs)); - m_map.insert("package-static-func",new int(ISection::PacStatFuncs)); - m_map.insert("package-static-attrib",new int(ISection::PacStatAttribs)); - m_map.insert("private-type",new int(ISection::PriTypes)); - m_map.insert("private-func",new int(ISection::PriFuncs)); - m_map.insert("private-attrib",new int(ISection::PriAttribs)); - m_map.insert("private-slot",new int(ISection::PriSlots)); - m_map.insert("private-static-func",new int(ISection::PriStatFuncs)); - m_map.insert("private-static-attrib",new int(ISection::PriStatAttribs)); - m_map.insert("friend",new int(ISection::Friend)); - m_map.insert("related",new int(ISection::Related)); - m_map.insert("define",new int(ISection::Defines)); - m_map.insert("prototype",new int(ISection::Prototypes)); - m_map.insert("typedef",new int(ISection::Typedefs)); - m_map.insert("enum",new int(ISection::Enums)); - m_map.insert("func",new int(ISection::Functions)); - m_map.insert("var",new int(ISection::Variables)); - } - ISection::SectionKind map(const QString &s) - { - int *val = m_map.find(s); - if (val==0) - { - debug(1,"Warning: `%s' is an invalid section type\n",s.data()); - return ISection::Invalid; - } - else return (ISection::SectionKind)*val; - } - private: - QDict m_map; -}; - -static SectionTypeMap *s_typeMap; - -void sectionhandler_init() -{ - s_typeMap = new SectionTypeMap; -} - -void sectionhandler_exit() -{ - delete s_typeMap; -} - -SectionHandler::SectionHandler(IBaseHandler *parent) : m_parent(parent) -{ - //printf("SectionHandler::SectionHandler()\n"); - m_members.setAutoDelete(TRUE); - addEndHandler("sectiondef",this,&SectionHandler::endSection); - addStartHandler("memberdef",this,&SectionHandler::startMember); - addStartHandler("header",this,&SectionHandler::startHeader); - addEndHandler("header",this,&SectionHandler::endHeader); - addStartHandler("description",this,&SectionHandler::startDescription); -} - -SectionHandler::~SectionHandler() -{ - debug(2,"SectionHandler::~SectionHandler()\n"); -} - -void SectionHandler::startSection(const QXmlAttributes& attrib) -{ - m_parent->setDelegate(this); - m_kindString = attrib.value("kind"); - m_kind = s_typeMap->map(m_kindString); - debug(2,"section kind=`%s'\n",m_kindString.data()); -} - -void SectionHandler::startDescription(const QXmlAttributes& attrib) -{ - DocHandler *docHandler = new DocHandler(this); - docHandler->startDoc(attrib); - m_description = docHandler; -} - -void SectionHandler::endSection() -{ - m_parent->setDelegate(0); -} - -void SectionHandler::startMember(const QXmlAttributes& attrib) -{ - MemberHandler *memHandler = new MemberHandler(this); - memHandler->startMember(attrib); - m_members.append(memHandler); -} - -void SectionHandler::startHeader(const QXmlAttributes&) -{ - m_header=""; - m_curString=""; -} - -void SectionHandler::endHeader() -{ - m_header = m_curString.stripWhiteSpace(); - debug(2,"member header=`%s'\n",m_header.data()); -} - -void SectionHandler::initialize(CompoundHandler *ch) -{ - QListIterator mli(m_members); - MemberHandler *mh; - for (;(mh=mli.current());++mli) - { - mh->setCompoundHandler(ch); - ch->insertMember(mh); - mh->setSectionHandler(this); - } -} - -IDocRoot *SectionHandler::description() const -{ - return m_description; -} - -IMemberIterator *SectionHandler::members() const -{ - return new MemberIterator(m_members); -} - diff --git a/addon/doxmlparser/src/sectionhandler.h b/addon/doxmlparser/src/sectionhandler.h deleted file mode 100644 index 46a072f..0000000 --- a/addon/doxmlparser/src/sectionhandler.h +++ /dev/null @@ -1,102 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _SECTIONHANDLER_H -#define _SECTIONHANDLER_H - -#include -#include -#include -#include - -#include "basehandler.h" - -class SectionIterator : - public BaseIterator -{ - public: - SectionIterator(const QList &list) : - BaseIterator(list) {} -}; - - -class SectionHandler : public IUserDefined, public BaseHandler -{ - public: - virtual void startMember(const QXmlAttributes& attrib); - virtual void startHeader(const QXmlAttributes& attrib); - virtual void startSection(const QXmlAttributes& attrib); - virtual void startDescription(const QXmlAttributes& attrib); - virtual void endSection(); - virtual void endHeader(); - - SectionHandler(IBaseHandler *parent); - virtual ~SectionHandler(); - - // ISection - virtual const IString *kindString() const - { return &m_kindString; } - virtual SectionKind kind() const - { return m_kind; } - IDocRoot *description() const; - virtual IMemberIterator *members() const; - virtual bool isStatic() const - { - return m_kind==PubStatFuncs || m_kind==PubStatAttribs || - m_kind==ProStatFuncs || m_kind==ProStatAttribs || - m_kind==PriStatFuncs || m_kind==PriStatAttribs; - } - virtual bool isPublic() const - { - return !isProtected() && !isPrivate(); - } - virtual bool isProtected() const - { - return m_kind==ProTypes || m_kind==ProFuncs || m_kind==ProAttribs || - m_kind==ProSlots || m_kind==ProStatFuncs || m_kind==ProStatAttribs; - } - virtual bool isPrivate() const - { - return m_kind==PriTypes || m_kind==PriFuncs || m_kind==PriAttribs || - m_kind==PriSlots || m_kind==PriStatFuncs || m_kind==PriStatAttribs; - } - - void initialize(CompoundHandler *c); - - // IUserDefined implementation - virtual const IString *header() const - { - return &m_header; - } - - private: - IBaseHandler *m_parent; - - // XML elements: - // ------------- - StringImpl m_header; // header - DocHandler* m_description; // description - QList m_members; // memberdef - - // XML attributes: - // --------------- - SectionKind m_kind; // kind - StringImpl m_kindString; // kind as a string -}; - -void sectionhandler_init(); -void sectionhandler_exit(); - -#endif diff --git a/addon/doxmlparser/src/stringimpl.h b/addon/doxmlparser/src/stringimpl.h deleted file mode 100644 index ac4ee12..0000000 --- a/addon/doxmlparser/src/stringimpl.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef STRINGIMPL_H -#define STRINGIMPL_H - -#include -#include "doxmlintf.h" - -class StringImpl : public QString, public IString -{ - public: - StringImpl() {} - StringImpl(const QString &str) : QString(str) {} - StringImpl &operator=(const QString &str) - { QString::operator=(str); return *this; } - virtual ~StringImpl() {} - - // IString - const char *latin1() const - { return QString::latin1(); } - unsigned short unicodeCharAt(int index) const - { return QString::unicode()[index].unicode(); } - bool isEmpty() const - { return QString::isEmpty(); } - int length() const - { return QString::length(); } -}; - -#endif - diff --git a/addon/doxmlparser/test/.cvsignore b/addon/doxmlparser/test/.cvsignore deleted file mode 100644 index dd07649..0000000 --- a/addon/doxmlparser/test/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Makefile -xmlparse.pro -Makefile.xmlparse diff --git a/addon/doxmlparser/test/Makefile.in b/addon/doxmlparser/test/Makefile.in deleted file mode 100644 index 1dfbd17..0000000 --- a/addon/doxmlparser/test/Makefile.in +++ /dev/null @@ -1,13 +0,0 @@ -all clean depend: Makefile.xmlparse - $(MAKE) -f Makefile.xmlparse $@ - -distclean: clean - $(RM) -rf Makefile.xmlparse xmlparse.pro Makefile obj - -tmake: - $(ENV) $(PERL) $(TMAKE) xmlparse.pro >Makefile.xmlparse - -Makefile.xmlparse: xmlparse.pro - $(ENV) $(PERL) $(TMAKE) xmlparse.pro >Makefile.xmlparse - -install: diff --git a/addon/doxmlparser/test/main.cpp b/addon/doxmlparser/test/main.cpp deleted file mode 100644 index 8bf9dd2..0000000 --- a/addon/doxmlparser/test/main.cpp +++ /dev/null @@ -1,759 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2003 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include -#include -#include -#include - -/*! Dumps the contents of a hyperlinked text fragment as plain text to the - * output. - */ -QString linkedTextToString(ILinkedTextIterator *ti) -{ - QString result; - ILinkedText *lt=0; - for (ti->toFirst();(lt=ti->current());ti->toNext()) - { - switch (lt->kind()) - { - case ILinkedText::Kind_Text: // plain text - result+=dynamic_cast(lt)->text()->latin1(); break; - case ILinkedText::Kind_Ref: // a link - result+=dynamic_cast(lt)->text()->latin1(); break; - } - } - return result; -} - -/*! Macro for printing an indented message. */ -#define InPrint(x) printf("%s",indent.latin1()), printf x; - -/*! Dumps the contents of a documentation block to stdout. - * @note This function will call itself recursively. - * @param doc The root of the documentation tree. - * @param level The indent level. - */ -void DumpDoc(IDoc *doc,int level) -{ - if (doc==0) return; - QString indent; - indent.fill(' ',level); - //printf(" doc node kind=`%d'\n",doc->kind()); - switch (doc->kind()) - { - case IDoc::Para: - { - InPrint(("\n")); - IDocPara *par = dynamic_cast(doc); - ASSERT(par!=0); - IDocIterator *di = par->contents(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("\n")); - } - break; - case IDoc::Text: - { - IDocText *txt = dynamic_cast(doc); - ASSERT(txt!=0); - InPrint(("\n", - txt->text()->latin1(),txt->markup(),txt->headingLevel())); - } - break; - case IDoc::MarkupModifier: - { - IDocMarkupModifier *md = dynamic_cast(doc); - ASSERT(md!=0); - InPrint(("\n", - md->enabled(),md->markup(),md->headingLevel())); - } - break; - case IDoc::ItemizedList: - { - InPrint(("\n")); - IDocItemizedList *list = dynamic_cast(doc); - ASSERT(list!=0); - IDocIterator *di = list->elements(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("\n")); - } - break; - case IDoc::OrderedList: - { - InPrint(("\n")); - IDocOrderedList *list = dynamic_cast(doc); - ASSERT(list!=0); - IDocIterator *di = list->elements(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("\n")); - } - break; - case IDoc::ListItem: - { - InPrint(("\n")); - IDocListItem *li = dynamic_cast(doc); - ASSERT(li!=0); - IDocIterator *di = li->contents(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("\n")); - } - break; - case IDoc::ParameterItem: - { - IDocParameterItem *item = dynamic_cast(doc); - InPrint(("\n")); - IDocIterator *di = item->paramNames(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - DumpDoc(item->description(),level+1); - InPrint(("\n")); - } - break; - case IDoc::ParameterList: - { - IDocParameterList *list = dynamic_cast(doc); - InPrint(("\n",list->sectType())); - IDocIterator *di = list->params(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("\n")); - ASSERT(list!=0); - } - break; - case IDoc::Parameter: - { - IDocParameter *par = dynamic_cast(doc); - ASSERT(par!=0); - InPrint(("\n",par->name()->latin1())); - } - break; - case IDoc::SimpleSect: - { - IDocSimpleSect *ss = dynamic_cast(doc); - ASSERT(ss!=0); - InPrint(("\n",ss->typeString()->latin1())); - DumpDoc(ss->title(),level+1); - DumpDoc(ss->description(),level+1); - InPrint(("\n")); - } - break; - case IDoc::Title: - { - InPrint(("\n")); - IDocTitle *t = dynamic_cast<IDocTitle*>(doc); - ASSERT(t!=0); - IDocIterator *di = t->title(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - InPrint(("<title/>\n")); - } - break; - case IDoc::Ref: - { - IDocRef *ref = dynamic_cast<IDocRef*>(doc); - ASSERT(ref!=0); - InPrint(("<ref id=%s text=%s/>\n", - ref->refId()->latin1(),ref->text()->latin1())); - } - break; - case IDoc::VariableList: - { - InPrint(("<variablelist>\n")); - IDocVariableList *vl = dynamic_cast<IDocVariableList*>(doc); - ASSERT(vl!=0); - IDocIterator *di = vl->entries(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("<variablelist/>\n")); - } - break; - case IDoc::VariableListEntry: - { - IDocVariableListEntry *vle = dynamic_cast<IDocVariableListEntry*>(doc); - ASSERT(vle!=0); - ILinkedTextIterator *lti = vle->term(); - QString term = linkedTextToString(lti); - lti->release(); - InPrint(("<variablelistentry term=%s>\n",term.latin1())); - DumpDoc(vle->description(),level+1); - InPrint(("<variablelistentry/>\n")); - } - break; - case IDoc::HRuler: - { - IDocHRuler *hr = dynamic_cast<IDocHRuler*>(doc); - ASSERT(hr!=0); - InPrint(("<hruler/>\n")); - } - break; - case IDoc::LineBreak: - { - IDocLineBreak *lb = dynamic_cast<IDocLineBreak*>(doc); - ASSERT(lb!=0); - InPrint(("<linebreak/>\n")); - } - break; - case IDoc::ULink: - { - IDocULink *ul = dynamic_cast<IDocULink*>(doc); - ASSERT(ul!=0); - InPrint(("<ulink url=`%s' text=`%s'/>\n",ul->url()->latin1(),ul->text()->latin1())); - } - break; - case IDoc::EMail: - { - IDocEMail *em = dynamic_cast<IDocEMail*>(doc); - ASSERT(em!=0); - InPrint(("<email address=`%s'/>\n",em->address()->latin1())); - } - break; - case IDoc::Link: - { - IDocLink *lk = dynamic_cast<IDocLink*>(doc); - ASSERT(lk!=0); - InPrint(("<link refid=`%s' text=`%s'/>\n",lk->refId()->latin1(),lk->text()->latin1())); - } - break; - case IDoc::ProgramListing: - { - IDocProgramListing *pl = dynamic_cast<IDocProgramListing*>(doc); - ASSERT(pl!=0); - InPrint(("<programlisting>\n")); - IDocIterator *cli = pl->codeLines(); - IDoc *cl; - for (cli->toFirst();(cl=cli->current());cli->toNext()) - { - DumpDoc(cl,level+1); - } - cli->release(); - InPrint(("</programlisting>\n")); - } - break; - case IDoc::CodeLine: - { - IDocCodeLine *cl = dynamic_cast<IDocCodeLine*>(doc); - ASSERT(cl!=0); - InPrint(("<codeline lineNumber=%d refId=`%s'>\n",cl->lineNumber(),cl->refId()->latin1())); - IDocIterator *cei = cl->codeElements(); - IDoc *ce; - for (cei->toFirst();(ce=cei->current());cei->toNext()) - { - DumpDoc(ce,level+1); - } - cei->release(); - InPrint(("</codeline>\n")); - } - break; - case IDoc::Highlight: - { - IDocHighlight *hl = dynamic_cast<IDocHighlight*>(doc); - ASSERT(hl!=0); - InPrint(("<highlight kind=%d>\n",hl->kind())); - IDocIterator *cei = hl->codeElements(); - IDoc *ce; - for (cei->toFirst();(ce=cei->current());cei->toNext()) - { - DumpDoc(ce,level+1); - } - cei->release(); - InPrint(("</highlight>\n")); - } - break; - case IDoc::Formula: - { - IDocFormula *fm = dynamic_cast<IDocFormula*>(doc); - ASSERT(fm!=0); - InPrint(("<formula id=`%s' text=`%s'/>\n",fm->id()->latin1(),fm->text()->latin1())); - } - break; - case IDoc::Image: - { - IDocImage *img = dynamic_cast<IDocImage*>(doc); - ASSERT(img!=0); - InPrint(("<image name=`%s' caption=`%s'/>\n",img->name()->latin1(),img->caption()->latin1())); - } - break; - case IDoc::DotFile: - { - IDocDotFile *df = dynamic_cast<IDocDotFile*>(doc); - ASSERT(df!=0); - InPrint(("<dotfile name=`%s' caption=`%s'/>\n",df->name()->latin1(),df->caption()->latin1())); - } - break; - case IDoc::IndexEntry: - { - IDocIndexEntry *ie = dynamic_cast<IDocIndexEntry*>(doc); - ASSERT(ie!=0); - InPrint(("<indexentry primary=`%s' secondary=`%s'/>\n",ie->primary()->latin1(),ie->secondary()->latin1())); - } - break; - case IDoc::Table: - { - IDocTable *tbl = dynamic_cast<IDocTable*>(doc); - ASSERT(tbl!=0); - InPrint(("<table numcols=%d caption=`%s'>\n",tbl->numColumns(),tbl->caption()->latin1())); - IDocIterator *ri = tbl->rows(); - IDoc *row; - for (ri->toFirst();(row=ri->current());ri->toNext()) - { - DumpDoc(row,level+1); - } - ri->release(); - InPrint(("</table>\n")); - } - break; - case IDoc::Row: - { - IDocRow *row = dynamic_cast<IDocRow*>(doc); - ASSERT(row!=0); - InPrint(("<row>\n")); - IDocIterator *ei = row->entries(); - IDoc *e; - for (ei->toFirst();(e=ei->current());ei->toNext()) - { - DumpDoc(e,level+1); - } - ei->release(); - InPrint(("</row>\n")); - } - break; - case IDoc::Entry: - { - IDocEntry *ent = dynamic_cast<IDocEntry*>(doc); - ASSERT(ent!=0); - InPrint(("<entry>\n")); - IDocIterator *di = ent->contents(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("</entry>\n")); - } - break; - case IDoc::Section: - { - IDocSection *sec = dynamic_cast<IDocSection*>(doc); - ASSERT(sec!=0); - InPrint(("<section id=`%s' level=%d>\n", - sec->id()->latin1(),sec->level())); - DumpDoc(sec->title(),level+1); - IDocIterator *di = sec->paragraphs(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di=sec->subSections(); - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - IDocInternal *intern = sec->internal(); - if (intern) - { - DumpDoc(intern,level+1); - } - InPrint(("</section>\n")); - } - break; - case IDoc::Internal: - { - IDocInternal *intern = dynamic_cast<IDocInternal*>(doc); - ASSERT(intern!=0); - InPrint(("<internal>\n")); - IDocIterator *di = intern->paragraphs(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di=intern->subSections(); - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - InPrint(("</internal>\n")); - } - break; - case IDoc::Copy: - { - IDocCopy *cpy = dynamic_cast<IDocCopy*>(doc); - ASSERT(cpy!=0); - InPrint(("<copydoc>\n")); - IDocIterator *di = cpy->contents(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("<copydoc/>\n")); - } - break; - case IDoc::TocItem: - { - IDocTocItem *ti = dynamic_cast<IDocTocItem*>(doc); - ASSERT(ti!=0); - InPrint(("<tocitem id=\"%s\" title=\"%s\"/>\n", - ti->id()->latin1(),ti->title()->latin1())); - } - break; - case IDoc::TocList: - { - IDocTocList *tl = dynamic_cast<IDocTocList*>(doc); - ASSERT(tl!=0); - InPrint(("<toclist>\n")); - IDocIterator *di = tl->elements(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("<toclist/>\n")); - } - break; - case IDoc::Verbatim: - { - IDocVerbatim *vt = dynamic_cast<IDocVerbatim*>(doc); - ASSERT(vt!=0); - const char *s=0; - switch (vt->type()) - { - case IDocVerbatim::Verbatim: s="verbatim"; break; - case IDocVerbatim::HtmlOnly: s="htmlonly"; break; - case IDocVerbatim::LatexOnly: s="latexonly"; break; - default: - printf("Invalid verbatim type!\n"); - } - InPrint(("<verbatim %s>\n",s)); - InPrint(("%s",vt->text()->latin1())); - InPrint(("</verbatim>\n")); - } - break; - case IDoc::Anchor: - { - IDocAnchor *anc = dynamic_cast<IDocAnchor*>(doc); - ASSERT(anc!=0); - InPrint(("<anchor id='%s'/>\n",anc->id()->latin1())); - } - break; - case IDoc::Symbol: - { - IDocSymbol *sym = dynamic_cast<IDocSymbol*>(doc); - ASSERT(sym!=0); - InPrint(("<symbol type=%s letter=%c/>\n", - sym->typeString()->latin1(),sym->letter())); - } - break; - case IDoc::Root: - { - InPrint(("<root>\n")); - IDocRoot *root = dynamic_cast<IDocRoot*>(doc); - ASSERT(root!=0); - IDocIterator *di = root->contents(); - IDoc *pdoc; - for (di->toFirst();(pdoc=di->current());di->toNext()) - { - DumpDoc(pdoc,level+1); - } - di->release(); - InPrint(("</root>\n")); - } - break; - - default: - printf("Found unsupported node type %d!\n",doc->kind()); - break; - } -} - -void DumpGraph(IGraph *graph) -{ - if (graph==0) { printf(" --- no graph ---\n"); return; } - printf(" --- graph ----\n"); - INodeIterator *ni = graph->nodes(); - INode *node; - for (ni->toFirst();(node=ni->current());ni->toNext()) - { - printf(" --- node id=%s label=%s linkId=%s\n", - node->id()->latin1(), - node->label()->latin1(), - node->linkId()->latin1() - ); - IChildNodeIterator *cni = node->children(); - IChildNode *cn; - for (cni->toFirst();(cn=cni->current());cni->toNext()) - { - printf(" + child id=%s label=%s relation=%s\n", - cn->node()->id()->latin1(), - cn->node()->label()->latin1(), - cn->relationString()->latin1() - ); - IEdgeLabelIterator *eli = cn->edgeLabels(); - IEdgeLabel *el; - for (eli->toFirst();(el=eli->current());eli->toNext()) - { - printf(" edgeLabel=%s\n",el->label()->latin1()); - } - eli->release(); - } - cni->release(); - } - ni->release(); - printf(" --- end graph ----\n"); - -} - -void DumpParamList(IParamIterator *pli,int indent) -{ - QString indentStr; - indentStr.fill(' ',indent); - IParam *par; - for (pli->toFirst();(par=pli->current());pli->toNext()) - { - ILinkedTextIterator *lti = par->type(); - QString parType = linkedTextToString(lti); - lti->release(); - lti = par->defaultValue(); - QString defVal = linkedTextToString(lti); - lti->release(); - printf("%sParam type=%s decl_name=%s def_name=%s defvalue=%s\n", - indentStr.data(), parType.latin1(), - par->declarationName()->latin1(), - par->definitionName()->latin1(), - defVal.latin1()); - } -} - -int main(int argc,char **argv) -{ - if (argc!=2) - { - printf("Usage: %s xmldir\n",argv[0]); - exit(1); - } - - IDoxygen *dox = createObjectModel(); - - dox->setDebugLevel(4); - - if (!dox->readXMLDir(argv[1])) - { - printf("Error reading %s/index.xml\n",argv[1]); - exit(1); - } - - ICompoundIterator *cli = dox->compounds(); - ICompound *comp; - printf("--- compound list ---------\n"); - for (cli->toFirst();(comp=cli->current());cli->toNext()) - { - printf("Compound name=%s id=%s kind=%s\n", - comp->name()->latin1(),comp->id()->latin1(),comp->kindString()->latin1()); - - ISectionIterator *sli = comp->sections(); - ISection *sec; - for (sli->toFirst();(sec=sli->current());sli->toNext()) - { - printf(" Section kind=%s\n",sec->kindString()->latin1()); - IMemberIterator *mli = sec->members(); - IMember *mem; - if( sec->kind() == ISection::UserDefined ) - { - IUserDefined *group = dynamic_cast<IUserDefined*>(sec); - printf(" Title=%s\n", group->header()->latin1() ); - } - for (mli->toFirst();(mem=mli->current());mli->toNext()) - { - ILinkedTextIterator *lti = mem->type(); - printf(" Member type=%s name=%s\n", - linkedTextToString(lti).latin1(),mem->name()->latin1()); - lti->release(); - - IParamIterator *pli = mem->parameters(); - DumpParamList(pli,6); - pli->release(); - IMemberReferenceIterator *mri = mem->references(); - IMemberReference *mr; - for (mri->toFirst();(mr=mri->current());mri->toNext()) - { - IMember *memr = mr->member(); - printf(" References %s at line %d\n", - mr->name()->latin1(),memr->bodyStart()); - } - - mri->release(); - mri = mem->referencedBy(); - for (mri->toFirst();(mr=mri->current());mri->toNext()) - { - IMember *memr = mr->member(); - printf(" ReferencedBy %s at line %d\n", - mr->name()->latin1(),memr->bodyStart()); - } - mri->release(); - - if (mem->kind()==IMember::Enum) // we have found an enum - { - IEnum *e = dynamic_cast<IEnum*>(mem); - IMemberIterator *evi = e->enumValues(); // get the enum values - IMember *mev; - for (evi->toFirst();(mev=evi->current());evi->toNext()) - { - IEnumValue *ev = dynamic_cast<IEnumValue*>(mev); - ILinkedTextIterator *lti = ev->initializer(); - QString init = linkedTextToString(lti); - lti->release(); - printf(" Enum value `%s' init=`%s'\n", - ev->name()->latin1(),init.latin1()); - } - evi->release(); - } - - pli = mem->templateParameters(); - if (pli) - { - printf(" Template parameters\n"); - DumpParamList(pli,8); - pli->release(); - } - - IDoc *doc = mem->briefDescription(); - if (doc) - { - printf("===== brief description ==== \n"); - DumpDoc(doc,0); - } - - doc = mem->detailedDescription(); - if (doc) - { - printf("===== detailed description ==== \n"); - DumpDoc(doc,0); - } - } - mli->release(); - } - sli->release(); - - IDoc *doc = comp->briefDescription(); - if (doc) - { - printf("===== brief description ==== \n"); - DumpDoc(doc,0); - } - - doc = comp->detailedDescription(); - if (doc) - { - printf("===== detailed description ==== \n"); - DumpDoc(doc,0); - } - - if (comp->kind()==ICompound::Class) - { - IClass *cls = dynamic_cast<IClass*>(comp); - ASSERT(cls!=0); - - printf("==== inheritance graph ==== \n"); - DumpGraph(cls->inheritanceGraph()); - - printf("==== collabration graph ==== \n"); - DumpGraph(cls->collaborationGraph()); - - printf("==== base classes ==== \n"); - IRelatedCompoundIterator *bcli = cls->baseCompounds(); - IRelatedCompound *bClass; - for (bcli->toFirst();(bClass=bcli->current());bcli->toNext()) - { - ICompound *bc = bClass->compound(); - printf(" + class %s\n",bc->name()->latin1()); - bc->release(); - } - bcli->release(); - - printf("==== derived classes ==== \n"); - IRelatedCompoundIterator *dcli = cls->derivedCompounds(); - IRelatedCompound *dClass; - for (dcli->toFirst();(dClass=dcli->current());dcli->toNext()) - { - ICompound *dc = dClass->compound(); - printf(" + class %s\n",dc->name()->latin1()); - dc->release(); - } - dcli->release(); - } - else if (comp->kind()==ICompound::File) - { - IFile *file = dynamic_cast<IFile*>(comp); - ASSERT(file!=0); - - printf("==== include dependency graph ==== \n"); - DumpGraph(file->includeDependencyGraph()); - - printf("==== included by dependency graph ==== \n"); - DumpGraph(file->includedByDependencyGraph()); - - printf("==== source ====\n"); - DumpDoc(file->source(),0); - } - - comp->release(); - } - cli->release(); - printf("---------------------------\n"); - - dox->release(); - - return 0; -} - diff --git a/addon/doxmlparser/test/xmlparse.pro.in b/addon/doxmlparser/test/xmlparse.pro.in deleted file mode 100644 index cfb95be..0000000 --- a/addon/doxmlparser/test/xmlparse.pro.in +++ /dev/null @@ -1,20 +0,0 @@ -TEMPLATE = app.t -CONFIG = console warn_on $extraopts -HEADERS = -SOURCES = main.cpp -unix:LIBS += -L../../../lib -L../lib -ldoxmlparser -lqtools -win32:INCLUDEPATH += . -win32-mingw:LIBS += -L../../../lib -L../lib -ldoxmlparser -lqtools -win32-msvc:LIBS += doxmlparser.lib qtools.lib shell32.lib -win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\..\..\lib;..\lib -win32-borland:LIBS += doxmlparser.lib qtools.lib shell32.lib -win32-borland:TMAKE_LFLAGS += -L..\..\..\lib -L..\lib -win32:TMAKE_CXXFLAGS += -DQT_NODLL -DESTDIR = -OBJECTS_DIR = ../objects -TARGET = xmlparse -INCLUDEPATH += ../../../qtools ../include -DEPENDPATH += ../include -unix:TARGETDEPS = ../lib/libdoxmlparser.a -win32:TARGETDEPS = ..\lib\doxmlparser.lib - diff --git a/addon/doxywizard/.cvsignore b/addon/doxywizard/.cvsignore deleted file mode 100644 index 75ae21b..0000000 --- a/addon/doxywizard/.cvsignore +++ /dev/null @@ -1,8 +0,0 @@ -Makefile -doxywizard.pro -Makefile.doxywizard -config.cpp -config.h -config.l -moc -obj diff --git a/addon/doxywizard/Makefile.in b/addon/doxywizard/Makefile.in deleted file mode 100644 index 42d5871..0000000 --- a/addon/doxywizard/Makefile.in +++ /dev/null @@ -1,42 +0,0 @@ -# -# -# -# Copyright (C) 1997-2005 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# - -all: config.h config.l version.cpp Makefile.doxywizard - $(MAKE) -f Makefile.doxywizard QTDIR=$(QTDIR) $@ - -config.h: ../../src/config.h - $(CP) ../../src/config.h config.h - -config.l: ../../src/config.l - $(CP) ../../src/config.l config.l - -version.cpp: - $(CP) ../../src/version.cpp version.cpp - -Makefile.doxywizard: doxywizard.pro - $(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard - -tmake: - $(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard - -clean: Makefile.doxywizard - $(MAKE) -f Makefile.doxywizard clean - $(RM) config.cpp - -distclean: clean - $(RM) Makefile.doxywizard config.l config.h version.cpp - -install: - $(INSTTOOL) -d $(INSTALL)/bin - $(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin - -FORCE: diff --git a/addon/doxywizard/Makefile.win_nmake.in b/addon/doxywizard/Makefile.win_nmake.in deleted file mode 100644 index 7ebcdf8..0000000 --- a/addon/doxywizard/Makefile.win_nmake.in +++ /dev/null @@ -1,38 +0,0 @@ -# -# -# -# Copyright (C) 1997-2005 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# - -all: config.h config.l unistd.h Makefile.doxywizard - $(MAKE) -f Makefile.doxywizard $@ - -unistd.h: - $(CP) ..\..\src\unistd.h unistd.h - -config.h: - $(CP) ..\..\src\config.h config.h - -config.l: - $(CP) ..\..\src\config.l config.l - -Makefile.doxywizard: doxywizard.pro - $(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard - -tmake: - $(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard - -clean: Makefile.doxywizard - $(MAKE) -f Makefile.doxywizard clean - $(RM) config.cpp - -distclean: clean - $(RM) Makefile.doxywizard config.l config.h - -FORCE: diff --git a/addon/doxywizard/README b/addon/doxywizard/README deleted file mode 100644 index fc9c5aa..0000000 --- a/addon/doxywizard/README +++ /dev/null @@ -1,3 +0,0 @@ -Doxywizard is a graphical front-end to read/edit/write doxygen configuration -files. It requires Qt version 3.x or higher. - diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp deleted file mode 100644 index b221530..0000000 --- a/addon/doxywizard/doxywizard.cpp +++ /dev/null @@ -1,1424 +0,0 @@ -#include <qlabel.h> -#include <qhbox.h> -#include <qvbox.h> -#include <qlineedit.h> -#include <qapplication.h> -#include <qcheckbox.h> -#include <qpushbutton.h> -#include <qbuttongroup.h> -#include <qradiobutton.h> -#include <qlayout.h> -#include <qcombobox.h> -#include <qfiledialog.h> -#include <qmessagebox.h> -#include <qtextedit.h> -#include <qprocess.h> -#include <qtimer.h> -#include <qstatusbar.h> -#include <qfileinfo.h> -#include <qpopupmenu.h> -#include <qmenubar.h> -#include <qtooltip.h> - -#include <stdlib.h> - -#if defined(Q_OS_MACX) -#include <CoreFoundation/CFBundle.h> -#include <ApplicationServices/ApplicationServices.h> -#undef check -#endif - -#include "doxywizard.h" -#include "expert.h" -#include "config.h" -#include "version.h" - -const int messageTimeout = 5000; //!< status bar message timeout in millisec. - -#if defined(Q_OS_MACX) -QCString getResourcePath() -{ - // todo: use qApp->applicationDirPath() - QCString result; - CFURLRef pluginRef = CFBundleCopyBundleURL(CFBundleGetMainBundle()); - CFStringRef macPath = CFURLCopyFileSystemPath(pluginRef, kCFURLPOSIXPathStyle); - result = CFStringGetCStringPtr(macPath, CFStringGetSystemEncoding()); - result+="/Contents/Resources/"; - return result; -} - -#define GRAPHVIZ_PATH "/Applications/Graphviz.app" -#define DOT_PATH GRAPHVIZ_PATH "/Contents/MacOS" -#define DOT_LOCATION DOT_PATH "/dot" - -bool checkIfDotInstalled() -{ - QFileInfo fi(GRAPHVIZ_PATH); - if (fi.exists() && fi.isDir()) - { - fi.setFile(DOT_LOCATION); - if (fi.exists() && fi.isFile()) - { - return TRUE; - } - } - return FALSE; -} - -void setDotPath() -{ - if (checkIfDotInstalled()) - { - Config_getString("DOT_PATH")=DOT_PATH; - Config_getBool("HAVE_DOT")=TRUE; - } -} - -#endif - - -//========================================================================== - -Step1::Step1(QWidget *parent) : QWidget(parent,"Step1") -{ - QVBoxLayout *layout = new QVBoxLayout(this); - layout->setMargin(4); - layout->setSpacing(8); - layout->addWidget(new QLabel( "Provide some information " - "about the project you are documenting",this)); - QWidget *w = new QWidget( this ); - QHBoxLayout *bl = new QHBoxLayout(w,10); - - QVBox *col1 = new QVBox( w ); - col1->setSpacing(8); - (new QLabel("Project name:",col1))->setAlignment(Qt::AlignRight|Qt::AlignVCenter); - (new QLabel("Project version or id:",col1))->setAlignment(Qt::AlignRight|Qt::AlignVCenter); - - QVBox *col2 = new QVBox( w ); - col2->setSpacing(8); - m_projName = new QLineEdit(col2); - m_projNumber = new QLineEdit(col2); - - bl->addWidget(col1); - bl->addWidget(col2); - - layout->addWidget(w); - - //--------------------------------------------------- - QFrame *f = new QFrame( this ); - f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - layout->addWidget(f); - - layout->addWidget(new QLabel( "Specify the directory to " - "scan for source code", this)); - QHBox *row = new QHBox( this ); - row->setSpacing(10); - new QLabel("Source code directory:",row); - m_sourceDir = new QLineEdit(row); - m_srcSelectDir = new QPushButton("Select...",row); - layout->addWidget(row); - - m_recursive = new QCheckBox("Scan recursively",this); - m_recursive->setChecked(TRUE); - layout->addWidget(m_recursive); - - //--------------------------------------------------- - f = new QFrame( this ); - f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - layout->addWidget(f); - - layout->addWidget(new QLabel( - "Specify the directory where doxygen should " - "put the generated documentation",this - )); - row = new QHBox( this ); - row->setSpacing(10); - new QLabel("Destination directory:",row); - m_destDir = new QLineEdit(row); - m_dstSelectDir = new QPushButton("Select...",row); - layout->addWidget(row); - layout->addStretch(1); - - connect(m_srcSelectDir,SIGNAL(clicked()), - this,SLOT(selectSourceDir())); - connect(m_dstSelectDir,SIGNAL(clicked()), - this,SLOT(selectDestinationDir())); -} - -void Step1::selectSourceDir() -{ - m_sourceDir->setText(QFileDialog::getExistingDirectory(m_sourceDir->text(),this)); -} - -void Step1::selectDestinationDir() -{ - m_destDir->setText(QFileDialog::getExistingDirectory(m_destDir->text(),this)); -} - -QString Step1::getProjectName() const -{ - return m_projName->text(); -} - -QString Step1::getProjectNumber() const -{ - return m_projNumber->text(); -} - -QString Step1::getSourceDir() const -{ - return m_sourceDir->text(); -} - -bool Step1::scanRecursively() const -{ - return m_recursive->isChecked(); -} - -QString Step1::getDestinationDir() const -{ - return m_destDir->text(); -} - -void Step1::setProjectName(const QString &name) -{ - m_projName->setText(name); -} - -void Step1::setProjectNumber(const QString &num) -{ - m_projNumber->setText(num); -} - -void Step1::setSourceDir(const QString &dir) -{ - m_sourceDir->setText(dir); -} - -void Step1::setRecursiveScan(bool enable) -{ - m_recursive->setChecked(enable); -} - -void Step1::setDestinationDir(const QString &dir) -{ - m_destDir->setText(dir); -} - - -//========================================================================== - -Step2::Step2(QWidget *parent) : QWidget(parent,"Step2") -{ - QVBoxLayout *layout = new QVBoxLayout(this); - layout->setSpacing(8); - - m_extractMode = new QButtonGroup("Select the desired extraction mode:",this); - QGridLayout *gbox = new QGridLayout( m_extractMode, 4, 1, 8, 0 ); - gbox->addRowSpacing( 0, fontMetrics().lineSpacing()+2 ); - gbox->addWidget(new QRadioButton("Documented entities only",m_extractMode),1,0); - gbox->addWidget(new QRadioButton("All entities",m_extractMode),2,0); - gbox->addWidget(m_crossRef = new QCheckBox("Include cross-referenced source code in the output",m_extractMode),3,0); - m_extractMode->setButton(0); - layout->addWidget(m_extractMode); - - //--------------------------------------------------- - QFrame *f = new QFrame( this ); - f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - layout->addWidget(f); - - m_optimizeLang = new QButtonGroup("Select programming language to optimize the results for",this); - gbox = new QGridLayout( m_optimizeLang, 4, 1, 8, 0 ); - gbox->addRowSpacing( 0, fontMetrics().lineSpacing()+2 ); - gbox->addWidget(new QRadioButton("Optimize for C++ output",m_optimizeLang),1,0); - gbox->addWidget(new QRadioButton("Optimize for Java output",m_optimizeLang),2,0); - gbox->addWidget(new QRadioButton("Optimize for C output",m_optimizeLang),3,0); - m_optimizeLang->setButton(0); - layout->addWidget(m_optimizeLang); - - layout->addStretch(1); - - connect(m_crossRef,SIGNAL(stateChanged(int)), - parent,SLOT(changeCrossRefState(int))); -} - -bool Step2::crossReferencingEnabled() const -{ - //printf("Step2::crossReferencingEnabled()=%d\n",m_crossRef->isOn()); - return m_crossRef->isOn(); -} - -void Step2::enableCrossReferencing() -{ - //printf("Step2::enableCrossReferencing()\n"); - m_crossRef->setChecked(TRUE); -} - -bool Step2::extractAll() const -{ - //printf("Step2::extractAll()=%d\n",m_extractMode->find(1)->isOn()); - return m_extractMode->find(1)->isOn(); -} - -bool Step2::crossReferencing() const -{ - return m_crossRef->isChecked(); -} - -OptLang Step2::optimizeFor() const -{ - switch (m_optimizeLang->selectedId()) - { - case 0: return Lang_Cpp; - case 1: return Lang_Java; - case 2: return Lang_C; - } - return Lang_Cpp; -} - -void Step2::setExtractAll(bool enable) -{ - //printf("Step2::setExtractAll(%d)\n",enable); - m_extractMode->setButton(enable?1:0); -} - -void Step2::setCrossReferencing(bool enable) -{ - //printf("Step2::setCrossReferencing(%d)\n",enable); - m_crossRef->setChecked(enable); -} - -void Step2::setOptimizeFor(OptLang lang) -{ - switch (lang) - { - case Lang_Cpp: m_optimizeLang->setButton(0); break; - case Lang_Java: m_optimizeLang->setButton(1); break; - case Lang_C: m_optimizeLang->setButton(2); break; - } -} - -//========================================================================== - -Step3::Step3(QWidget *parent) : QWidget(parent,"Step3") -{ - QVBoxLayout *layout = new QVBoxLayout(this); - QButtonGroup *bg = new QButtonGroup("Output format(s) to generate",this); - QGridLayout *gbox = new QGridLayout( bg, 8, 1, 8, 0 ); - gbox->addRowSpacing( 0, fontMetrics().lineSpacing()+2 ); - gbox->addWidget(m_htmlEnabled=new QCheckBox("HTML",bg),1,0); - QWidget *w = new QWidget(bg); - QHBoxLayout *bl = new QHBoxLayout(w); - m_htmlOptions = new QButtonGroup(w); - m_htmlOptions->hide(); - m_htmlOptionBox = new QVBox(w); - m_htmlOptions->insert(new QRadioButton("plain HTML",m_htmlOptionBox)); - m_htmlOptions->insert(new QRadioButton("with frames and a navigation tree",m_htmlOptionBox)); - m_htmlOptions->insert(new QRadioButton("prepare for compressed HTML (.chm)",m_htmlOptionBox)); - m_htmlOptions->insert(m_searchEnabled=new QCheckBox("With search function (requires PHP enabled web server)",m_htmlOptionBox)); - bl->addSpacing(30); - bl->addWidget(m_htmlOptionBox); - m_htmlOptions->setButton(0); - m_htmlOptionBox->setEnabled(TRUE); - gbox->addWidget(w,2,0); - - gbox->addWidget(m_latexEnabled=new QCheckBox("LaTeX",bg),3,0); - w = new QWidget(bg); - bl = new QHBoxLayout(w); - m_texOptions = new QButtonGroup(w); - m_texOptions->hide(); - m_texOptionBox = new QVBox(w); - m_texOptions->insert(new QRadioButton("as intermediate format for hyperlinked PDF",m_texOptionBox)); - m_texOptions->insert(new QRadioButton("as intermediate format for PDF",m_texOptionBox)); - m_texOptions->insert(new QRadioButton("as intermediate format for PostScript",m_texOptionBox)); - bl->addSpacing(30); - bl->addWidget(m_texOptionBox); - m_texOptions->setButton(0); - m_texOptionBox->setEnabled(FALSE); - gbox->addWidget(w,4,0); - - gbox->addWidget(m_manEnabled=new QCheckBox("Man pages",bg),5,0); - gbox->addWidget(m_rtfEnabled=new QCheckBox("Rich Text Format (RTF)",bg),6,0); - gbox->addWidget(m_xmlEnabled=new QCheckBox("XML",bg),7,0); - bg->setButton(0); - layout->addWidget(bg); - - layout->addStretch(1); - - connect(m_latexEnabled,SIGNAL(stateChanged(int)), - this,SLOT(latexStateChange(int))); - connect(m_htmlEnabled,SIGNAL(stateChanged(int)), - this,SLOT(htmlStateChange(int))); -} - -void Step3::latexStateChange(int state) -{ - if (state==QButton::On) - { - m_texOptionBox->setEnabled(TRUE); - } - else if (state==QButton::Off) - { - m_texOptionBox->setEnabled(FALSE); - } -} - -void Step3::htmlStateChange(int state) -{ - if (state==QButton::On) - { - m_htmlOptionBox->setEnabled(TRUE); - } - else if (state==QButton::Off) - { - m_htmlOptionBox->setEnabled(FALSE); - } -} - -bool Step3::htmlEnabled() const -{ - return m_htmlEnabled->isChecked(); -} - -bool Step3::latexEnabled() const -{ - return m_latexEnabled->isChecked(); -} - -bool Step3::manEnabled() const -{ - return m_manEnabled->isChecked(); -} - -bool Step3::rtfEnabled() const -{ - return m_rtfEnabled->isChecked(); -} - -bool Step3::xmlEnabled() const -{ - return m_xmlEnabled->isChecked(); -} - -bool Step3::searchEnabled() const -{ - return m_searchEnabled->isChecked(); -} - -HtmlStyle Step3::htmlStyle() const -{ - if (m_htmlOptions->find(0)->isOn()) - { - return HS_Plain; - } - else if (m_htmlOptions->find(1)->isOn()) - { - return HS_TreeView; - } - else if (m_htmlOptions->find(2)->isOn()) - { - return HS_CHM; - } - // broken radio button logic - return HS_Plain; -} - -TexStyle Step3::texStyle() const -{ - switch (m_texOptions->selectedId()) - { - case 0: return TS_PDFHyper; - case 1: return TS_PDF; - case 2: return TS_PS; - } - return TS_PDFHyper; -} - -void Step3::setHtmlEnabled(bool enable) -{ - m_htmlEnabled->setChecked(enable); -} - -void Step3::setLatexEnabled(bool enable) -{ - m_latexEnabled->setChecked(enable); -} - -void Step3::setManEnabled(bool enable) -{ - m_manEnabled->setChecked(enable); -} - -void Step3::setRtfEnabled(bool enable) -{ - m_rtfEnabled->setChecked(enable); -} - -void Step3::setXmlEnabled(bool enable) -{ - m_xmlEnabled->setChecked(enable); -} - -void Step3::setSearchEnabled(bool enable) -{ - m_searchEnabled->setChecked(enable); -} - -void Step3::setHtmlStyle(HtmlStyle style) -{ - switch(style) - { - case HS_Plain: m_htmlOptions->setButton(0); break; - case HS_TreeView: m_htmlOptions->setButton(1); break; - case HS_CHM: m_htmlOptions->setButton(2); break; - } -} - -void Step3::setTexStyle(TexStyle style) -{ - switch(style) - { - case TS_PDFHyper: m_texOptions->setButton(0); break; - case TS_PDF: m_texOptions->setButton(1); break; - case TS_PS: m_texOptions->setButton(2); break; - } -} - - -//========================================================================== - -Step4::Step4(QWidget *parent) : QWidget(parent,"Step4") -{ - QVBoxLayout *layout = new QVBoxLayout(this); - m_diagramMode = new QButtonGroup("Diagrams to generate",this); - QGridLayout *gbox = new QGridLayout( m_diagramMode, 5, 1, 8, 0 ); - gbox->addRowSpacing( 0, fontMetrics().lineSpacing()+2 ); - gbox->addWidget(new QRadioButton("No diagrams",m_diagramMode),1,0); - gbox->addWidget(new QRadioButton("Use built-in class diagram generator",m_diagramMode),2,0); - gbox->addWidget(new QRadioButton("Use dot tool from the GraphViz package to generate",m_diagramMode),3,0); - QWidget *w = new QWidget(m_diagramMode); - QHBoxLayout *bl = new QHBoxLayout(w); - QButtonGroup *dotGroup = new QButtonGroup(w); - dotGroup->hide(); - m_dotOptions = new QVBox(w); - dotGroup->insert(m_dotClass=new QCheckBox("Class diagrams",m_dotOptions)); - dotGroup->insert(m_dotCollaboration=new QCheckBox("Collaboration diagrams",m_dotOptions)); - dotGroup->insert(m_dotInclude=new QCheckBox("Include dependency graphs",m_dotOptions)); - dotGroup->insert(m_dotIncludedBy=new QCheckBox("Included by dependency graphs",m_dotOptions)); - dotGroup->insert(m_dotInheritance=new QCheckBox("Overall Class hierarchy",m_dotOptions)); - dotGroup->insert(m_dotCall=new QCheckBox("Call graphs",m_dotOptions)); - bl->addSpacing(30); - bl->addWidget(m_dotOptions); - dotGroup->setButton(0); - m_dotOptions->setEnabled(FALSE); - gbox->addWidget(w,4,0); - m_diagramMode->setButton(1); - layout->addWidget(m_diagramMode); - layout->addStretch(1); - - connect(m_diagramMode,SIGNAL(clicked(int)), - this,SLOT(diagramModeChanged(int))); - connect(m_dotCall,SIGNAL(stateChanged(int)), - parent,SLOT(changeCallGraphState(int))); -} - -void Step4::diagramModeChanged(int buttonId) -{ - m_dotOptions->setEnabled(buttonId==2); -} - -void Step4::disableCallGraphs() -{ - m_dotCall->setChecked(FALSE); -} - -bool Step4::callGraphEnabled() const -{ - return m_dotCall->isOn(); -} - -DiagramMode Step4::diagramMode() const -{ - switch(m_diagramMode->selectedId()) - { - case 0: return DM_None; - case 1: return DM_Builtin; - case 2: return DM_Dot; - } - return DM_None; -} - -bool Step4::classDiagram() const -{ - return m_dotClass->isChecked(); -} - -bool Step4::collaborationDiagram() const -{ - return m_dotCollaboration->isChecked(); -} - -bool Step4::includeGraph() const -{ - return m_dotInclude->isChecked(); -} - -bool Step4::includedByGraph() const -{ - return m_dotIncludedBy->isChecked(); -} - -bool Step4::inheritanceGraph() const -{ - return m_dotInheritance->isChecked(); -} - -bool Step4::callGraph() const -{ - return m_dotCall->isChecked(); -} - -void Step4::setDiagramMode(DiagramMode mode) -{ - switch(mode) - { - case DM_None: m_diagramMode->setButton(0); diagramModeChanged(0); break; - case DM_Builtin: m_diagramMode->setButton(1); diagramModeChanged(1); break; - case DM_Dot: m_diagramMode->setButton(2); diagramModeChanged(2); break; - } -} - -void Step4::setClassDiagram(bool enable) -{ - m_dotClass->setChecked(enable); -} - -void Step4::setCollaborationDiagram(bool enable) -{ - m_dotCollaboration->setChecked(enable); -} - -void Step4::setIncludeGraph(bool enable) -{ - m_dotInclude->setChecked(enable); -} - -void Step4::setIncludedByGraph(bool enable) -{ - m_dotIncludedBy->setChecked(enable); -} - -void Step4::setInheritanceGraph(bool enable) -{ - m_dotInheritance->setChecked(enable); -} - -void Step4::setCallGraph(bool enable) -{ - m_dotCall->setChecked(enable); -} - - -//========================================================================== - -Wizard::Wizard(QWidget *parent=0) : QTabDialog(parent) -{ - addTab( m_step1 = new Step1(this),"Project"); - addTab( m_step2 = new Step2(this),"Mode"); - addTab( m_step3 = new Step3(this),"Output"); - addTab( m_step4 = new Step4(this),"Diagrams"); - setCancelButton(); -} - -void Wizard::changeCallGraphState(int state) -{ - if (state==QButton::On && !m_step2->crossReferencingEnabled()) - { - if (QMessageBox::question(this,"This option depends on another option", - "The call graph option requires that cross-referencing " - "of source code is enabled.\nDo you want to enable this " - "option?",QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes) - { - m_step2->enableCrossReferencing(); - } - else - { - m_step4->disableCallGraphs(); - } - } -} - -void Wizard::changeCrossRefState(int state) -{ - if (state==QButton::Off && m_step4->callGraphEnabled()) - { - if (QMessageBox::question(this,"Another option depends on this one", - "The call graph option requires that cross-referencing " - "of source code is enabled.\nDo you want to disable the call " - "graph option?",QMessageBox::Yes,QMessageBox::No - )==QMessageBox::Yes - ) - { - m_step4->disableCallGraphs(); - } - else - { - m_step2->enableCrossReferencing(); - } - } -} - -//========================================================================== - -MainWidget::MainWidget(QWidget *parent) - : QMainWindow(parent,"MainWidget") -{ - setCaption("Doxygen GUI frontend"); - - // initialize config settings - Config::instance()->init(); - Config::instance()->check(); -#if defined(Q_OS_MACX) - setDotPath(); -#endif - - QWidget *w = new QWidget(this); - setCentralWidget(w); - QVBoxLayout *layout = new QVBoxLayout(w); - layout->setMargin(10); - - QPopupMenu *file = new QPopupMenu(this); - file->insertItem("Open...", this, SLOT(loadConfigFile()), CTRL+Key_O); - file->insertItem("Save As...", this, SLOT(saveConfigFile()), CTRL+Key_S); - m_recentMenu = new QPopupMenu; - file->insertItem( "&Recent configurations", m_recentMenu ); - connect(m_recentMenu,SIGNAL(activated(int)),this,SLOT(openRecent(int))); - file->insertItem("Set as default...",this,SLOT(saveDefaults()) ); - file->insertItem("Reset...",this,SLOT(resetConfig()) ); - file->insertItem("Quit", this, SLOT(quit()), CTRL+Key_Q); - QPopupMenu *help = new QPopupMenu(this); -#if defined(Q_OS_MACX) - help->insertItem("Online manual", this, SLOT(manual()), Key_F1); -#endif - help->insertItem("About", this, SLOT(about()) ); - menuBar()->insertItem("File",file); - menuBar()->insertItem("Help",help); - - //--------------------------------------------------- - QVBox *heading = new QVBox(w); - QLabel *l = new QLabel("Step 1: Configure doxygen",heading); - QFrame *f = new QFrame( heading ); - f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - //f->setFixedSize(l->sizeHint().width(),f->sizeHint().height()); - layout->addWidget(heading); - layout->addSpacing(10); - - l = new QLabel("Choose one of the following ways to configure doxygen",w); - layout->addWidget(l); - layout->addSpacing(5); - QHBoxLayout *hbl = new QHBoxLayout(layout); - hbl->setSpacing(8); - - m_wizard = new QPushButton("Wizard...",w); - QToolTip::add(m_wizard,"Quickly configure the most important settings"); - hbl->addWidget(m_wizard); - - m_expert = new QPushButton("Expert...",w); - QToolTip::add(m_expert,"Determine all configuration settings in detail"); - hbl->addWidget(m_expert); - - m_load = new QPushButton("Load...",w); - QToolTip::add(m_load,"Load the configuration settings from file"); - hbl->addWidget(m_load); - - hbl->addStretch(1); - - //--------------------------------------------------- - heading = new QVBox(w); - l = new QLabel("Step 2: Save the configuration file",heading); - f = new QFrame( heading ); - f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - //f->setFixedSize(l->sizeHint().width(),f->sizeHint().height()); - layout->addSpacing(15); - layout->addWidget(heading); - layout->addSpacing(5); - - QGridLayout *grid = new QGridLayout(layout,1,2,10); - m_save = new QPushButton("Save...",w); - m_save->setFixedSize(m_save->sizeHint()); - grid->addWidget(m_save,0,0); - grid->addWidget(m_saveStatus=new QLabel(w),0,1); - m_saveStatus->setTextFormat(Qt::RichText); - - //--------------------------------------------------- - heading = new QVBox(w); - l = new QLabel("Step 3: Specify the directory from which to run doxygen",heading); - f = new QFrame( heading ); - f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - //f->setFixedSize(l->sizeHint().width(),f->sizeHint().height()); - layout->addSpacing(15); - layout->addWidget(heading); - layout->addSpacing(5); - - QHBoxLayout *row = new QHBoxLayout( layout ); - row->setSpacing(10); - row->addWidget(new QLabel("Working directory:",w)); - m_workingDir = new QLineEdit(w); - m_selWorkingDir = new QPushButton("Select...",w); - row->addWidget(m_workingDir,1); - row->addWidget(m_selWorkingDir); - - //--------------------------------------------------- - heading = new QVBox(w); - l = new QLabel("Step 4: Run doxygen",heading); - f = new QFrame( heading ); - f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - //f->setFixedSize(l->sizeHint().width(),f->sizeHint().height()); - layout->addSpacing(15); - layout->addWidget(heading); - layout->addSpacing(5); - - row = new QHBoxLayout( layout ); - row->setSpacing(10); - m_run = new QPushButton("Start",w); - row->addWidget(m_run); - row->addWidget(m_runStatus = new QLabel("Status: not running",w)); - row->addStretch(1); - m_run->setEnabled(FALSE); - m_runStatus->setEnabled(FALSE); - - m_saveLog = new QPushButton("Save log...",w); - m_saveLog->setEnabled(FALSE); - row->addWidget(m_saveLog); - - layout->addSpacing(8); - layout->addWidget(m_outputHeading=new QLabel("Output produced by doxygen",w)); - grid = new QGridLayout(layout,1,1,3); - m_outputLog = new QTextEdit(w); - m_outputLog->setReadOnly(TRUE); - m_outputLog->setMinimumWidth(600); - grid->addWidget(m_outputLog,0,0); - grid->setColStretch(0,1); - grid->setRowStretch(0,1); - m_outputLog->setEnabled(FALSE); - m_outputHeading->setEnabled(FALSE); - - // make connections - connect(m_wizard,SIGNAL(clicked()), - this,SLOT(launchWizard())); - connect(m_expert,SIGNAL(clicked()), - this,SLOT(launchExpert())); - connect(m_load,SIGNAL(clicked()), - this,SLOT(loadConfigFile())); - connect(m_save,SIGNAL(clicked()), - this,SLOT(saveConfigFile())); - connect(m_selWorkingDir,SIGNAL(clicked()), - this,SLOT(selectWorkingDir())); - connect(m_workingDir,SIGNAL(textChanged(const QString&)), - this,SLOT(updateRunnable(const QString&))); - connect(m_run,SIGNAL(clicked()), - this,SLOT(runDoxygen())); - connect(m_saveLog,SIGNAL(clicked()), - this,SLOT(saveLog())); - - // load default settings - m_settings.setPath("www.doxygen.org","Doxygen GUI"); - bool ok; - QString config = m_settings.readEntry("/doxywizard/config/default",QString::null,&ok); - if (ok && !config.isEmpty()) - { - Config::instance()->parseString("default settings",config); - } - QString workingDir = m_settings.readEntry("/doxywizard/config/workingdir",QString::null,&ok); - if (ok && !workingDir.isEmpty()) - { - m_workingDir->setText(workingDir); - } - setConfigSaved(FALSE); - for (int i=0;i<10;i++) - { - QString entry = m_settings.readEntry(QString().sprintf("/doxywizard/recent/config%d",i)); - if (!entry.isEmpty()) - { - addRecentFile(entry); - } - } - - m_runProcess = new QProcess; - connect(m_runProcess,SIGNAL(readyReadStdout()),this,SLOT(readStdout())); - connect(m_runProcess,SIGNAL(processExited()),this,SLOT(runComplete())); - m_running = FALSE; - m_timer = new QTimer; - connect(m_timer,SIGNAL(timeout()),this,SLOT(readStdout())); - - statusBar()->message("Welcome to Doxygen",messageTimeout); -} - -MainWidget::~MainWidget() -{ - delete m_runProcess; -} - -void MainWidget::selectWorkingDir() -{ - QString selectedDir = QFileDialog::getExistingDirectory(m_workingDir->text()); - if (!selectedDir.isEmpty()) - { - m_workingDir->setText(selectedDir); - } -} - -void MainWidget::updateRunnable(const QString &newDirName) -{ - if (m_running) return; - QFileInfo fi(newDirName); - bool isRunnable = fi.exists() && fi.isDir() && m_configSaved; - m_run->setEnabled(isRunnable); - m_runStatus->setEnabled(isRunnable); - m_outputHeading->setEnabled(isRunnable); - m_outputLog->setEnabled(isRunnable); - m_saveLog->setEnabled(isRunnable && !m_outputLog->text().isEmpty()); -} - -void MainWidget::launchWizard() -{ - Wizard wizard(this); - - // -------- Initialize the dialog ---------------- - - // step1 - wizard.setProjectName(Config_getString("PROJECT_NAME")); - wizard.setProjectNumber(Config_getString("PROJECT_NUMBER")); - if (Config_getList("INPUT").count()>0) - { - QString dirName=Config_getList("INPUT").getFirst(); - QFileInfo fi(dirName); - if (fi.exists() && fi.isDir()) - { - wizard.setSourceDir(dirName); - } - } - wizard.setRecursiveScan(Config_getBool("RECURSIVE")); - wizard.setDestinationDir(Config_getString("OUTPUT_DIRECTORY")); - - // step2 - wizard.setExtractAll(Config_getBool("EXTRACT_ALL")); - wizard.setCrossReferencing(Config_getBool("SOURCE_BROWSER")); - if (Config_getBool("OPTIMIZE_OUTPUT_JAVA")) - { - wizard.setOptimizeFor(Lang_Java); - } - else if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - wizard.setOptimizeFor(Lang_C); - } - else - { - wizard.setOptimizeFor(Lang_Cpp); - } - - // step3 - wizard.setHtmlEnabled(Config_getBool("GENERATE_HTML")); - wizard.setLatexEnabled(Config_getBool("GENERATE_LATEX")); - wizard.setManEnabled(Config_getBool("GENERATE_MAN")); - wizard.setRtfEnabled(Config_getBool("GENERATE_RTF")); - wizard.setXmlEnabled(Config_getBool("GENERATE_XML")); - wizard.setSearchEnabled(Config_getBool("SEARCHENGINE")); - if (Config_getBool("GENERATE_HTMLHELP")) - { - wizard.setHtmlStyle(HS_CHM); - } - else if (Config_getBool("GENERATE_TREEVIEW")) - { - wizard.setHtmlStyle(HS_TreeView); - } - else - { - wizard.setHtmlStyle(HS_Plain); - } - if (Config_getBool("USE_PDFLATEX")) - { - if (Config_getBool("PDF_HYPERLINKS")) - { - wizard.setTexStyle(TS_PDFHyper); - } - else - { - wizard.setTexStyle(TS_PDF); - } - } - else - { - wizard.setTexStyle(TS_PS); - } - - // step4 - if (Config_getBool("HAVE_DOT")) - { - wizard.setDiagramMode(DM_Dot); - } - else if (Config_getBool("CLASS_DIAGRAMS")) - { - wizard.setDiagramMode(DM_Builtin); - } - else - { - wizard.setDiagramMode(DM_None); - } - wizard.setClassDiagram(Config_getBool("CLASS_GRAPH")); - wizard.setCollaborationDiagram(Config_getBool("COLLABORATION_GRAPH")); - wizard.setIncludeGraph(Config_getBool("INCLUDE_GRAPH")); - wizard.setIncludedByGraph(Config_getBool("INCLUDED_BY_GRAPH")); - wizard.setInheritanceGraph(Config_getBool("GRAPHICAL_HIERARCHY")); - wizard.setCallGraph(Config_getBool("CALL_GRAPH")); - - // -------- Run the dialog ---------------- - - if (wizard.exec()==QDialog::Accepted) - { - // -------- Store the results ---------------- - - // step1 - Config_getString("PROJECT_NAME")=wizard.getProjectName(); - Config_getString("PROJECT_NUMBER")=wizard.getProjectNumber(); - Config_getList("INPUT").clear(); - Config_getList("INPUT").append(wizard.getSourceDir()); - Config_getBool("RECURSIVE")=wizard.scanRecursively(); - Config_getString("OUTPUT_DIRECTORY")=wizard.getDestinationDir(); - - // step2 - if (wizard.extractAll()) - { - Config_getBool("EXTRACT_ALL")=TRUE; - Config_getBool("EXTRACT_PRIVATE")=TRUE; - Config_getBool("EXTRACT_STATIC")=TRUE; - Config_getBool("EXTRACT_LOCAL_CLASSES")=TRUE; - Config_getBool("HIDE_UNDOC_MEMBERS")=FALSE; - Config_getBool("HIDE_UNDOC_CLASSES")=FALSE; - } - else - { - Config_getBool("EXTRACT_ALL")=FALSE; - Config_getBool("EXTRACT_PRIVATE")=FALSE; - Config_getBool("EXTRACT_STATIC")=FALSE; - Config_getBool("EXTRACT_LOCAL_CLASSES")=TRUE; - Config_getBool("HIDE_UNDOC_MEMBERS")=TRUE; - Config_getBool("HIDE_UNDOC_CLASSES")=TRUE; - } - - if (wizard.crossReferencing()) - { - Config_getBool("SOURCE_BROWSER")=TRUE; - Config_getBool("REFERENCED_BY_RELATION")=TRUE; - Config_getBool("REFERENCES_RELATION")=TRUE; - Config_getBool("VERBATIM_HEADERS")=TRUE; - } - else - { - Config_getBool("SOURCE_BROWSER")=FALSE; - Config_getBool("REFERENCED_BY_RELATION")=FALSE; - Config_getBool("REFERENCES_RELATION")=FALSE; - Config_getBool("VERBATIM_HEADERS")=FALSE; - } - - switch(wizard.optimizeFor()) - { - case Lang_Cpp: - Config_getBool("OPTIMIZE_OUTPUT_FOR_C")=FALSE; - Config_getBool("OPTIMIZE_OUTPUT_JAVA")=FALSE; - break; - case Lang_Java: - Config_getBool("OPTIMIZE_OUTPUT_FOR_C")=FALSE; - Config_getBool("OPTIMIZE_OUTPUT_JAVA")=TRUE; - break; - case Lang_C: - Config_getBool("OPTIMIZE_OUTPUT_FOR_C")=TRUE; - Config_getBool("OPTIMIZE_OUTPUT_JAVA")=FALSE; - break; - } - - // step3 - Config_getBool("GENERATE_HTML")=wizard.htmlEnabled(); - Config_getBool("GENERATE_LATEX")=wizard.latexEnabled(); - Config_getBool("GENERATE_MAN")=wizard.manEnabled(); - Config_getBool("GENERATE_RTF")=wizard.rtfEnabled(); - Config_getBool("GENERATE_XML")=wizard.xmlEnabled(); - Config_getBool("SEARCHENGINE")=wizard.searchEnabled(); - if (wizard.htmlEnabled()) - { - switch (wizard.htmlStyle()) - { - case HS_Plain: - Config_getBool("GENERATE_HTMLHELP")=FALSE; - Config_getBool("GENERATE_TREEVIEW")=FALSE; - break; - case HS_TreeView: - Config_getBool("GENERATE_HTMLHELP")=FALSE; - Config_getBool("GENERATE_TREEVIEW")=TRUE; - break; - case HS_CHM: - Config_getBool("GENERATE_HTMLHELP")=TRUE; - Config_getBool("GENERATE_TREEVIEW")=FALSE; - break; - } - } - if (wizard.latexEnabled()) - { - switch (wizard.texStyle()) - { - case TS_PDFHyper: - Config_getBool("USE_PDFLATEX")=TRUE; - Config_getBool("PDF_HYPERLINKS")=TRUE; - break; - case TS_PDF: - Config_getBool("USE_PDFLATEX")=TRUE; - Config_getBool("PDF_HYPERLINKS")=FALSE; - break; - case TS_PS: - Config_getBool("USE_PDFLATEX")=FALSE; - Config_getBool("PDF_HYPERLINKS")=FALSE; - break; - } - } - - // step4 - switch (wizard.diagramMode()) - { - case DM_None: - Config_getBool("CLASS_DIAGRAMS")=FALSE; - Config_getBool("HAVE_DOT")=FALSE; - break; - case DM_Builtin: - Config_getBool("CLASS_DIAGRAMS")=TRUE; - Config_getBool("HAVE_DOT")=FALSE; - break; - case DM_Dot: - Config_getBool("CLASS_DIAGRAMS")=FALSE; - Config_getBool("HAVE_DOT")=TRUE; - Config_getBool("CLASS_GRAPH")=wizard.classDiagram(); - Config_getBool("COLLABORATION_GRAPH")=wizard.collaborationDiagram(); - Config_getBool("INCLUDE_GRAPH")=wizard.includeGraph(); - Config_getBool("INCLUDED_BY_GRAPH")=wizard.includedByGraph(); - Config_getBool("GRAPHICAL_HIERARCHY")=wizard.inheritanceGraph(); - Config_getBool("CALL_GRAPH")=wizard.callGraph(); - break; - } -#if defined(Q_OS_MACX) - if (Config_getBool("HAVE_DOT")) - { - setDotPath(); - } -#endif - setConfigSaved(FALSE); - } -} - -void MainWidget::loadConfigFromFile(const QString &fn) -{ - if (!Config::instance()->parse(fn)) - { - QMessageBox::warning(0,"Warning", - "Could not open or read config file "+fn+"!", - "abort" - ); - } - else - { - Config::instance()->convertStrToVal(); -#if defined(Q_OS_MACX) - if (checkIfDotInstalled() && - qstricmp(Config_getString("DOT_PATH"),DOT_PATH)!=0 - ) - { - Config_getString("DOT_PATH")=DOT_PATH; - setConfigSaved(FALSE); - } - else - { - setConfigSaved(TRUE); - } -#else - setConfigSaved(TRUE); -#endif - addRecentFile(fn); - m_workingDir->setText(QFileInfo(fn).dirPath(TRUE)); - m_configFileName = fn; - statusBar()->message("New configuration loaded",messageTimeout); - } -} - -void MainWidget::loadConfigFile() -{ - QString fn = QFileDialog::getOpenFileName(m_workingDir->text(),QString::null,this); - if (!fn.isEmpty()) - { - loadConfigFromFile(fn); - // set current dir to where the config file is located - QDir::setCurrent(QFileInfo(fn).dirPath(TRUE)); - } -} - -void MainWidget::launchExpert() -{ - Expert expert(this); - expert.init(); - expert.exec(); -#if defined(Q_OS_MACX) - setDotPath(); -#endif - if (expert.hasChanged()) setConfigSaved(FALSE); -} - -void MainWidget::saveDefaults() -{ - if (QMessageBox::question(this,"Store settings as defaults", - "Do you wish to use the " - "current configuration settings as the default settings?", - QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes) - { - QString newConfig; - QTextStream t(&newConfig,IO_WriteOnly); - Config::instance()->writeTemplate(t,TRUE,FALSE); - m_settings.writeEntry("/doxywizard/config/default",newConfig); - m_settings.writeEntry("/doxywizard/config/workingdir",m_workingDir->text()); - statusBar()->message("Current configuration saved as default",messageTimeout); - } -} - -void MainWidget::saveConfigFile() -{ - QString fn = QFileDialog::getSaveFileName(m_workingDir->text()+"/Doxyfile",QString::null,this); - if (!fn.isEmpty()) - { - QFile f(fn); - if (f.open(IO_WriteOnly)) - { - QTextStream t(&f); - Config::instance()->writeTemplate(t,TRUE,FALSE); - m_configFileName = fn; - setConfigSaved(TRUE); - addRecentFile(fn); - statusBar()->message("Configuration saved",messageTimeout); - } - else - { - QMessageBox::warning(0,"Warning", - "Cannot open file "+fn+" for writing. Nothing saved!","ok"); - } - } -} - -void MainWidget::resetConfig() -{ - if (QMessageBox::question(this,"Reset settings to their defaults", - "Do you wish to reset the " - "current configuration settings to their factory defaults?", - QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes) - { - // initialize config settings - Config::instance()->init(); -#if defined(Q_OS_MACX) - setDotPath(); -#endif - - m_configFileName = ""; - setConfigSaved(FALSE); - statusBar()->message("Configuration settings reset to their defaults",messageTimeout); - } -} - -void MainWidget::setConfigSaved(bool enable) -{ - m_configSaved=enable; - if (m_configSaved) - { - m_saveStatus->setText("Status: saved"); - } - else - { - m_saveStatus->setText("Status: <font color=\"red\">not saved</font>"); - } - updateRunnable(m_workingDir->text()); -} - -void MainWidget::runDoxygen() -{ - if (!m_running) - { - QString doxygenPath; -#if defined(Q_OS_MACX) - doxygenPath = getResourcePath(); -#else - // TODO: get the right value if not in the search path -#endif - //printf("Trying to run doxygen from path %s\n",doxygenPath.data()); - - m_runProcess->setCommunication(QProcess::Stdout| - QProcess::Stderr| - QProcess::DupStderr - ); - m_runProcess->setWorkingDirectory(QDir(m_workingDir->text())); - m_runProcess->clearArguments(); - m_runProcess->addArgument(doxygenPath+"doxygen"); - m_runProcess->addArgument("-b"); - m_runProcess->addArgument(m_configFileName); - m_outputLog->clear(); - if (!m_runProcess->start()) - { - m_outputLog->append(QString("*** Failed to run doxygen\n")); - } - else - { - m_running=TRUE; - m_run->setText("Cancel"); - m_runStatus->setText("Status: running"); - m_timer->start(1000); - } - } - else - { - m_running=FALSE; - m_run->setText("Start"); - m_runStatus->setText("Status: not running"); - m_runProcess->kill(); - m_timer->stop(); - updateRunnable(m_workingDir->text()); - } -} - -void MainWidget::readStdout() -{ - m_outputLog->append(QString(m_runProcess->readStdout())); -} - -void MainWidget::runComplete() -{ - if (m_running) - { - m_outputLog->append(QString("*** Doxygen has finished\n")); - } - else - { - m_outputLog->append(QString("*** Cancelled by user\n")); - } - m_run->setText("Start"); - m_runStatus->setText("Status: not running"); - m_running=FALSE; - updateRunnable(m_workingDir->text()); -} - -void MainWidget::about() -{ - QString msg; - QTextStream t(&msg,IO_WriteOnly); - t << QString("<qt><center>A tool to configure and run doxygen version ")+versionString+ - " on your source files.</center><p><br>" - "<center>Written by<br> Dimitri van Heesch<br>© 2000-2005</center><p>" - "</qt>"; - QMessageBox::about(this,"Doxygen GUI",msg); -} - -void MainWidget::manual() -{ -#if defined(Q_OS_MACX) - const char *urlBytes = "http://www.doxygen.org/manual.html"; - CFURLRef url = CFURLCreateWithBytes ( - NULL, // allocator - (UInt8*)urlBytes, // bytes - strlen(urlBytes), // length - kCFStringEncodingASCII, // encoding - NULL // baseURL - ); - LSOpenCFURLRef(url,0); - CFRelease(url); -#endif -} - -void MainWidget::addRecentFile(const QString &file) -{ - QStringList::Iterator it = m_recentFiles.find(file); - if (it!=m_recentFiles.end()) - { - // already found => move to top - m_recentFiles.remove(it); - m_recentFiles.prepend(file); - } - else - { - // not found - if (m_recentFiles.count() < 10) // append - { - m_recentFiles.prepend(file); - } - else // add + drop last item - { - m_recentFiles.remove(m_recentFiles.last()); - m_recentFiles.prepend(file); - } - } - - m_recentMenu->clear(); - int i=0; - for ( it = m_recentFiles.begin(); it != m_recentFiles.end(); ++it, ++i ) - { - m_recentMenu->insertItem(*it); - m_settings.writeEntry(QString().sprintf("/doxywizard/recent/config%d",i),*it); - } -} - - -void MainWidget::openRecent(int id) -{ - loadConfigFromFile(m_recentMenu->text(id)); -} - -void MainWidget::quit() -{ - if (!m_configSaved && - QMessageBox::warning( this, "DoxyWizard", "Quit and lose changes?", - QMessageBox::Yes, QMessageBox::No)==QMessageBox::No - ) return; // Quit cancelled by user - - qApp->quit(); -} - -void MainWidget::saveLog() -{ - QString fn = QFileDialog::getSaveFileName(m_workingDir->text()+"/doxygen_log.txt",QString::null,this); - if (!fn.isEmpty()) - { - QFile f(fn); - if (f.open(IO_WriteOnly)) - { - QTextStream t(&f); - t << m_outputLog->text(); - statusBar()->message("Output log saved",messageTimeout); - } - else - { - QMessageBox::warning(0,"Warning", - "Cannot open file "+fn+" for writing. Nothing saved!","ok"); - } - } -} - -//========================================================================== - -int main(int argc,char **argv) -{ - QApplication a(argc,argv); - MainWidget main; - if (argc==2 && argv[1][0]!='-') // name of config file as an argument - { - main.loadConfigFromFile(argv[1]); - } - else if (argc>1) - { - printf("Usage: %s [config file]\n",argv[0]); - exit(1); - } - a.setMainWidget(&main); - main.show(); - return a.exec(); -} - diff --git a/addon/doxywizard/doxywizard.h b/addon/doxywizard/doxywizard.h deleted file mode 100644 index c937dae..0000000 --- a/addon/doxywizard/doxywizard.h +++ /dev/null @@ -1,292 +0,0 @@ -#ifndef DOXYWIZARD_H -#define DOXYWIZARD_H - -#include <qvbox.h> -#include <qtabdialog.h> -#include <qmainwindow.h> -#include <qsettings.h> -#include <qstringlist.h> - -class QLineEdit; -class QCheckBox; -class QPushButton; -class QComboBox; -class QButtonGroup; -class QTextEdit; -class QLabel; -class QProcess; -class QTimer; -class QPopupMenu; - -enum OptLang { Lang_Cpp, Lang_C, Lang_Java }; -enum HtmlStyle { HS_Plain, HS_TreeView, HS_CHM }; -enum TexStyle { TS_PDFHyper, TS_PDF, TS_PS }; -enum DiagramMode { DM_None, DM_Builtin, DM_Dot }; - -class Step1 : public QWidget -{ - Q_OBJECT - - public: - Step1(QWidget *parent); - - QString getProjectName() const; - QString getProjectNumber() const; - QString getSourceDir() const; - bool scanRecursively() const; - QString getDestinationDir() const; - - void setProjectName(const QString &name); - void setProjectNumber(const QString &num); - void setSourceDir(const QString &dir); - void setRecursiveScan(bool enable); - void setDestinationDir(const QString &dir); - - private slots: - void selectSourceDir(); - void selectDestinationDir(); - - private: - QLineEdit *m_projName; - QLineEdit *m_projNumber; - QLineEdit *m_sourceDir; - QLineEdit *m_destDir; - QCheckBox *m_recursive; - QPushButton *m_srcSelectDir; - QPushButton *m_dstSelectDir; -}; - -class Step2 : public QWidget -{ - public: - Step2(QWidget *parent); - bool crossReferencingEnabled() const; - void enableCrossReferencing(); - - bool extractAll() const; - bool crossReferencing() const; - OptLang optimizeFor() const; - - void setExtractAll(bool enable); - void setCrossReferencing(bool enable); - void setOptimizeFor(OptLang lang); - - private: - QButtonGroup *m_extractMode; - QButtonGroup *m_optimizeLang; - QCheckBox *m_crossRef; -}; - -class Step3 : public QWidget -{ - Q_OBJECT - - public: - Step3(QWidget *parent); - - bool htmlEnabled() const; - bool latexEnabled() const; - bool manEnabled() const; - bool rtfEnabled() const; - bool xmlEnabled() const; - bool searchEnabled() const; - HtmlStyle htmlStyle() const; - TexStyle texStyle() const; - - void setHtmlEnabled(bool); - void setLatexEnabled(bool); - void setManEnabled(bool); - void setRtfEnabled(bool); - void setXmlEnabled(bool); - void setSearchEnabled(bool); - void setHtmlStyle(HtmlStyle); - void setTexStyle(TexStyle); - - - private slots: - void latexStateChange(int state); - void htmlStateChange(int state); - - private: - QButtonGroup *m_texOptions; - QVBox *m_texOptionBox; - QButtonGroup *m_htmlOptions; - QVBox *m_htmlOptionBox; - QCheckBox *m_htmlEnabled; - QCheckBox *m_latexEnabled; - QCheckBox *m_manEnabled; - QCheckBox *m_rtfEnabled; - QCheckBox *m_xmlEnabled; - QCheckBox *m_searchEnabled; -}; - -class Step4 : public QWidget -{ - Q_OBJECT - - public: - Step4(QWidget *parent); - void disableCallGraphs(); - bool callGraphEnabled() const; - - DiagramMode diagramMode() const; - bool classDiagram() const; - bool collaborationDiagram() const; - bool includeGraph() const; - bool includedByGraph() const; - bool inheritanceGraph() const; - bool callGraph() const; - - void setDiagramMode(DiagramMode mode); - void setClassDiagram(bool enable); - void setCollaborationDiagram(bool enable); - void setIncludeGraph(bool enable); - void setIncludedByGraph(bool enable); - void setInheritanceGraph(bool enable); - void setCallGraph(bool enable); - - private slots: - void diagramModeChanged(int); - - private: - QButtonGroup *m_diagramMode; - QVBox *m_dotOptions; - QCheckBox *m_dotClass; - QCheckBox *m_dotCollaboration; - QCheckBox *m_dotInclude; - QCheckBox *m_dotIncludedBy; - QCheckBox *m_dotInheritance; - QCheckBox *m_dotCall; -}; - -class Wizard : public QTabDialog -{ - Q_OBJECT - - public: - Wizard(QWidget *parent); - void disableCallGraphs(); - - // step1 - QString getProjectName() const { return m_step1->getProjectName(); } - QString getProjectNumber() const { return m_step1->getProjectNumber(); } - QString getSourceDir() const { return m_step1->getSourceDir(); } - bool scanRecursively() const { return m_step1->scanRecursively(); } - QString getDestinationDir() const { return m_step1->getDestinationDir(); } - - void setProjectName(const QString &name) { m_step1->setProjectName(name); } - void setProjectNumber(const QString &num) { m_step1->setProjectNumber(num); } - void setSourceDir(const QString &dir) { m_step1->setSourceDir(dir); } - void setRecursiveScan(bool enable) { m_step1->setRecursiveScan(enable); } - void setDestinationDir(const QString &dir) { m_step1->setDestinationDir(dir); } - - // step2 - bool extractAll() const { return m_step2->extractAll(); } - bool crossReferencing() const { return m_step2->crossReferencing(); } - OptLang optimizeFor() const { return m_step2->optimizeFor(); } - - void setExtractAll(bool enable) { m_step2->setExtractAll(enable); } - void setCrossReferencing(bool enable) { m_step2->setCrossReferencing(enable); } - void setOptimizeFor(OptLang lang) { m_step2->setOptimizeFor(lang); } - - // step3 - bool htmlEnabled() const { return m_step3->htmlEnabled(); } - bool latexEnabled() const { return m_step3->latexEnabled(); } - bool manEnabled() const { return m_step3->manEnabled(); } - bool rtfEnabled() const { return m_step3->rtfEnabled(); } - bool xmlEnabled() const { return m_step3->xmlEnabled(); } - bool searchEnabled() const { return m_step3->searchEnabled(); } - HtmlStyle htmlStyle() const { return m_step3->htmlStyle(); } - TexStyle texStyle() const { return m_step3->texStyle(); } - - void setHtmlEnabled(bool enable) { m_step3->setHtmlEnabled(enable); } - void setLatexEnabled(bool enable) { m_step3->setLatexEnabled(enable); } - void setManEnabled(bool enable) { m_step3->setManEnabled(enable); } - void setRtfEnabled(bool enable) { m_step3->setRtfEnabled(enable); } - void setXmlEnabled(bool enable) { m_step3->setXmlEnabled(enable); } - void setSearchEnabled(bool enable) { m_step3->setSearchEnabled(enable); } - void setHtmlStyle(HtmlStyle style) { m_step3->setHtmlStyle(style); } - void setTexStyle(TexStyle style) { m_step3->setTexStyle(style); } - - // step4 - DiagramMode diagramMode() const { return m_step4->diagramMode(); } - bool classDiagram() const { return m_step4->classDiagram(); } - bool collaborationDiagram() const { return m_step4->collaborationDiagram(); } - bool includeGraph() const { return m_step4->includeGraph(); } - bool includedByGraph() const { return m_step4->includedByGraph(); } - bool inheritanceGraph() const { return m_step4->inheritanceGraph(); } - bool callGraph() const { return m_step4->callGraph(); } - - void setDiagramMode(DiagramMode mode) { m_step4->setDiagramMode(mode); } - void setClassDiagram(bool enable) { m_step4->setClassDiagram(enable); } - void setCollaborationDiagram(bool enable) { m_step4->setCollaborationDiagram(enable); } - void setIncludeGraph(bool enable) { m_step4->setIncludeGraph(enable); } - void setIncludedByGraph(bool enable) { m_step4->setIncludedByGraph(enable); } - void setInheritanceGraph(bool enable) { m_step4->setInheritanceGraph(enable); } - void setCallGraph(bool enable) { m_step4->setCallGraph(enable); } - - public slots: - void changeCallGraphState(int state); - void changeCrossRefState(int state); - - private: - Step1 *m_step1; - Step2 *m_step2; - Step3 *m_step3; - Step4 *m_step4; -}; - -class MainWidget : public QMainWindow -{ - Q_OBJECT - public: - MainWidget(QWidget *parent=0); - ~MainWidget(); - void loadConfigFromFile(const QString &); - - private slots: - void launchWizard(); - void launchExpert(); - void loadConfigFile(); - void selectWorkingDir(); - void updateRunnable(const QString &newDirName); - void saveDefaults(); - void saveConfigFile(); - void runDoxygen(); - void readStdout(); - void runComplete(); - void about(); - void manual(); - void resetConfig(); - void openRecent(int); - void quit(); - void saveLog(); - - private: - void setConfigSaved(bool); - void addRecentFile(const QString &); - - QPushButton *m_wizard; - QPushButton *m_expert; - QPushButton *m_load; - QPushButton *m_save; - QPushButton *m_defaults; - QLineEdit *m_workingDir; - QPushButton *m_selWorkingDir; - QPushButton *m_run; - QPushButton *m_saveLog; - QLabel *m_runStatus; - QProcess *m_runProcess; - QLabel *m_saveStatus; - QLabel *m_outputHeading; - QTextEdit *m_outputLog; - QTimer *m_timer; - QSettings m_settings; - QPopupMenu *m_recentMenu; - bool m_configSaved; - bool m_running; - QString m_configFileName; - QStringList m_recentFiles; -}; - -#endif diff --git a/addon/doxywizard/doxywizard.pro.in b/addon/doxywizard/doxywizard.pro.in deleted file mode 100644 index ae83cb8..0000000 --- a/addon/doxywizard/doxywizard.pro.in +++ /dev/null @@ -1,59 +0,0 @@ -# -# -# -# Copyright (C) 1997-2005 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# -# project file for the doxywizard project - -# special template configuration file because we use flex -TEMPLATE = doxywizard.t - -# executable to generate -TARGET = ../../bin/doxywizard - -# configure options -CONFIG = qt warn_on $extraopts - -# header file for the project -HEADERS = doxywizard.h \ - version.h \ - inputstring.h \ - inputbool.h \ - inputstrlist.h \ - inputint.h \ - expert.h \ - config.h - -# source flle for the project -SOURCES = doxywizard.cpp \ - version.cpp \ - inputstring.cpp \ - inputbool.cpp \ - inputstrlist.cpp \ - inputint.cpp \ - expert.cpp \ - config.cpp - -# where to put the objects -OBJECTS_DIR = obj - -# where to put the intermediate moc stuff -MOC_DIR = moc - -# extra C++ compiler options -INCLUDEPATH += ../../src -win32:TMAKE_CXXFLAGS += -DQT_DLL -win32:INCLUDEPATH += . -macosx-c++:LIBS+=-framework CoreFoundation -framework ApplicationServices - -# extra link options -win32:TMAKE_LFLAGS = /NODEFAULTLIB:msvcrt.lib doxywizard.res -win32:TMAKE_LIBS = $(QTDIR)\lib\qtmain.lib $(QTDIR)\lib\qt-mt332.lib user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib -win32:TMAKE_LIBS_QT = - diff --git a/addon/doxywizard/doxywizard.res b/addon/doxywizard/doxywizard.res deleted file mode 100755 index 283b8bb..0000000 Binary files a/addon/doxywizard/doxywizard.res and /dev/null differ diff --git a/addon/doxywizard/doxywizard.t b/addon/doxywizard/doxywizard.t deleted file mode 100644 index c7576de..0000000 --- a/addon/doxywizard/doxywizard.t +++ /dev/null @@ -1,45 +0,0 @@ -# -# -# -# Copyright (C) 1997-2004 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -#! -#! wizard.t: This is a custom template for building doxywizard -#! -#$ IncludeTemplate("app.t"); - -LEX = flex -YACC = bison - -#${ -sub GenerateDep { - my($obj,$src,$dep) = @_; - my(@objv,$srcv,$i,$s,$o,$d,$c); - @objv = split(/\s+/,$obj); - @srcv = split(/\s+/,$src); - for $i ( 0..$#objv ) { - $s = $srcv[$i]; - $o = $objv[$i]; - next if $s eq ""; - $text .= $o . ": " . $s; - $text .= " ${linebreak}\n\t\t" . $dep if $dep ne ""; - if ( $moc_output{$s} ne "" ) { - $text .= " ${linebreak}\n\t\t" . $moc_output{$s}; - } - $d = &make_depend($s); - $text .= " ${linebreak}\n\t\t" . $d if $d ne ""; - $text .= "\n"; - } - chop $text; -} -#$} - -#################### - -#$ GenerateDep("config.cpp","config.l"); - $(LEX) -PconfigYY -t config.l >config.cpp diff --git a/addon/doxywizard/expert.cpp b/addon/doxywizard/expert.cpp deleted file mode 100644 index a9d4028..0000000 --- a/addon/doxywizard/expert.cpp +++ /dev/null @@ -1,276 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include <stdio.h> -#include <stdlib.h> -#include <qmainwindow.h> -#include <qpopupmenu.h> -#include <qfileinfo.h> -#include <qmenubar.h> -#include <qstatusbar.h> -#include <qfiledialog.h> -#include <qmessagebox.h> -#include <qapplication.h> -#include <qwhatsthis.h> -#include <qlayout.h> -#include <qtabwidget.h> -#include <qtoolbar.h> -#include <qtoolbutton.h> -#include <qscrollview.h> -#include <qlayout.h> -#include <qtooltip.h> - -#include "expert.h" -#include "inputbool.h" -#include "inputstring.h" -#include "inputstrlist.h" -#include "inputint.h" -#include "config.h" -#include "version.h" - -//------------------------------------------------------------------------- - -Expert::Expert( QWidget *parent ) : QTabDialog( parent ) -{ - - m_dependencies = new QDict< QList<IInput> >(257); - m_dependencies->setAutoDelete(TRUE); - m_inputWidgets = new QDict< IInput >; - m_switches = new QDict< QObject >; - m_changed = FALSE; - - setHelpButton(); - - QListIterator<ConfigOption> options = Config::instance()->iterator(); - QVBoxLayout *pageLayout = 0; - QFrame *page = 0; - ConfigOption *option = 0; - for (options.toFirst();(option=options.current());++options) - { - switch(option->kind()) - { - case ConfigOption::O_Info: - { - if (pageLayout) pageLayout->addStretch(1); - QScrollView *view = new QScrollView(this); - view->setVScrollBarMode(QScrollView::Auto); - view->setHScrollBarMode(QScrollView::AlwaysOff); - view->setResizePolicy(QScrollView::AutoOneFit); - page = new QFrame( view->viewport(), option->name() ); - pageLayout = new QVBoxLayout(page); - pageLayout->setMargin(10); - view->addChild(page); - addTab(view,option->name()); - QWhatsThis::add(page, option->docs().simplifyWhiteSpace() ); - QToolTip::add(page, option->docs() ); - } - break; - case ConfigOption::O_String: - { - ASSERT(page!=0); - InputString::StringMode sm=InputString::StringFree; - switch(((ConfigString *)option)->widgetType()) - { - case ConfigString::String: sm=InputString::StringFree; break; - case ConfigString::File: sm=InputString::StringFile; break; - case ConfigString::Dir: sm=InputString::StringDir; break; - } - InputString *inputString = new InputString( - option->name(), // name - page, // widget - *((ConfigString *)option)->valueRef(), // variable - sm // type - ); - pageLayout->addWidget(inputString); - QWhatsThis::add(inputString, option->docs().simplifyWhiteSpace() ); - QToolTip::add(inputString,option->docs()); - connect(inputString,SIGNAL(changed()),SLOT(changed())); - m_inputWidgets->insert(option->name(),inputString); - addDependency(m_switches,option->dependsOn(),option->name()); - } - break; - case ConfigOption::O_Enum: - { - ASSERT(page!=0); - InputString *inputString = new InputString( - option->name(), // name - page, // widget - *((ConfigEnum *)option)->valueRef(), // variable - InputString::StringFixed // type - ); - pageLayout->addWidget(inputString); - QStrListIterator sli=((ConfigEnum *)option)->iterator(); - for (sli.toFirst();sli.current();++sli) - { - inputString->addValue(sli.current()); - } - inputString->init(); - QWhatsThis::add(inputString, option->docs().simplifyWhiteSpace() ); - QToolTip::add(inputString, option->docs()); - connect(inputString,SIGNAL(changed()),SLOT(changed())); - m_inputWidgets->insert(option->name(),inputString); - addDependency(m_switches,option->dependsOn(),option->name()); - } - break; - case ConfigOption::O_List: - { - ASSERT(page!=0); - InputStrList::ListMode lm=InputStrList::ListString; - switch(((ConfigList *)option)->widgetType()) - { - case ConfigList::String: lm=InputStrList::ListString; break; - case ConfigList::File: lm=InputStrList::ListFile; break; - case ConfigList::Dir: lm=InputStrList::ListDir; break; - case ConfigList::FileAndDir: lm=InputStrList::ListFileDir; break; - } - InputStrList *inputStrList = new InputStrList( - option->name(), // name - page, // widget - *((ConfigList *)option)->valueRef(), // variable - lm // type - ); - pageLayout->addWidget(inputStrList); - QWhatsThis::add(inputStrList, option->docs().simplifyWhiteSpace() ); - QToolTip::add(inputStrList, option->docs()); - connect(inputStrList,SIGNAL(changed()),SLOT(changed())); - m_inputWidgets->insert(option->name(),inputStrList); - addDependency(m_switches,option->dependsOn(),option->name()); - } - break; - break; - case ConfigOption::O_Bool: - { - ASSERT(page!=0); - InputBool *inputBool = new InputBool( - option->name(), // name - page, // widget - *((ConfigBool *)option)->valueRef() // variable - ); - pageLayout->addWidget(inputBool); - QWhatsThis::add(inputBool, option->docs().simplifyWhiteSpace() ); - QToolTip::add(inputBool, option->docs() ); - connect(inputBool,SIGNAL(changed()),SLOT(changed())); - m_inputWidgets->insert(option->name(),inputBool); - addDependency(m_switches,option->dependsOn(),option->name()); - } - break; - case ConfigOption::O_Int: - { - ASSERT(page!=0); - InputInt *inputInt = new InputInt( - option->name(), // name - page, // widget - *((ConfigInt *)option)->valueRef(), // variable - ((ConfigInt *)option)->minVal(), // min value - ((ConfigInt *)option)->maxVal() // max value - ); - pageLayout->addWidget(inputInt); - QWhatsThis::add(inputInt, option->docs().simplifyWhiteSpace() ); - QToolTip::add(inputInt, option->docs() ); - connect(inputInt,SIGNAL(changed()),SLOT(changed())); - m_inputWidgets->insert(option->name(),inputInt); - addDependency(m_switches,option->dependsOn(),option->name()); - } - break; - case ConfigOption::O_Obsolete: - break; - } - } - if (pageLayout) pageLayout->addStretch(1); - - QDictIterator<QObject> di(*m_switches); - QObject *obj = 0; - for (di.toFirst();(obj=di.current());++di) - { - connect(obj,SIGNAL(toggle(const char *,bool)),SLOT(toggle(const char *,bool))); - // UGLY HACK: assumes each item depends on a boolean without checking! - emit toggle(di.currentKey(),((InputBool *)obj)->getState()); - } - - connect(this,SIGNAL(helpButtonPressed()),this,SLOT(handleHelp())); - -} - -Expert::~Expert() -{ - delete m_dependencies; - delete m_inputWidgets; - delete m_switches; -} - -void Expert::handleHelp() -{ - QWhatsThis::enterWhatsThisMode(); -} - -void Expert::addDependency(QDict<QObject> *switches, - const QCString &dep,const QCString &name) -{ - if (!dep.isEmpty()) - { - //printf("Expert::addDependency(%s)\n",name.data()); - IInput *parent = m_inputWidgets->find(dep); - ASSERT(parent!=0); - IInput *child = m_inputWidgets->find(name); - ASSERT(child!=0); - if (switches->find(dep)==0) - { - switches->insert(dep,parent->qobject()); - } - QList<IInput> *list = m_dependencies->find(dep); - if (list==0) - { - list = new QList<IInput>; - m_dependencies->insert(dep,list); - } - list->append(child); - } -} - -void Expert::toggle(const char *name,bool state) -{ - QList<IInput> *inputs = m_dependencies->find(name); - ASSERT(inputs!=0); - IInput *input = inputs->first(); - while (input) - { - input->setEnabled(state); - input = inputs->next(); - } -} - -void Expert::init() -{ - QDictIterator<IInput> di(*m_inputWidgets); - IInput *input = 0; - for (di.toFirst();(input=di.current());++di) - { - input->init(); - } - QDictIterator<QObject> dio(*m_switches); - QObject *obj = 0; - for (dio.toFirst();(obj=dio.current());++dio) - { - connect(obj,SIGNAL(toggle(const char *,bool)),SLOT(toggle(const char *,bool))); - // UGLY HACK: assumes each item depends on a boolean without checking! - emit toggle(dio.currentKey(),((InputBool *)obj)->getState()); - } - -} - -void Expert::changed() -{ - m_changed=TRUE; -} - diff --git a/addon/doxywizard/expert.h b/addon/doxywizard/expert.h deleted file mode 100644 index 4fdaea1..0000000 --- a/addon/doxywizard/expert.h +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef EXPERT_H -#define EXPERT_H - -#include <qtabdialog.h> -#include <qlist.h> -#include <qdict.h> - -class IInput; -class QWidget; -class QObject; -class InputBool; -class InputString; -class InputStrList; -class InputFile; -class InputDir; -class InputInt; - -class ConfigWidget -{ - public: - enum Kind { Int, String, StrList, Bool }; - - ConfigWidget(QWidget *w,Kind k) : m_widget(w), m_kind(k) {} - - Kind kind() const { return m_kind; } - - InputString *getString() const - { return m_kind==String ? (InputString *)m_widget : 0; } - - InputBool *getBool() const - { return m_kind==Bool ? (InputBool *)m_widget : 0; } - - InputStrList *getStrList() const - { return m_kind==StrList ? (InputStrList *)m_widget : 0; } - - InputInt *getInt() const - { return m_kind==Int ? (InputInt *)m_widget : 0; } - - private: - QWidget *m_widget; - Kind m_kind; -}; - -class Expert : public QTabDialog -{ - Q_OBJECT - - public: - Expert(QWidget *parent=0); - ~Expert(); - void init(); - void addDependency(QDict<QObject> *switches, - const QCString &dep,const QCString &name); - bool hasChanged() const { return m_changed; } - - private slots: - void toggle(const char *,bool); - void handleHelp(); - void changed(); - - private: - QDict<IInput> *m_inputWidgets; - QDict< QList<IInput> > *m_dependencies; - QDict<QObject> *m_switches; - bool m_changed; -}; - -#endif diff --git a/addon/doxywizard/input.h b/addon/doxywizard/input.h deleted file mode 100644 index ab9bcf5..0000000 --- a/addon/doxywizard/input.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef _INPUT_H -#define _INPUT_H - -class QObject; - -class IInput -{ - public: - virtual void init() = 0; - virtual void setEnabled(bool) = 0; - virtual QObject *qobject() = 0; -}; - -#endif diff --git a/addon/doxywizard/inputbool.cpp b/addon/doxywizard/inputbool.cpp deleted file mode 100644 index 554c228..0000000 --- a/addon/doxywizard/inputbool.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include "inputbool.h" -//#if QT_VERSION >= 300 -//#include <qstylefactory.h> -//#else -//#include <qwindowsstyle.h> -//#endif -#include <qlayout.h> - -InputBool::InputBool( const QString & text, QWidget * parent, bool &flag ) - : QWidget(parent), state(flag) -{ - QBoxLayout *layout = new QHBoxLayout(this); - cb = new QCheckBox(text,this); - layout->addWidget(cb); - layout->addStretch(10); - -//#if QT_VERSION >= 300 -// QStyle *winStyle = QStyleFactory::create("windows"); -//#else -// QWindowsStyle *winStyle = new QWindowsStyle(); -//#endif - cb->setChecked( flag ); -// if (winStyle) cb->setStyle( winStyle ); - cb->setMinimumSize( sizeHint() ); - - connect( cb, SIGNAL(toggled(bool)), SLOT(setState(bool)) ); - - layout->activate(); -} - -void InputBool::init() -{ - cb->setChecked(state); -} - -void InputBool::setState( bool s ) -{ - if (state!=s) - { - emit changed(); - emit toggle(cb->text(),s); - } - state=s; -} - diff --git a/addon/doxywizard/inputbool.h b/addon/doxywizard/inputbool.h deleted file mode 100644 index ee76ba9..0000000 --- a/addon/doxywizard/inputbool.h +++ /dev/null @@ -1,50 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _INPUTBOOL_H -#define _INPUTBOOL_H - -#include <qwidget.h> -#include <qcheckbox.h> - -#include "input.h" - -class PageWidget; - -class InputBool : public QWidget, /*QCheckBox,*/ public IInput -{ - Q_OBJECT - - public: - InputBool( const QString &text, QWidget *parent, bool &flag ); - ~InputBool(){}; - void init(); - void setEnabled(bool b) { cb->setEnabled(b); } - QObject *qobject() { return this; } - bool getState() const { return state; } - - signals: - void changed(); - void toggle(const char *,bool); - - private slots: - void setState(bool); - - private: - bool &state; - QCheckBox *cb; - -}; - -#endif diff --git a/addon/doxywizard/inputint.cpp b/addon/doxywizard/inputint.cpp deleted file mode 100644 index 4398f31..0000000 --- a/addon/doxywizard/inputint.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include "inputint.h" - -#include <stdio.h> -#include <stdlib.h> -#include <qlabel.h> -#include <qlayout.h> -#include <qwindowsstyle.h> -#include <qspinbox.h> - -InputInt::InputInt( const QString & label, QWidget *parent, int &val, int minVal,int maxVal ) - : QWidget( parent), m_val(val), m_minVal(minVal), m_maxVal(maxVal) -{ - QHBoxLayout *layout = new QHBoxLayout( this, 5 ); - - lab = new QLabel( label, this ); - lab->setMinimumSize( lab->sizeHint() ); - - sp = new QSpinBox( minVal,maxVal,1,this ); - sp->setMinimumSize( sp->sizeHint() ); - - init(); - - layout->addWidget( lab ); - layout->addWidget( sp ); - layout->addStretch(1); - layout->activate(); - setMinimumSize( sizeHint() ); - - connect(sp, SIGNAL(valueChanged(int)), - this, SLOT(valueChanged(int)) ); - -} - -void InputInt::valueChanged(int val) -{ - if (val!=m_val) emit changed(); - m_val = val; -} - -void InputInt::setEnabled(bool state) -{ - lab->setEnabled(state); - sp->setEnabled(state); -} - -void InputInt::init() -{ - m_val = QMAX(m_minVal,m_val); - m_val = QMIN(m_maxVal,m_val); - sp->setValue(m_val); -} diff --git a/addon/doxywizard/inputint.h b/addon/doxywizard/inputint.h deleted file mode 100644 index 92435b7..0000000 --- a/addon/doxywizard/inputint.h +++ /dev/null @@ -1,53 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _INPUTINT_H -#define _INPUTINT_H - -#include <qwidget.h> -#include <qstring.h> - -#include "input.h" - -class QLabel; -class QSpinBox; - -class InputInt : public QWidget, public IInput -{ - Q_OBJECT - - public: - InputInt( const QString &text, QWidget *parent, int &val, - int minVal, int maxVal ); - ~InputInt(){}; - void setEnabled(bool); - void init(); - QObject *qobject() { return this; } - - private: - QLabel *lab; - QSpinBox *sp; - int &m_val; - int m_minVal; - int m_maxVal; - - signals: - void changed(); - - private slots: - void valueChanged(int val); - -}; - -#endif diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp deleted file mode 100644 index f301384..0000000 --- a/addon/doxywizard/inputstring.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include "inputstring.h" -//#include "pixmaps.h" - -#include <qlabel.h> -#include <qlayout.h> -#include <qlineedit.h> -#include <qwindowsstyle.h> -#include <qcstring.h> -#include <qpushbutton.h> -#include <qfiledialog.h> -#include <qcombobox.h> -#include <qtooltip.h> - - -InputString::InputString( const QString & label, - QWidget *parent, QCString &s, StringMode m ) - : QWidget( parent ), str(s), sm(m), m_values(0), m_index(0) -{ - if (m==StringFixed) - { - QHBoxLayout *layout = new QHBoxLayout( this, 5); - lab = new QLabel( label, this ); - lab->setMinimumSize( lab->sizeHint() ); - layout->addWidget( lab ); - com = new QComboBox( this ); - com->setMinimumSize(com->sizeHint()); - layout->addWidget( com ); - layout->addStretch( 1 ); - le=0; - br=0; - layout->activate(); - setMinimumSize( sizeHint() ); - } - else - { - QGridLayout *layout = new QGridLayout( this, 1, m==StringFree ? 1 : 3, 5 ); - lab = new QLabel( label, this ); - lab->setMinimumSize( lab->sizeHint() ); - layout->addWidget( lab,0,0 ); - le = new QLineEdit( this ); - le->setMinimumSize( le->sizeHint() ); - le->setText( s ); - layout->addWidget( le,0,1 ); - if (m==StringFile || m==StringDir) - { - //QPixmap pixmap = QPixmap(m==StringFile ? - // file_xpm : - // folder_xpm ); - br = new QPushButton( this ); - br->setMinimumSize( br->sizeHint() ); - if (m==StringFile) - { - br->setText("File..."); - QToolTip::add(br,"Browse to a file"); - } - else - { - br->setText("Folder..."); - QToolTip::add(br,"Browse to a folder"); - } - layout->addWidget( br,0,2 ); - } - else - { - br=0; - } - com=0; - layout->activate(); - setMinimumSize( sizeHint() ); - } - - if (le) connect( le, SIGNAL(textChanged(const QString&)), - this, SLOT(textChanged(const QString&)) ); - if (br) connect( br, SIGNAL(clicked()), this, SLOT(browse()) ); - if (com) connect( com, SIGNAL(activated(const QString &)), - this, SLOT(textChanged(const QString &)) ); -} - -InputString::~InputString() -{ - if (m_values) delete m_values; -} - - -void InputString::textChanged(const QString &s) -{ - if (str!=(const char *)s) - { - str = s; - emit changed(); - } -} - -void InputString::setEnabled(bool state) -{ - lab->setEnabled(state); - if (le) le->setEnabled(state); - if (br) br->setEnabled(state); - if (com) com->setEnabled(state); -} - -void InputString::browse() -{ - if (sm==StringFile) - { - QString fileName = QFileDialog::getOpenFileName(); - - if (!fileName.isNull()) - { - le->setText( fileName ); - if (str!=(const char *)le->text()) - { - str = le->text(); - emit changed(); - } - } - } - else // sm==StringDir - { - QString dirName = QFileDialog::getExistingDirectory(); - - if (!dirName.isNull()) - { - le->setText( dirName ); - if (str!=(const char *)le->text()) - { - str = le->text(); - emit changed(); - } - } - } -} - -void InputString::clear() -{ - le->setText(""); - if (!str.isEmpty()) - { - emit changed(); - str = ""; - } -} - -void InputString::addValue(const char *s) -{ - if (sm==StringFixed) - { - if (m_values==0) m_values = new QDict<int>; - m_values->setAutoDelete(TRUE); - m_values->insert(s,new int(m_index++)); - com->insertItem(s); - } -} - -void InputString::init() -{ - if (sm==StringFixed) - { - int *itemIndex = m_values->find(str); - if (itemIndex) - { - com->setCurrentItem(*itemIndex); - } - else - { - com->setCurrentItem(0); - } - } - else - { - le->setText(str); - } -} diff --git a/addon/doxywizard/inputstring.h b/addon/doxywizard/inputstring.h deleted file mode 100644 index ddcdfea..0000000 --- a/addon/doxywizard/inputstring.h +++ /dev/null @@ -1,69 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _INPUTSTRING_H -#define _INPUTSTRING_H - -#include <qwidget.h> -#include <qstring.h> -#include <qdict.h> - -#include "qtbc.h" -#include "input.h" - -class QLabel; -class QLineEdit; -class QPushButton; -class QComboBox; - -class InputString : public QWidget, public IInput -{ - Q_OBJECT - - public: - enum StringMode { StringFree=0, - StringFile=1, - StringDir=2, - StringFixed=3 - }; - - InputString( const QString &text, QWidget *parent, QCString &s, - StringMode m=StringFree ); - ~InputString(); - void setEnabled(bool); - void addValue(const char *s); - void init(); - QObject *qobject() { return this; } - - private: - QLabel *lab; - QLineEdit *le; - QPushButton *br; - QComboBox *com; - QCString &str; - StringMode sm; - QDict<int> *m_values; - int m_index; - - signals: - void changed(); - - private slots: - void textChanged(const QString&); - void browse(); - void clear(); - -}; - -#endif diff --git a/addon/doxywizard/inputstrlist.cpp b/addon/doxywizard/inputstrlist.cpp deleted file mode 100644 index fc8cf50..0000000 --- a/addon/doxywizard/inputstrlist.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#include "inputstrlist.h" -//#include "pixmaps.h" - -#include <qlabel.h> -#include <qlayout.h> -#include <qlineedit.h> -#include <qpushbutton.h> -#include <qlistbox.h> -#include <qstrlist.h> -#include <qstringlist.h> -#include <qfiledialog.h> -#include <qtooltip.h> - -InputStrList::InputStrList( const QString & label, - QWidget *parent, QStrList &sl, ListMode lm) - : QWidget(parent), strList(sl) -{ - QGridLayout *layout = new QGridLayout( this, 2, 2, 5 ); - lab = new QLabel( label, this ); - lab->setMinimumSize( lab->sizeHint() ); - layout->addWidget( lab,0,0 ); - - QWidget *dw = new QWidget(this); /* dummy widget used for layouting */ - QHBoxLayout *boxlayout = new QHBoxLayout( dw, 0, 5 ); - le = new QLineEdit( dw ); - le->setMinimumSize( le->sizeHint() ); - boxlayout->addWidget( le, 1 ); - - add = new QPushButton( dw ); - //add->setPixmap( QPixmap( add_xpm )); - add->setText( "+" ); - add->setMinimumSize( add->sizeHint() ); - QToolTip::add(add,"Add item"); - boxlayout->addWidget( add ); - - del = new QPushButton( dw ); - //del->setPixmap( QPixmap( del_xpm )); - del->setText( "-" ); - del->setMinimumSize( del->sizeHint() ); - QToolTip::add(del,"Delete selected item"); - boxlayout->addWidget( del ); - - upd = new QPushButton( dw ); - //upd->setPixmap( QPixmap( update_xpm )); - upd->setText( "*" ); - upd->setMinimumSize( upd->sizeHint() ); - QToolTip::add(upd,"Update selected item"); - boxlayout->addWidget( upd ); - - lb = new QListBox( this ); - lb->setMinimumSize(400,100); - init(); - lb->setVScrollBarMode(QScrollView::Auto); - lb->setHScrollBarMode(QScrollView::Auto); - - brFile=0; - brDir=0; - if (lm!=ListString) - { - if (lm&ListFile) - { - brFile = new QPushButton(dw); - //brFile->setPixmap( QPixmap(file_xpm) ); - brFile->setText("Select..."); - brFile->setMinimumSize(brFile->sizeHint()); - QToolTip::add(brFile,"Browse to a file"); - boxlayout->addWidget( brFile ); - } - if (lm&ListDir) - { - brDir = new QPushButton(dw); - //brDir->setPixmap( QPixmap(folder_xpm) ); - brDir->setText("Select..."); - brDir->setMinimumSize(brDir->sizeHint()); - QToolTip::add(brDir,"Browse to a folder"); - boxlayout->addWidget( brDir ); - } - } - layout->addWidget( dw, 0,1 ); - layout->addWidget( lb,1,1 ); - layout->activate(); - setMinimumSize( sizeHint() ); - - connect(le, SIGNAL(returnPressed()), - this, SLOT(addString()) ); - connect(add, SIGNAL(clicked()), - this, SLOT(addString()) ); - connect(del, SIGNAL(clicked()), - this, SLOT(delString()) ); - connect(upd, SIGNAL(clicked()), - this, SLOT(updateString()) ); - if (brFile) - { - connect(brFile, SIGNAL(clicked()), - this, SLOT(browseFiles())); - } - if (brDir) - { - connect(brDir, SIGNAL(clicked()), - this, SLOT(browseDir())); - } - connect(lb, SIGNAL(selected(const QString &)), - this, SLOT(selectText(const QString &))); -} - -void InputStrList::addString() -{ - if (!le->text().isEmpty()) - { - lb->insertItem(le->text()); - strList.append(le->text()); - emit changed(); - le->clear(); - } -} - -void InputStrList::delString() -{ - if (lb->currentItem()!=-1) - { - int itemIndex = lb->currentItem(); - lb->removeItem(itemIndex); - strList.remove(itemIndex); - emit changed(); - } -} - -void InputStrList::updateString() -{ - if (lb->currentItem()!=-1 && !le->text().isEmpty()) - { - lb->changeItem(le->text(),lb->currentItem()); - strList.insert(lb->currentItem(),le->text()); - strList.remove(lb->currentItem()+1); - emit changed(); - } -} - -void InputStrList::selectText(const QString &s) -{ - le->setText(s); -} - -void InputStrList::setEnabled(bool state) -{ - lab->setEnabled(state); - le->setEnabled(state); - add->setEnabled(state); - del->setEnabled(state); - upd->setEnabled(state); - lb->setEnabled(state); - if (brFile) brFile->setEnabled(state); - if (brDir) brDir->setEnabled(state); -} - -void InputStrList::browseFiles() -{ - QStringList fileNames = QFileDialog::getOpenFileNames(); - - if (!fileNames.isEmpty()) - { - QStringList::Iterator it; - for ( it= fileNames.begin(); it != fileNames.end(); ++it ) - { - lb->insertItem(*it); - strList.append(*it); - emit changed(); - } - le->setText(*fileNames.begin()); - } -} - -void InputStrList::browseDir() -{ - QString dirName = QFileDialog::getExistingDirectory(); - - if (!dirName.isNull()) - { - lb->insertItem(dirName); - strList.append(dirName); - emit changed(); - le->setText(dirName); - } -} - -void InputStrList::init() -{ - le->clear(); - lb->clear(); - char *s = strList.first(); - while (s) - { - lb->insertItem(s); - s = strList.next(); - } -} diff --git a/addon/doxywizard/inputstrlist.h b/addon/doxywizard/inputstrlist.h deleted file mode 100644 index 0156c20..0000000 --- a/addon/doxywizard/inputstrlist.h +++ /dev/null @@ -1,71 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _INPUTSTRLIST_H -#define _INPUTSTRLIST_H - -#include <qwidget.h> -#include <qstring.h> - -#include "input.h" - -class QLabel; -class QLineEdit; -class QPushButton; -class QListBox; -class QStrList; - -class InputStrList : public QWidget, public IInput -{ - Q_OBJECT - - public: - enum ListMode { ListString=0, - ListFile=1, - ListDir=2, - ListFileDir=ListFile|ListDir - }; - - InputStrList( const QString &text, QWidget *parent, - QStrList &sl, ListMode v=ListString ); - ~InputStrList() {}; - void setEnabled(bool); - void init(); - QObject *qobject() { return this; } - - private: - QLabel *lab; - QLineEdit *le; - QPushButton *add; - QPushButton *del; - QPushButton *upd; - QPushButton *brFile; - QPushButton *brDir; - QListBox *lb; - QStrList &strList; - - signals: - void changed(); - - private slots: - void addString(); - void delString(); - void updateString(); - void selectText(const QString &s); - void browseFiles(); - void browseDir(); - -}; - -#endif diff --git a/addon/doxywizard/qtbc.h b/addon/doxywizard/qtbc.h deleted file mode 100644 index 452974c..0000000 --- a/addon/doxywizard/qtbc.h +++ /dev/null @@ -1,45 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ - -#ifndef QTBC_H -#define QTBC_H - -/*! This file contains some hacks to make Doxygen work with - * Qt version 2.00 and Qt version 1.xx - */ - -#include <qglobal.h> - -#if QT_VERSION >= 200 - -#include <locale.h> - -#define GCI QCollection::Item - -#include <qcstring.h> -#include <qstring.h> -inline QCString convertToQCString(const QString &s) { return s.latin1(); } - -#else /* QT_VERSION < 200 */ - -#include <qstring.h> -#define QCString QString -inline QCString convertToQCString(const QCString &s) { return s; } - -#endif - -#endif diff --git a/addon/doxywizard/version.cpp b/addon/doxywizard/version.cpp deleted file mode 100644 index 5a00b3e..0000000 --- a/addon/doxywizard/version.cpp +++ /dev/null @@ -1 +0,0 @@ -char versionString[]="0.1"; diff --git a/addon/doxywizard/version.h b/addon/doxywizard/version.h deleted file mode 100644 index 0cbe12a..0000000 --- a/addon/doxywizard/version.h +++ /dev/null @@ -1,23 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ - -#ifndef VERSION_H -#define VERSION_H - -extern char versionString[]; - -#endif diff --git a/configure b/configure deleted file mode 100755 index 720ac72..0000000 --- a/configure +++ /dev/null @@ -1,545 +0,0 @@ -#!/bin/sh -# -# $Id$ -# -# Copyright (C) 1997-2005 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# -# Documents produced by Doxygen are derivative works derived from the -# input used in their production; they are not affected by this license. -# -# shell script to configure doxygen - -bin_dirs=`echo $PATH | sed -e "s/:/ /g"` - -f_debug=NO -f_shared=YES -f_make=NO -f_dot=NO -f_perl=NO -f_plf_auto=NO -f_prefix=/usr/local -f_insttool=NO -f_english=NO -f_wizard=NO -f_thread=NO -f_langs=nl,se,cz,fr,id,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca,lt,za - -while test -n "$1"; do - case $1 in - --prefix | -prefix) - shift; f_prefix=$1 - ;; - --docdir | -docdir) - shift; f_docdir=$1/doxygen - ;; - --shared | -shared) - f_shared=YES - ;; - --static | -static) - f_shared=NO - ;; - --release | -release) - f_debug=NO - ;; - --debug | -debug) - f_debug=YES - ;; - --english-only | -english-only) - f_english=YES - ;; - --enable-langs | -enable-langs) - shift; f_langs=$1 - ;; - --platform | -platform) - shift; f_platform=$1 - ;; - --make | -make) - shift; f_make=$1 - ;; - --dot | -dot) - shift; f_dot=$1 - ;; - --perl | -perl) - shift; f_perl=$1 - ;; - --install | -install) - shift; f_insttool=$1 - ;; - --with-doxywizard | -with-doxywizard) - f_wizard=YES - ;; - -h | -help | --help) - f_help=y - ;; - *) - echo $1: unknown argument - f_help=y - f_error=y - ;; - esac - shift -done - -if test "$f_help" = y; then - cat <<EOF -Usage: $0 [--help] [--shared] [--static] [--release] [--debug] - [--perl name] [--make name] [--dot name] [--platform target] - [--prefix dir] [--docdir dir] [--install name] [--english-only] - [----enable-langs list] [--with-doxywizard] - -Options: - - --help Print this help - --shared | --static Build using shared or static linking - [default: shared] - --release | --debug Build for release or debug - [default: release] - --perl name Use \`name' as the name of the perl interpreter - [default: autodetect] - --make name Use \`name' as the name of the GNU make tool - [default: autodetect] - --dot name Use \`name' as the name of the dot tool that - is part of the Graphviz package. - [default: autodetect] - --platform target Do not detect platform but use \`target' instead. - See PLATFORMS for a list of possibilities - --prefix dir Installation prefix directory (doxygen will be - put in PREFIX/bin/doxygen) - [default: $f_prefix] - --docdir dir Documentation is installed in DOCDIR/doxygen/ - [default: PREFIX/share/doc/packages] - --install name Use \`name' as the name of the GNU install tool - [default: autodetect] - --english-only Include support for English only. - --enable-langs list Include support for output languages listed in list. - [default: $f_langs] - --with-doxywizard Build the GUI frontend for doxygen. This - requires Qt 2.x.x - -EOF - test "$f_error" = y && exit 1 - exit 0; -fi - -u_release=`(uname -r) 2>/dev/null` || u_release=unknown -u_system=`(uname -s) 2>/dev/null` || u_system=unknown - -if test -z "$f_platform"; then - f_platforms="`cat PLATFORMS`" - - case "$u_system:$u_release" in - AIX*) - f_platform=aix-xlc - ;; - BeOS*) - f_platform=beos-g++ - ;; - dgux:*) - f_platform=dgux-g++ - ;; - Darwin:*) - f_platform=macosx-c++ - if test "$f_insttool" = NO; then - f_insttool=/usr/bin/install - fi - ;; - FreeBSD:*) - f_platform=freebsd-g++ - ;; - HP-UX:*) - f_platform=hpux-g++ - if test "$f_insttool" = NO; then - f_insttool=/usr/bin/install - fi - ;; - IRIX64:*) - f_platform=irix-64 - ;; - IRIX:*) - f_platform=irix-n32 - ;; - Linux:*|GNU:*|GNU/*:*) - f_platform=linux-g++ - ;; - NetBSD:*) - f_platform=netbsd-g++ - ;; - OpenBSD:*) - f_platform=openbsd-g++ - ;; - OSF1:*) - f_platform=osf1-g++ - ;; - QNX:*) - f_platform=qnx-g++ - ;; - *:3.2) - f_platform=sco-g++ - ;; - SunOS:4*) - f_platform=sunos-g++ - ;; - SunOS:5*) - f_platform=solaris-g++ - if test "$f_insttool" = NO; then - f_insttool=/usr/bin/install - fi - ;; - ULTRIX:*) - f_platform=ultrix-g++ - ;; - UNIX_SV:4.2*) - f_platform=unixware-g++ - ;; - Cygwin:*) - f_platform=win32-g++ - ;; - *MiNT:*) - f_platform=m68k-atari-mint-g++ - ;; - *) - echo - echo "Your platform was not recognised by this configure script" - echo "Please use the -platform option to specify one of platforms" - echo "in this list:" - echo - for p in $f_platforms - do - echo " $0 $* -platform $p" - done - echo - exit 2 - esac - echo " Autodetected platform $f_platform... " - f_plf_auto=YES -fi - -if test -z "$f_docdir"; then - f_docdir=$f_prefix/share/doc/packages/doxygen -fi - -if test "$f_plf_auto" = NO; then - echo -n " Checking for platform $f_platform... " - if test '!' -d tmake/lib/$f_platform; then - echo "not supported!" - echo - exit 2 - fi - echo "supported" -fi - -#- check for qt -------------------------------------------------------------- - -if test "$f_wizard" = YES; then - if test -z "$QTDIR"; then - echo " QTDIR environment variable not set!" - echo -n " Checking for Qt..." - for d in /usr/{lib,share,qt}/{qt-3,qt3,qt,qt*,3}; do - if test -d "$d/lib" -a -d "$d/include" -a -x "$d/bin/moc"; then - QTDIR=$d - fi - done - else - echo " Detected Qt via the QTDIR environment variable..." - echo -n " " - fi - if test -z "$QTDIR"; then - echo "QTDIR not set and Qt not found at standard locations!" - echo - echo "tmake requires the QTDIR environment variable to be set." - echo "check the Qt installation instructions!" - exit 2 - else - if test ! -d "$QTDIR/lib"; then - echo "QTDIR is set to $QTDIR, but library directory $QTDIR/lib does not exist!" - exit 2 - fi - if test ! -d "$QTDIR/include"; then - echo "QTDIR is set to $QTDIR, but include directory $QTDIR/include does not exist!" - exit 2 - fi - if test ! -x "$QTDIR/bin/moc"; then - echo "QTDIR is set to $QTDIR, but the moc tool could not be found in $QTDIR/bin!" - exit 2 - fi - echo " headers $QTDIR/include," - echo " libraries $QTDIR/lib" - if test -n "`ls $QTDIR/lib/* | grep qt-mt`"; then - f_thread=YES - fi - fi -fi - -# - check for make ------------------------------------------------------------ - -echo -n " Checking for GNU make tool... " -if test "$f_make" = NO; then - make_names="gmake make" - make_dirs="/usr/bin /usr/local/bin /bin /sbin $bin_dirs" - make_prog=NO - for i in $make_names; do - for j in $make_dirs; do - if test -x "$j/$i"; then - if test -n "`$j/$i --version 2>/dev/null | grep GNU`"; then - make_prog="$j/$i" - break 2 - fi - fi - done - done - f_make="$make_prog" -fi - -if test "$f_make" = NO; then - echo "not found!"; - echo - exit 2 -fi -echo "using $f_make" - -# - check for install ------------------------------------------------------------ - -echo -n " Checking for GNU install tool... " -if test "$f_insttool" = NO; then - install_names="ginstall install" - install_dirs="/usr/bin /usr/local/bin /bin /sbin $bin_dirs" - install_prog=NO - install_found=NO - for i in $install_names; do - for j in $install_dirs; do - if test -x "$j/$i"; then - if test -n "`$j/$i --version 2>/dev/null | grep utils`"; then - install_found=YES - install_prog="$j/$i" - break 2 - fi - fi - done - done - f_insttool="$install_prog" -fi - -if test "$f_insttool" = NO; then - if test "$install_found" = YES; then - echo; - else - echo "not found!"; - echo - fi - echo "GNU version of install is required: this is part of the fileutils/coreutils package: " - echo "see http://www.gnu.org/software/fileutils/fileutils.html" - echo - exit 2 -fi -echo "using $f_insttool"; - - -# - check for dot ------------------------------------------------------------ - -echo -n " Checking for dot (part of GraphViz)... " -if test "$f_dot" = NO; then - dot_dirs="$bin_dirs" - dot_prog=NO - for j in $dot_dirs; do - if test -x "$j/dot"; then - dot_prog="$j/dot" - break 2 - fi - done - f_dot="$dot_prog" -fi - -if test "$f_dot" = NO; then - echo "not found!"; -else - echo "using $f_dot" -fi - -# - check for perl ------------------------------------------------------------ - -echo -n " Checking for perl... " -if test "$f_perl" = NO; then - perl_names="perl perl5" - perl_dirs="/usr/bin /usr/local/bin /bin /sbin $bin_dirs" - perl_prog=NO - perl_found=NO - for i in $perl_names; do - for j in $perl_dirs; do - if test -x "$j/$i"; then - perl_found=YES - if $j/$i -e 'require 5.000;' 2>/dev/null ; then - perl_prog="$j/$i" - break 2 - fi - fi - done - done - f_perl="$perl_prog" -fi - -if test "$f_perl" = NO; then - if test "$perl_found" = YES; then - echo "version is too old (5.000 or higher is required)." - else - echo "not found!"; - fi - echo - exit 2 -fi -echo "using $f_perl"; - - -# ----------------------------------------------------------------------------- - -test -f .makeconfig && rm .makeconfig -test -f .tmakeconfig && rm .tmakeconfig - -if test -z $PWD; then - PWD=`pwd` -fi - -cat > .makeconfig <<EOF -DOXYGEN = $PWD -TMAKEPATH = $PWD/tmake/lib/$f_platform -ENV = env TMAKEPATH=\$(TMAKEPATH) -TMAKE = $PWD/tmake/bin/tmake -MAKE = $f_make -PERL = $f_perl -RM = rm -f -CP = cp -VERSION = `cat VERSION` -INSTALL = $f_prefix -INSTTOOL = $f_insttool -DOXYDOCS = .. -DOCDIR = $f_docdir -QTDIR = $QTDIR -EOF - -if test "$f_dot" != NO; then - cat >> .makeconfig <<EOF -HAVE_DOT = $f_dot -EOF -fi - -if test "$f_platform" = "m68k-atari-mint-g++"; then - cat >> .makeconfig <<EOF -TMAKE += -unix -EOF -fi - - -touch .tmakeconfig -if test "$f_shared" = NO; then - if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then - cat >> .tmakeconfig <<EOF - TMAKE_LFLAGS += -non_shared -EOF - elif test "$f_platform" = "solaris-cc"; then - cat >> .tmakeconfig <<EOF - TMAKE_LFLAGS += -Bstatic -EOF - elif test "$f_platform" = "hpux-cc"; then - cat >> .tmakeconfig <<EOF - TMAKE_LFLAGS += -noshared -EOF - else - cat >> .tmakeconfig <<EOF - TMAKE_LFLAGS += -static -EOF - fi -fi -if test "$f_wizard" = YES; then - cat >> .tmakeconfig <<EOF -TMAKE_MOC = $QTDIR/bin/moc -EOF -fi - -if test "$f_english" = YES; then - cat >> .tmakeconfig <<EOF -TMAKE_CXXFLAGS += -DENGLISH_ONLY -EOF -fi - -f_inmakefiles="Makefile.in qtools/Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in addon/doxywizard/Makefile.in addon/doxmlparser/src/Makefile.in addon/doxmlparser/test/Makefile.in addon/doxmlparser/examples/metrics/Makefile.in libpng/Makefile.in libmd5/Makefile.in" - -for i in $f_inmakefiles ; do - SRC=$i - DST=`echo $i|sed 's%\(.*\).in$%\1%'` - TIME=`date` - cat > $DST <<EOF -# -# This file was generated from `basename $i` on $TIME -# - -EOF - cat .makeconfig >> $DST - if test $i = Makefile.in; then - echo "" >> $DST - echo "all: src/version.cpp " >> $DST - echo " \$(MAKE) -C qtools" >> $DST - echo " \$(MAKE) -C libpng" >> $DST - echo " \$(MAKE) -C libmd5" >> $DST - echo " \$(MAKE) -C src" >> $DST - if test $f_wizard = YES; then - echo " \$(MAKE) -C addon/doxywizard" >> $DST - fi - echo "" >> $DST - echo "doxywizard_install:" >> $DST - if test $f_wizard = YES; then - echo " \$(MAKE) -C addon/doxywizard install" >> $DST - fi - echo "" >> $DST - fi - cat $SRC >> $DST - echo " Created $DST from $SRC..." -done - -f_inprofiles="qtools/qtools.pro.in src/libdoxygen.pro.in src/libdoxycfg.pro.in src/doxygen.pro.in src/doxytag.pro.in addon/doxywizard/doxywizard.pro.in addon/doxmlparser/src/doxmlparser.pro.in addon/doxmlparser/test/xmlparse.pro.in addon/doxmlparser/examples/metrics/metrics.pro.in libpng/libpng.pro.in libmd5/libmd5.pro.in" - -for i in $f_inprofiles ; do - SRC=$i - DST=`echo $i|sed 's%\(.*\).in$%\1%'` - TIME=`date` - cat > $DST <<EOF -# -# This file was generated from `basename $i` on $TIME -# - -EOF - if test "$f_debug" = NO; then - realopts="release" - else - realopts="debug" - fi - if test "$f_thread" = YES; then - realopts="$realopts thread" - fi - cat $SRC .tmakeconfig | sed -e "s/\$extraopts/$realopts/g" >> $DST - echo " Created $DST from $SRC..." -done - -# - generating src/lang_cfg.h - -if test -e "src/lang_cfg.h"; then - chmod u+w src/lang_cfg.h # make sure file can be overwritten -fi -echo -n " Generating src/lang_cfg.h..." -echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>); - chomp @l; - @allowed=(split(/,/,"NL,SE,CZ,FR,ID,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,KE,RO,SI,CN,NO,BR,DK,SK,UA,GR,TW,SR,CA,LT,ZA")); - foreach my $elem (@l){ - $elem =~ tr/a-z/A-Z/; - $r=0; - foreach my $tst (@allowed){ - if ($tst eq $elem) { $r=1; last; } - } - if ($r!=1) { die "ERROR: Invalid language $elem was selected!\n"; } - print "#define LANG_$elem\n"; - };' > ./src/lang_cfg.h -echo diff --git a/doc/.cvsignore b/doc/.cvsignore deleted file mode 100644 index f3c7a7c..0000000 --- a/doc/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/doc/Doxyfile b/doc/Doxyfile deleted file mode 100644 index ee3eb96..0000000 --- a/doc/Doxyfile +++ /dev/null @@ -1,50 +0,0 @@ -# -# -# -# Copyright (C) 1997-1999 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# -# Documents produced by Doxygen are derivative works derived from the -# input used in their production; they are not affected by this license. - -PROJECT_NAME = "Doxygen manual" -OUTPUT_DIRECTORY = .. -HTML_HEADER = -HTML_FOOTER = -QUIET = NO -WARNINGS = YES -DISABLE_INDEX = YES -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -GENERATE_MAN = NO -GENERATE_LATEX = YES -GENERATE_HTML = YES -GENERATE_HTMLHELP = YES -GENERATE_RTF = NO -GENERATE_XML = NO -ENABLED_SECTIONS = logo_on -ENABLE_PREPROCESSING = NO -CASE_SENSE_NAMES = NO -IMAGE_PATH = . -INPUT = index.doc install.doc starting.doc docblocks.doc lists.doc \ - grouping.doc formulas.doc diagrams.doc preprocessing.doc \ - autolink.doc output.doc external.doc faq.doc trouble.doc history.doc features.doc \ - doxygen_usage.doc doxytag_usage.doc \ - doxywizard_usage.doc installdox_usage.doc \ - config.doc commands.doc htmlcmds.doc xmlcmds.doc language.doc \ - perlmod.doc perlmod_tree.doc arch.doc -FILE_PATTERNS = *.cpp *.h *.doc -EXAMPLE_PATH = ../examples -RECURSIVE = NO -TAGFILES = -ALLEXTERNALS = NO -PERL_PATH = /usr/local/bin/perl -SEARCHENGINE = NO -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -STRIP_CODE_COMMENTS = NO diff --git a/doc/Makefile.in b/doc/Makefile.in deleted file mode 100644 index a43ad24..0000000 --- a/doc/Makefile.in +++ /dev/null @@ -1,36 +0,0 @@ -# -# -# -# Copyright (C) 1997-2004 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# -# Documents produced by Doxygen are derivative works derived from the -# input used in their production; they are not affected by this license. - -all: language FORCE - DOXYGEN_DOCDIR=$(DOXYDOCS); \ - export DOXYGEN_DOCDIR; \ - VERSION=$(VERSION) ; \ - export VERSION; \ - $(DOXYGEN)/bin/doxygen - @rm -f ../latex/refman.tex - @cp doxygen_logo*.gif ../html - @cp Makefile.latex ../latex/Makefile - @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >../latex/doxygen_manual.tex - @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >../latex/doxygen.sty - @epstopdf doxygen_logo.eps --outfile=../latex/doxygen_logo.pdf - -clean: - rm -rf ../html ../latex *.bak - -language: language.doc - -language.doc: $(wildcard ../src/translator*.h) maintainers.txt language.tpl translator.py - python translator.py - -FORCE: diff --git a/doc/Makefile.latex b/doc/Makefile.latex deleted file mode 100644 index 8a47094..0000000 --- a/doc/Makefile.latex +++ /dev/null @@ -1,31 +0,0 @@ -# -# -# -# Copyright (C) 1997-2004 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# -# Documents produced by Doxygen are derivative works derived from the -# input used in their production; they are not affected by this license. - -all: doxygen_manual.pdf - -#doxygen_manual.pdf: doxygen_manual.ps -# ps2pdf doxygen_manual.ps doxygen_manual.pdf - -#doxygen_manual.ps: doxygen_manual.dvi -# dvips -o doxygen_manual.ps doxygen_manual.dvi - -doxygen_manual.pdf: doxygen_manual.tex doxygen.sty - echo "Running latex..." - pdflatex doxygen_manual.tex - echo "Running makeindex..." - makeindex doxygen_manual.idx - echo "Rerunning latex...." - pdflatex doxygen_manual.tex -clean: - rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log doxygen_manual.pdf diff --git a/doc/Makefile.win_make.in b/doc/Makefile.win_make.in deleted file mode 100644 index 3d5248e..0000000 --- a/doc/Makefile.win_make.in +++ /dev/null @@ -1,36 +0,0 @@ -# -# -# -# Copyright (C) 1997-2004 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# -# Documents produced by Doxygen are derivative works derived from the -# input used in their production; they are not affected by this license. - -all: language FORCE - @xcopy /s /q /i ..\examples ..\html\examples - set DOXYGEN_DOCDIR=. & \ - set VERSION=$(VERSION) & \ - $(DOXYGEN)\bin\doxygen - @del ..\latex\refman.tex - @copy doxygen_logo*.gif ..\html - @copy Makefile.latex ..\latex\Makefile - @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex - @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty - @epstopdf doxygen_logo.eps --outfile=..\latex\doxygen_logo.pdf - -clean: - del /s /q ..\html ..\latex - del translator_report.txt *.bak - -language: language.doc - -language.doc: maintainers.txt language.tpl translator.py - set DOXYGEN_DOCDIR=. & set VERSION=$(VERSION) & python translator.py - -FORCE: diff --git a/doc/Makefile.win_nmake.in b/doc/Makefile.win_nmake.in deleted file mode 100644 index b20bee9..0000000 --- a/doc/Makefile.win_nmake.in +++ /dev/null @@ -1,38 +0,0 @@ -# -# -# -# Copyright (C) 1997-2004 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# -# Documents produced by Doxygen are derivative works derived from the -# input used in their production; they are not affected by this license. - -all: language FORCE - @xcopy /s /q /i ..\examples ..\html\examples - set DOXYGEN_DOCDIR=. - set VERSION=$(VERSION) - $(DOXYGEN)\bin\doxygen - @del ..\latex\refman.tex - @copy doxygen_logo*.gif ..\html - @copy Makefile.latex ..\latex\Makefile - @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex - @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty - @epstopdf doxygen_logo.eps --outfile=..\latex\doxygen_logo.pdf - -clean: - del /s /q ..\html ..\latex - del translator_report.txt *.bak - -language: language.doc - -language.doc: maintainers.txt language.tpl translator.py - set DOXYGEN_DOCDIR=. - set VERSION=$(VERSION) - python translator.py - -FORCE: diff --git a/doc/arch.doc b/doc/arch.doc deleted file mode 100644 index a5ace10..0000000 --- a/doc/arch.doc +++ /dev/null @@ -1,241 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page arch Doxygen's Internals - -<h3>Doxygen's internals</h3> - -<B>Note that this section is still under construction!</B> - -The following picture shows how source files are processed by doxygen. - -\image html archoverview.gif "Data flow overview" -\image latex archoverview.eps "Data flow overview" width=14cm - -The following sections explain the steps above in more detail. - -<h3>Config parser</h3> - -The configuration file that controls the settings of a project is parsed -and the settings are stored in the singleton class \c Config -in <code>src/config.h</code>. The parser itself is written using \c flex -and can be found in <code>src/config.l</code>. This parser is also used -directly by \c doxywizard, so it is put in a separate library. - -Each configuration option has one of 5 possible types: \c String, -\c List, \c Enum, \c Int, or \c Bool. The values of these options are -available through the global functions \c Config_getXXX(), where \c XXX is the -type of the option. The argument of these function is a string naming -the option as it appears in the configuration file. For instance: -\c Config_getBool("GENERATE_TESTLIST") returns a reference to a boolean -value that is \c TRUE if the test list was enabled in the config file. - -The function \c readConfiguration() in \c src/doxygen.cpp -reads the command line options and then calls the configuration parser. - -<h3>C Preprocessor</h3> - -The input files mentioned in the config file are (by default) fed to the -C Preprocessor (after being piped through a user defined filter if available). - -The way the preprocessor works differs somewhat from a standard C Preprocessor. -By default it does not do macro expansion, although it can be configured to -expand all macros. Typical usage is to only expand a user specified set -of macros. This is to allow macro names to appear in the type of -function parameters for instance. - -Another difference is that the preprocessor parses, but not actually includes -code when it encounters a \#include (with the exception of \#include -found inside { ... } blocks). The reasons behind this deviation from -the standard is to prevent feeding multiple definitions of the -same functions/classes to doxygen's parser. If all source files would -include a common header file for instance, the class and type -definitions (and their documentation) would be present in each -translation unit. - -The preprocessor is written using \c flex and can be found in -\c src/pre.l. For condition blocks (\#if) evaluation of constant expressions -is needed. For this a \c yacc based parser is used, which can be found -in \c src/constexp.y and \c src/constexp.l. - -The preprocessor is invoked for each file using the \c preprocessFile() -function declared in \c src/pre.h, and will append the preprocessed result -to a character buffer. The format of the character buffer is - -\verbatim -0x06 file name 1 -0x06 preprocessed contents of file 1 -... -0x06 file name n -0x06 preprocessed contents of file n -\endverbatim - -<h3>Language parser</h3> - -The preprocessed input buffer is fed to the language parser, which is -implemented as a big state machine using \c flex. It can be found -in the file \c src/scanner.l. There is one parser for all -languages (C/C++/Java/IDL). The state variables \c insideIDL -and \c insideJava are uses at some places for language specific choices. - -The task of the parser is to convert the input buffer into a tree of entries -(basically an abstract syntax tree). An entry is defined in \c src/entry.h -and is a blob of loosely structured information. The most important field -is \c section which specifies the kind of information contained in the entry. - -Possible improvements for future versions: - - Use one scanner/parser per language instead of one big scanner. - - Move the first pass parsing of documentation blocks to a separate module. - - Parse defines (these are currently gathered by the preprocessor, and - ignored by the language parser). - -<h3>Data organizer</h3> - -This step consists of many smaller steps, that build -dictionaries of the extracted classes, files, namespaces, -variables, functions, packages, pages, and groups. Besides building -dictionaries, during this step relations (such as inheritance relations), -between the extracted entities are computed. - -Each step has a function defined in \c src/doxygen.cpp, which operates -on the tree of entries, built during language parsing. Look at the -"Gathering information" part of \c parseInput() for details. - -The result of this step is a number of dictionaries, which can be -found in the Doxygen "namespace" defined in \c src/doxygen.h. Most -elements of these dictionaries are derived from the class \c Definition; -The class \c MemberDef, for instance, holds all information for a member. -An instance of such a class can be part of a file ( class \c FileDef ), -a class ( class \c ClassDef ), a namespace ( class \c NamespaceDef ), -a group ( class \c GroupDef ), or a Java package ( class \c PackageDef ). - -<h3>Tag file parser</h3> - -If tag files are specified in the configuration file, these are parsed -by a SAX based XML parser, which can be found in \c src/tagreader.cpp. -The result of parsing a tag file is the insertion of \c Entry objects in the -entry tree. The field \c Entry::tagInfo is used to mark the entry as -external, and holds information about the tag file. - -<h3>Documentation parser</h3> - -Special comment blocks are stored as strings in the entities that they -document. There is a string for the brief description and a string -for the detailed description. The documentation parser reads these -strings and executes the commands it finds in it (this is the second pass -in parsing the documentation). It writes the result directly to the output -generators. - -The parser is written in C++ and can be found in src/docparser.cpp. The -tokens that are eaten by the parser come from src/doctokenizer.l. -Code fragments found in the comment blocks are passed on to the source parser. - -The main entry point for the documentation parser is \c validatingParseDoc() -declared in \c src/docparser.h. For simple texts with special -commands \c validatingParseText() is used. - -<h3>Source parser</h3> - -If source browsing is enabled or if code fragments are encountered in the -documentation, the source parser is invoked. - -The code parser tries to cross-reference to source code it parses with -documented entities. It also does syntax highlighting of the sources. The -output is directly written to the output generators. - -The main entry point for the code parser is \c parseCode() -declared in \c src/code.h. - -<h3>Output generators</h3> - -After data is gathered and cross-referenced, doxygen generates -output in various formats. For this it uses the methods provided by -the abstract class \c OutputGenerator. In order to generate output -for multiple formats at once, the methods of \c OutputList are called -instead. This class maintains a list of concrete output generators, -where each method called is delegated to all generators in the list. - -To allow small deviations in what is written to the output for each -concrete output generator, it is possible to temporarily disable certain -generators. The OutputList class contains various \c disable() and \c enable() -methods for this. The methods \c OutputList::pushGeneratorState() and -\c OutputList::popGeneratorState() are used to temporarily save the -set of enabled/disabled output generators on a stack. - -The XML is generated directly from the gathered data structures. In the -future XML will be used as an intermediate language (IL). The output -generators will then use this IL as a starting point to generate the -specific output formats. The advantage of having an IL is that various -independently developed tools written in various languages, -could extract information from the XML output. Possible tools could be: -- an interactive source browser -- a class diagram generator -- computing code metrics. - -<h3>Debugging</h3> - -Since doxygen uses a lot of \c flex code it is important to understand -how \c flex works (for this one should read the man page) -and to understand what it is doing when \c flex is parsing some input. -Fortunately, when flex is used with the -d option it outputs what rules -matched. This makes it quite easy to follow what is going on for a -particular input fragment. - -To make it easier to toggle debug information for a given flex file I -wrote the following perl script, which automatically adds or removes -d -from the correct line in the Makefile: - -\verbatim -#!/usr/local/bin/perl - -$file = shift @ARGV; -print "Toggle debugging mode for $file\n"; - -# add or remove the -d flex flag in the makefile -unless (rename "Makefile.libdoxygen","Makefile.libdoxygen.old") { - print STDERR "Error: cannot rename Makefile.libdoxygen!\n"; - exit 1; -} -if (open(F,"<Makefile.libdoxygen.old")) { - unless (open(G,">Makefile.libdoxygen")) { - print STDERR "Error: opening file Makefile.libdoxygen for writing\n"; - exit 1; - } - print "Processing Makefile.libdoxygen...\n"; - while (<F>) { - if ( s/\(LEX\) -P([a-zA-Z]+)YY -t $file/(LEX) -d -P\1YY -t $file/g ) { - print "Enabling debug info for $file\n"; - } - elsif ( s/\(LEX\) -d -P([a-zA-Z]+)YY -t $file/(LEX) -P\1YY -t $file/g ) { - print "Disabling debug info for $file\n"; - } - print G "$_"; - } - close F; - unlink "Makefile.libdoxygen.old"; -} -else { - print STDERR "Warning file Makefile.libdoxygen.old does not exist!\n"; -} - -# touch the file -$now = time; -utime $now, $now, $file -\endverbatim - -*/ - - diff --git a/doc/archoverview.eps b/doc/archoverview.eps deleted file mode 100644 index b41d36c..0000000 --- a/doc/archoverview.eps +++ /dev/null @@ -1,380 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: archoverview.eps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sat Sep 8 19:41:40 2001 -%%For: root@blizzard (root) -%%Orientation: Portrait -%%BoundingBox: 0 0 733 511 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --31.0 537.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 9949 m -1000 -1000 l 13719 -1000 l 13719 9949 l cp clip - 0.06000 0.06000 sc -7.500 slw -% Ellipse -n 4425 1725 900 900 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 5100 4200 900 900 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 10500 4275 900 900 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 2402 4198 900 900 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 7863 8104 837 837 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 5113 6622 887 887 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 9375 6450 837 837 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 7800 4200 900 900 0 360 DrawEllipse gs col0 s gr - -% Polyline -gs clippath -1380 4170 m 1500 4200 l 1380 4230 l 1515 4230 l 1515 4170 l cp -clip -n 600 4200 m 1500 4200 l gs col0 s gr gr - -% arrowhead -n 1380 4170 m 1500 4200 l 1380 4230 l 1380 4200 l 1380 4170 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4080 4170 m 4200 4200 l 4080 4230 l 4215 4230 l 4215 4170 l cp -clip -n 3300 4200 m 4200 4200 l gs col0 s gr gr - -% arrowhead -n 4080 4170 m 4200 4200 l 4080 4230 l 4080 4200 l 4080 4170 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -9480 4170 m 9600 4200 l 9480 4230 l 9615 4230 l 9615 4170 l cp -clip -n 8700 4200 m 9600 4200 l gs col0 s gr gr - -% arrowhead -n 9480 4170 m 9600 4200 l 9480 4230 l 9480 4200 l 9480 4170 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -11881 3482 m 12000 3450 l 11910 3535 l 12028 3469 l 11999 3416 l cp -clip -n 11325 3825 m 12000 3450 l gs col0 s gr gr - -% arrowhead -n 11881 3482 m 12000 3450 l 11910 3535 l 11895 3508 l 11881 3482 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -11876 4050 m 12000 4050 l 11891 4108 l 12022 4075 l 12007 4017 l cp -clip -n 11400 4200 m 12000 4050 l gs col0 s gr gr - -% arrowhead -n 11876 4050 m 12000 4050 l 11891 4108 l 11884 4079 l 11876 4050 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -11900 5028 m 12000 5100 l 11877 5083 l 12003 5133 l 12025 5078 l cp -clip -n 11250 4800 m 12000 5100 l gs col0 s gr gr - -% arrowhead -n 11900 5028 m 12000 5100 l 11877 5083 l 11889 5055 l 11900 5028 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -11891 4517 m 12000 4575 l 11876 4575 l 12007 4608 l 12022 4550 l cp -clip -n 11400 4425 m 12000 4575 l gs col0 s gr gr - -% arrowhead -n 11891 4517 m 12000 4575 l 11876 4575 l 11884 4546 l 11891 4517 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -11880 2820 m 12000 2850 l 11880 2880 l 12015 2880 l 12015 2820 l cp -clip -n 7800 3300 m 7800 2850 l 12000 2850 l gs col0 s gr gr - -% arrowhead -n 11880 2820 m 12000 2850 l 11880 2880 l 11880 2850 l 11880 2820 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -10470 5295 m 10500 5175 l 10530 5295 l 10530 5160 l 10470 5160 l cp -clip -n 8700 8100 m 10500 8100 l 10500 5175 l gs col0 s gr gr - -% arrowhead -n 10470 5295 m 10500 5175 l 10530 5295 l 10500 5295 l 10470 5295 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4455 705 m 4425 825 l 4395 705 l 4395 840 l 4455 840 l cp -clip -n 4425 450 m 4425 825 l gs col0 s gr gr - -% arrowhead -n 4455 705 m 4425 825 l 4395 705 l 4425 705 l 4455 705 l cp gs 0.00 setgray ef gr col0 s -% Polyline - [60] 0 sd -gs clippath -3405 1695 m 3525 1725 l 3405 1755 l 3540 1755 l 3540 1695 l cp -clip -n 3525 1725 m 2400 1725 l 2400 3300 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 3405 1695 m 3525 1725 l 3405 1755 l 3405 1725 l 3405 1695 l cp gs 0.00 setgray ef gr col0 s -% Polyline - [60] 0 sd -gs clippath -5445 1680 m 5325 1650 l 5445 1620 l 5310 1620 l 5310 1680 l cp -clip -n 5325 1650 m 7575 1650 l 7575 3300 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 5445 1680 m 5325 1650 l 5445 1620 l 5445 1650 l 5445 1680 l cp gs 0.00 setgray ef gr col0 s -% Polyline - [60] 0 sd -gs clippath -4845 2670 m 4875 2550 l 4905 2670 l 4905 2535 l 4845 2535 l cp -clip -n 4875 2550 m 4875 3300 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 4845 2670 m 4875 2550 l 4905 2670 l 4875 2670 l 4845 2670 l cp gs 0.00 setgray ef gr col0 s -% Polyline - [60] 0 sd -n 7575 1650 m 10500 1650 l 10500 3375 l gs col0 s gr [] 0 sd -% Polyline -gs clippath -6930 8070 m 7050 8100 l 6930 8130 l 7065 8130 l 7065 8070 l cp -clip -n 2400 5100 m 2400 8100 l 7050 8100 l gs col0 s gr gr - -% arrowhead -n 6930 8070 m 7050 8100 l 6930 8130 l 6930 8100 l 6930 8070 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6780 4170 m 6900 4200 l 6780 4230 l 6915 4230 l 6915 4170 l cp -clip -n 6000 4200 m 6900 4200 l gs col0 s gr gr - -% arrowhead -n 6780 4170 m 6900 4200 l 6780 4230 l 6780 4200 l 6780 4170 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7090 4932 m 7200 4875 l 7130 4977 l 7231 4887 l 7191 4843 l cp -clip -n 5850 6075 m 7200 4875 l gs col0 s gr gr - -% arrowhead -n 7090 4932 m 7200 4875 l 7130 4977 l 7110 4955 l 7090 4932 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7830 7155 m 7800 7275 l 7770 7155 l 7770 7290 l 7830 7290 l cp -clip -n 7800 7275 m 7800 5100 l gs col0 s gr gr - -% arrowhead -n 7830 7155 m 7800 7275 l 7770 7155 l 7800 7155 l 7830 7155 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8886 5583 m 8925 5700 l 8835 5615 l 8908 5729 l 8958 5697 l cp -clip -n 8400 4875 m 8925 5700 l gs col0 s gr gr - -% arrowhead -n 8886 5583 m 8925 5700 l 8835 5615 l 8861 5599 l 8886 5583 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8575 7427 m 8475 7500 l 8529 7389 l 8442 7492 l 8488 7531 l cp -clip -n 8850 7050 m 8475 7500 l gs col0 s gr gr - -% arrowhead -n 8575 7427 m 8475 7500 l 8529 7389 l 8552 7408 l 8575 7427 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -10106 5255 m 10200 5175 l 10155 5290 l 10233 5180 l 10184 5145 l cp -clip -n 9825 5700 m 10200 5175 l gs col0 s gr gr - -% arrowhead -n 10106 5255 m 10200 5175 l 10155 5290 l 10130 5273 l 10106 5255 l cp gs 0.00 setgray ef gr col0 s -/Helvetica ff 180.00 scf sf -3900 1725 m -gs 1 -1 sc (Config parser) col0 sh gr -/Helvetica ff 180.00 scf sf -4425 4275 m -gs 1 -1 sc (Language parser) col0 sh gr -/Helvetica ff 180.00 scf sf -1725 4275 m -gs 1 -1 sc (C Preprocessor) col0 sh gr -/Helvetica ff 180.00 scf sf -12150 3525 m -gs 1 -1 sc (HTML) col0 sh gr -/Helvetica ff 180.00 scf sf -12150 4125 m -gs 1 -1 sc (LaTeX) col0 sh gr -/Helvetica ff 180.00 scf sf -12150 4650 m -gs 1 -1 sc (RTF) col0 sh gr -/Helvetica ff 180.00 scf sf -12150 2925 m -gs 1 -1 sc (XML) col0 sh gr -/Helvetica ff 180.00 scf sf -3450 4500 m -gs 1 -1 sc (input) col0 sh gr -/Helvetica ff 180.00 scf sf -3450 4725 m -gs 1 -1 sc (string) col0 sh gr -/Helvetica ff 180.00 scf sf -6150 4500 m -gs 1 -1 sc (entry) col0 sh gr -/Helvetica ff 180.00 scf sf -6150 4725 m -gs 1 -1 sc (tree) col0 sh gr -/Helvetica ff 180.00 scf sf -525 3975 m -gs 1 -1 sc (input files) col0 sh gr -/Helvetica ff 180.00 scf sf -12150 5175 m -gs 1 -1 sc (Man) col0 sh gr -/Helvetica ff 180.00 scf sf -4650 750 m -gs 1 -1 sc (config file) col0 sh gr -/Helvetica ff 180.00 scf sf -7950 5475 m -gs 1 -1 sc (drives) col0 sh gr -/Helvetica ff 180.00 scf sf -8850 4050 m -gs 1 -1 sc (drives) col0 sh gr -/Helvetica ff 180.00 scf sf -2475 3150 m -gs 1 -1 sc (get settings) col0 sh gr -/Helvetica ff 180.00 scf sf -6675 5550 m -gs 1 -1 sc (entry) col0 sh gr -/Helvetica ff 180.00 scf sf -6675 5775 m -gs 1 -1 sc (tree) col0 sh gr -/Helvetica ff 180.00 scf sf -9525 5325 m -gs 1 -1 sc (drives) col0 sh gr -/Helvetica ff 180.00 scf sf -8700 7500 m -gs 1 -1 sc (drives) col0 sh gr -/Helvetica ff 180.00 scf sf -4575 6675 m -gs 1 -1 sc (tag file parser) col0 sh gr -/Helvetica ff 180.00 scf sf -8925 6525 m -gs 1 -1 sc (Doc Parser) col0 sh gr -/Helvetica ff 180.00 scf sf -7275 8175 m -gs 1 -1 sc (Source Parser) col0 sh gr -/Helvetica ff 180.00 scf sf -7200 4275 m -gs 1 -1 sc (Data organiser) col0 sh gr -/Helvetica ff 180.00 scf sf -9750 4275 m -gs 1 -1 sc (Output generators) col0 sh gr -/Helvetica ff 180.00 scf sf -8775 8325 m -gs 1 -1 sc (drives) col0 sh gr -$F2psEnd -rs diff --git a/doc/archoverview.gif b/doc/archoverview.gif deleted file mode 100644 index f404076..0000000 Binary files a/doc/archoverview.gif and /dev/null differ diff --git a/doc/autolink.doc b/doc/autolink.doc deleted file mode 100644 index 1dbeda7..0000000 --- a/doc/autolink.doc +++ /dev/null @@ -1,121 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page autolink Automatic link generation - - Most documentation systems have special `see also' sections where links - to other pieces of documentation can be inserted. - Although doxygen also has a command to start such a section (See section - \ref cmdsa "\\sa"), it does allow you to put these kind of links anywhere in the - documentation. - For \f$\mbox{\LaTeX}\f$ documentation a reference to the page number - is written instead of a link. Furthermore, the index at the end of the - document can be used to quickly find the documentation of a member, class, - namespace or file. - For man pages no reference information is generated. - - The next sections show how to generate links to the various documented - entities in a source file. - - \section linkurl Links to web pages and mail addresses - - Doxygen will automatically replace any URLs and mail addresses found in the - documentation by links (in HTML). - - \section linkclass Links to classes. - - All words in the documentation that correspond to a documented class - will automatically be replaced by a link to the page containing the - documentation of the class. If you want to prevent that a word - that corresponds to a documented class is replaced by a link you - should put a \% in front of the word. - - \section linkfile Links to files. - - All words that contain a dot (<tt>.</tt>) that is not the last character - in the word are considered to be file names. - If the word is indeed the name of a documented input file, a link will - automatically be created to the documentation of that file. - - \section linkfunc Links to functions. - - Links to functions are created if one of the following patterns is - encountered: - <ol> - <li><tt>\<functionName\>"("\<argument-list\>")"</tt> - <li><tt>\<functionName\>"()"</tt> - <li><tt>"::"\<functionName\></tt> - <li><tt>(\<className\>"::")<sup>n</sup>\<functionName\>"("\<argument-list\>")"</tt> - <li><tt>(\<className\>"::")<sup>n</sup>\<functionName\>"()"</tt> - <li><tt>(\<className\>"::")<sup>n</sup>\<functionName\></tt> - </ol> - where n\>0. - - \par Note 1: - The patterns above should not contain spaces, tabs or newlines. - \par Note 2: - For JavaDoc compatibility a \# may be used instead of a :: in - the patterns above. - \par Note 3: - In the documentation of a class containing a member foo, - a reference to a global variable is made using ::foo, whereas \#foo - will link to the member. - - For non overloaded members the argument list may be omitted. - - If a function is overloaded and no matching argument list is specified - (i.e. pattern 2 or 5 is used), a link will be created to the - documentation of one of the overloaded members. - - For member functions the class scope (as used in patterns 4 to 6) may - be omitted, if: - <ol> - <li>The pattern points to a documented member that belongs to the same class - as the documentation block that contains the pattern. - <li>The class that corresponds to the documentation blocks that contains - the pattern has a base class that contains a documented member - that matches the pattern. - </ol> - - \section linkother Links to variables, typedefs, enum types, enum values and defines. - - All of these entities can be linked to in the same way as described in the - previous section. For sake of clarity it is advised to only use - patterns 3 and 6 in this case. - - \par Example: - \verbinclude autolink.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/autolink/html/index.html">here</a> - for the corresponding HTML documentation that is generated by Doxygen. - \endhtmlonly - - \section resolving typedefs. - - Typedefs that involve classes, structs and unions, like -\verbatim -typedef struct StructName TypeName -\endverbatim - create an alias for StructName, so links will be generated to StructName, - when either StructName itself or TypeName is encountered. - - \par Example: - \verbinclude restypedef.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/restypedef/html/restypedef_8cpp.html">here</a> - for the corresponding HTML documentation that is generated by Doxygen. - \endhtmlonly -*/ diff --git a/doc/commands.doc b/doc/commands.doc deleted file mode 100644 index 391e4f7..0000000 --- a/doc/commands.doc +++ /dev/null @@ -1,2204 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page commands Special Commands - -\section cmd_intro Introduction - -All commands in the documentation start with a backslash (<b>\\</b>) or an -at-sign (<b>\@</b>). If you prefer you can replace all commands starting with a -backslash below by their counterparts that start with an at-sign. - -Some commands have one or more arguments. -Each argument has a certain range: -<ul> -<li>If \<sharp\> braces are used the argument is a single word. -<li>If (round) braces are used the argument extends until the end of the line - on which the command was found. -<li>If {curly} braces are used the argument extends until the next paragraph. - Paragraphs are delimited by a blank line or by a section indicator. -</ul> -If [square] brackets are used the argument is optional. - -Here is an alphabetically sorted list of all commands with references to their -documentation: -\secreflist -\refitem cmda \\a -\refitem cmdaddindex \\addindex -\refitem cmdaddtogroup \\addtogroup -\refitem cmdanchor \\anchor -\refitem cmdarg \\arg -\refitem cmdattention \\attention -\refitem cmdauthor \\author -\refitem cmdb \\b -\refitem cmdbrief \\brief -\refitem cmdbug \\bug -\refitem cmdc \\c -\refitem cmdcallgraph \\callgraph -\refitem cmdcategory \\category -\refitem cmdclass \\class -\refitem cmdcode \\code -\refitem cmdcond \\cond -\refitem cmdcopydoc \\copydoc -\refitem cmddate \\date -\refitem cmddef \\def -\refitem cmddefgroup \\defgroup -\refitem cmddeprecated \\deprecated -\refitem cmddir \\dir -\refitem cmddontinclude \\dontinclude -\refitem cmddot \\dot -\refitem cmddotfile \\dotfile -\refitem cmde \\e -\refitem cmdelse \\else -\refitem cmdelseif \\elseif -\refitem cmdem \\em -\refitem cmdendcode \\endcode -\refitem cmdendcond \\endcond -\refitem cmdenddot \\enddot -\refitem cmdendhtmlonly \\endhtmlonly -\refitem cmdendif \\endif -\refitem cmdendlatexonly \\endlatexonly -\refitem cmdendlink \\endlink -\refitem cmdendmanonly \\endmanonly -\refitem cmdendverbatim \\endverbatim -\refitem cmdendxmlonly \\endxmlonly -\refitem cmdenum \\enum -\refitem cmdexample \\example -\refitem cmdexception \\exception -\refitem cmdfdollar \\f\$ -\refitem cmdfbropen \\f[ -\refitem cmdfbrclose \\f] -\refitem cmdfile \\file -\refitem cmdfn \\fn -\refitem cmdhideinitializer \\hideinitializer -\refitem cmdhtmlinclude \\htmlinclude -\refitem cmdhtmlonly \\htmlonly -\refitem cmdif \\if -\refitem cmdifnot \\ifnot -\refitem cmdimage \\image -\refitem cmdinclude \\include -\refitem cmdincludelineno \\includelineno -\refitem cmdingroup \\ingroup -\refitem cmdinternal \\internal -\refitem cmdinvariant \\invariant -\refitem cmdinterface \\interface -\refitem cmdlatexonly \\latexonly -\refitem cmdli \\li -\refitem cmdline \\line -\refitem cmdlink \\link -\refitem cmdmainpage \\mainpage -\refitem cmdmanonly \\manonly -\refitem cmdn \\n -\refitem cmdname \\name -\refitem cmdnamespace \\namespace -\refitem cmdnosubgrouping \\nosubgrouping -\refitem cmdnote \\note -\refitem cmdoverload \\overload -\refitem cmdp \\p -\refitem cmdpackage \\package -\refitem cmdpage \\page -\refitem cmdpar \\par -\refitem cmdparagraph \\paragraph -\refitem cmdparam \\param -\refitem cmdpost \\post -\refitem cmdpre \\pre -\refitem cmd_php_only \\private (PHP only) -\refitem cmd_php_only \\privatesection (PHP only) -\refitem cmdproperty \\property -\refitem cmd_php_only \\protected (PHP only) -\refitem cmd_php_only \\protectedsection (PHP only) -\refitem cmdprotocol \\protocol -\refitem cmd_php_only \\public (PHP only) -\refitem cmd_php_only \\publicsection (PHP only) -\refitem cmdref \\ref -\refitem cmdrelates \\relates -\refitem cmdrelatesalso \\relatesalso -\refitem cmdremarks \\remarks -\refitem cmdreturn \\return -\refitem cmdretval \\retval -\refitem cmdsa \\sa -\refitem cmdsection \\section -\refitem cmdsee \\see -\refitem cmdshowinitializer \\showinitializer -\refitem cmdsince \\since -\refitem cmdskip \\skip -\refitem cmdskipline \\skipline -\refitem cmdstruct \\struct -\refitem cmdsubpage \\subpage -\refitem cmdsubsection \\subsection -\refitem cmdsubsubsection \\subsubsection -\refitem cmdtest \\test -\refitem cmdthrow \\throw -\refitem cmdtodo \\todo -\refitem cmdtypedef \\typedef -\refitem cmdunion \\union -\refitem cmduntil \\until -\refitem cmdvar \\var -\refitem cmdverbatim \\verbatim -\refitem cmdverbinclude \\verbinclude -\refitem cmdversion \\version -\refitem cmdwarning \\warning -\refitem cmdweakgroup \\weakgroup -\refitem cmdxmlonly \\xmlonly -\refitem cmdxrefitem \\xrefitem -\refitem cmddollar \\\$ -\refitem cmdat \\\@ -\refitem cmdbackslash \\\\ -\refitem cmdamp \\\& -\refitem cmdtilde \\~ -\refitem cmdlt \\\< -\refitem cmdgt \\\> -\refitem cmdhash \\\# -\refitem cmdperc \\\% -\endsecreflist - -The following subsections provide a list of all commands that are recognized by -doxygen. Unrecognized commands are treated as normal text. - -<h2>\htmlonly <center> --- \endhtmlonly - Structural indicators - \htmlonly --- </center>\endhtmlonly</h2> - -\section cmdaddtogroup \\addtogroup <name> [(title)] - \addindex \\addtogroup - Defines a group just like \ref cmddefgroup "\\defgroup", but in contrast to - that command using the same \<name\> more than once will not result in a warning, - but rather one group with a merged documentation and the first title found in - any of the commands. - - The title is optional, so this command can also be used to add a number of - entities to an existing group using \@{ and \@} like this: - -\verbatim - /*! \addtogroup mygrp - * Additional documentation for group `mygrp' - * @{ - */ - - /*! - * A function - */ - void func1() - { - } - - /*! Another function */ - void func2() - { - } - - /*! @} */ -\endverbatim - - \sa page \ref grouping "Grouping", sections \ref cmddefgroup "\\defgroup", \ref cmdingroup "\\ingroup" and - \ref cmdweakgroup "\\weakgroup". - -\section cmdcallgraph \\callgraph - - \addindex \\callgraph - When this command is put in a comment block of a function or method - and \ref cfg_have_dot "HAVE_DOT" is set to YES, then doxygen will - generate a call graph for that function (provided the implementation of the - function or method calls other documented functions). The call graph will - generated regardless of the value of \ref cfg_call_graph "CALL_GRAPH". - \note The completeness (and correctness) of the call graph depends on the - doxygen code parser which is not perfect. - -<hr> -\section cmdcategory \\category <name> [<header-file>] [<header-name>] - - \addindex \\category - For Objective-C only: Indicates that a comment block contains documentation - for a class category with name \<name\>. The arguments are - equal to the \\class command. - - \sa section \ref cmdclass "\\class". - -<hr> -\section cmdclass \\class <name> [<header-file>] [<header-name>] - - \addindex \\class - Indicates that a comment block contains documentation for a - class with name \<name\>. Optionally a header file and a header name - can be specified. If the header-file is specified, a link to a verbatim copy - of the header will be included in the HTML documentation. - The \<header-name\> argument can be used to overwrite the - name of the link that is used in the class documentation to something other - than \<header-file\>. This can be useful if the include name is not located - on the default include path (like \<X11/X.h\>). With the \<header-name\> - argument you can also specify how the include statement should look like, - by adding either quotes or sharp brackets around the name. - Sharp brackets are used if just the name is given. - - \par Example: - \verbinclude class.h - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/class/html/index.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -<hr> -\section cmddef \\def <name> - - \addindex \\def - Indicates that a comment block contains documentation for a - \c \#define macro. - - \par Example: - \verbinclude define.h - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/define/html/define_8h.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -<hr> -\section cmddefgroup \\defgroup <name> (group title) - - \addindex \\defgroup - Indicates that a comment block contains documentation for a - \ref modules "group" of classes, files or namespaces. This can be used to - categorize classes, files or namespaces, and document those - categories. You can also use groups as members of other groups, - thus building a hierarchy of groups. - - The \<name\> argument should be a single-word identifier. - - \sa page \ref grouping "Grouping", sections \ref cmdingroup "\\ingroup", \ref cmdaddtogroup "\\addtogroup", - \ref cmdweakgroup "\\weakgroup". - -<hr> -\section cmddir \\dir [<path fragment>] - - \addindex \\dir - Indicates that a comment block contains documentation for a directory. - The "path fragment" argument should include the directory name and - enough of the path to be unique w.r.t. the other directories in the project. - The \ref cfg_show_dirs "SHOW_DIRECTORIES" option determines whether - or not the directory information is shown and the - \ref cfg_strip_from_path "STRIP_FROM_PATH" option determines what is - stripped from the full path before it appears in the output. - -<hr> - -\section cmdenum \\enum <name> - - \addindex \\enum - Indicates that a comment block contains documentation for an - enumeration, with name \<name\>. If the enum is a member of a class and - the documentation block is located outside the class definition, - the scope of the class should be specified as well. - If a comment block is located directly in front of an enum declaration, - the \\enum comment may be omitted. - - \par Note: - The type of an anonymous enum cannot be documented, but the values - of an anonymous enum can. - - \par Example: - \verbinclude enum.h - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/enum/html/class_test.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -<hr> -\section cmdexample \\example <file-name> - - \addindex \\example - Indicates that a comment block contains documentation for a source code - example. The name of the source file is \<file-name\>. The text of - this file will be included in the documentation, just after the - documentation contained in the comment block. All examples are placed - in a list. The source code is scanned for documented members and classes. - If any are found, the names are cross-referenced with the documentation. - Source files or directories can be specified using the - \ref cfg_example_path "EXAMPLE_PATH" - tag of doxygen's configuration file. - - If \<file-name\> itself is not unique for the set of example files specified - by the - \ref cfg_example_path "EXAMPLE_PATH" tag, you can include part of the absolute path - to disambiguate it. - - If more that one source file is needed for the example, - the \\include command can be used. - - \par Example: - \verbinclude example.cpp - Where the example file \c example_test.cpp looks as follows: - \verbinclude example_test.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/example/html/examples.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - - \sa section \ref cmdinclude "\\include". - -<hr> -\section cmdfile \\file [<name>] - - \addindex \\file - Indicates that a comment block contains documentation for a source or - header file with name \<name\>. The file name may include (part of) the - path if the file-name alone is not unique. If the file name is omitted - (i.e. the line after \\file is left blank) then the documentation block that - contains the \\file command will belong to the file it is located in. - - \par Important: - The documentation of global functions, variables, typedefs, and enums will - only be included in the output if the file they are in is documented as well. - - \par Example: - \verbinclude file.h - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/file/html/file_8h.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - - \note In the above example \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" - has been set to YES in the configuration file. - -<hr> -\section cmdfn \\fn (function declaration) - - \addindex \\fn - Indicates that a comment block contains documentation for a function - (either global or as a member of a class). This command is \em only - needed if a comment block is \e not placed in front (or behind) - the function declaration or definition. - - If your comment block \e is in front of the function - declaration or definition this command can (and to avoid redundancy - should) be omitted. - - A full function declaration including arguments should be specified after the - \\fn command on a \e single line, since the argument ends at the end - of the line! - - \warning Do not use this command - if it is not absolutely needed, since it will lead to duplication of - information and thus to errors. - - \par Example: - \verbinclude func.h - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/func/html/class_test.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - - - \sa section \ref cmdvar "\\var" and \ref cmdtypedef "\\typedef". - -<hr> -\section cmdhideinitializer \\hideinitializer - - \addindex \\hideinitializer - By default the value of a define and the initializer of a variable - are displayed unless they are longer than 30 lines. By putting - this command in a comment block of a define or variable, the - initializer is always hidden. - - \sa section \ref cmdshowinitializer "\\showinitializer". - -<hr> -\section cmdingroup \\ingroup (<groupname> [<groupname> <groupname>]) - - \addindex \\ingroup - If the \\ingroup command is placed in a comment block of a - class, file or namespace, then it will be added to the group or - groups identified by \<groupname\>. - - \sa page \ref grouping "Grouping", sections \ref cmddefgroup "\\defgroup", - \ref cmdaddtogroup "\\addtogroup" and \ref cmdweakgroup "\\weakgroup" - -<hr> -\section cmdinterface \\interface <name> [<header-file>] [<header-name>] - - \addindex \\interface - Indicates that a comment block contains documentation for an - interface with name \<name\>. The arguments are equal to the \\class - command. - - \sa section \ref cmdclass "\\class". - -<hr> -\section cmdinternal \\internal - - \addindex \\internal - This command writes the message `For internal use only' to the output and - all text \e after an \c \\internal command until the end of the - comment block or the end of the section (whichever comes first) is - marked as "internal". - - If the \\internal command is put inside a section - (see for example \ref cmdsection "\\section") all subsection after the - command are considered to be internal as well. Only a new section at the - same level will be visible again. - - You can use \ref cfg_internal_docs "INTERNAL_DOCS" in the config file - to show or hide the internal documentation. - -<hr> -\section cmdmainpage \\mainpage [(title)] - - \addindex \\mainpage - - If the \\mainpage command is placed in a comment block the - block is used to customize the index page (in HTML) or - the first chapter (in \f$\mbox{\LaTeX}\f$). - - The title argument is optional and replaces the default title that - doxygen normally generates. If you do not want any title you can - specify \c notitle as the argument of \\mainpage. - - Here is an example: -\verbatim -/*! \mainpage My Personal Index Page - * - * \section intro_sec Introduction - * - * This is the introduction. - * - * \section install_sec Installation - * - * \subsection step1 Step 1: Opening the box - * - * etc... - */ -\endverbatim - - You can refer to the main page using \\ref index (if the treeview - is disabled, otherwise you should use \\ref main). - - \sa section \ref cmdsection "\\section", - section \ref cmdsubsection "\\subsection" and - section \ref cmdpage "\\page". - -<hr> -\section cmdname \\name (header) - -This command turns a comment block into a header -definition of a member group. The -comment block should be followed by a -<code>//\@{ ... //\@}</code> block containing the -members of the group. - -See section \ref memgroup for an example. - -<hr> -\section cmdnamespace \\namespace <name> - - \addindex \\namespace - Indicates that a comment block contains documentation for a - namespace with name \<name\>. - -<hr> -\section cmdnosubgrouping \\nosubgrouping - - \addindex \\nosubgrouping - This command can be put in the documentation - of a class. It can be used in combination with member grouping - to avoid that doxygen puts a member group as a subgroup of a - Public/Protected/Private/... section. - -<hr> -\section cmdoverload \\overload [(function declaration)] - - \addindex \\overload - This command can be used to generate the following - standard text for an overloaded member function: - - `This is an overloaded member function, provided for convenience. - It differs from the above function only in what argument(s) it accepts.' - - If the documentation for the overloaded member function is not located - in front of the function declaration or definition, the optional - argument should be used to specify the correct function. - - Any other documentation that is inside the documentation block will - by appended after the generated message. - - \par Note 1: - You are responsible that there is indeed an - earlier documented member that is overloaded by this one. - To prevent that document reorders the documentation you should set - \ref cfg_sort_member_docs "SORT_MEMBER_DOCS" to NO in this case. - \par Note 2: - The \\overload command does not work inside a one-line comment. - \par Example: - \verbinclude examples/overload.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/overload/html/class_test.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -<hr> -\section cmdpackage \\package <name> - - \addindex \\package - Indicates that a comment block contains documentation for a - Java package with name \<name\>. - -<hr> -\section cmdpage \\page <name> (title) - - \addindex \\page - Indicates that a comment block contains a piece of documentation that is - not directly related to one specific class, file or member. - The HTML generator creates a page containing the documentation. The - \f$\mbox{\LaTeX}\f$ generator - starts a new section in the chapter `Page documentation'. - - \par Example: - \verbinclude page.doc - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/page/html/pages.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - - \par Note: - The \<name\> argument consists of a combination of letters and number - digits. If you wish to use upper case letters (e.g. \c MYPAGE1), or - mixed case letters (e.g. \c MyPage1) in the \<name\> argument, you - should set \c CASE_SENSE_NAMES to \c YES. However, this is advisable - only if your file system is case sensitive. Otherwise (and for better - portability) you should use all lower case letters (e.g. \c mypage1) - for \<name\> in all references to the page. - - \sa section \ref cmdsection "\\section", section - \ref cmdsubsection "\\subsection", and section - \ref cmdref "\\ref". - -<hr> -\section cmdproperty \\property (qualified property name) - - \addindex \\property - Indicates that a comment block contains documentation for a - property (either global or as a member of a class). - This command is equivalent to \\var and \\fn. - - \sa section \ref cmdfn "\\fn" and \ref cmdvar "\\var". - -<hr> -\section cmdprotocol \\protocol <name> [<header-file>] [<header-name>] - - \addindex \\protocol - Indicates that a comment block contains documentation for a - protocol in Objective-C with name \<name\>. The arguments are equal - to the \\class command. - - \sa section \ref cmdclass "\\class". - -<hr> -\section cmdrelates \\relates <name> - - \addindex \\relates - This command can be used in the documentation of a non-member function - \<name\>. It puts the function inside the `related function' section - of the class documentation. This command is useful for documenting - non-friend functions that are nevertheless strongly coupled to a certain - class. It prevents the need of having to document a file, but - only works for functions. - - \par Example: - \verbinclude relates.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/relates/html/class_string.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -<hr> -\section cmdrelatesalso \\relatesalso <name> - - \addindex \\relatesalso - This command can be used in the documentation of a non-member function - \<name\>. It puts the function both inside the `related function' section - of the class documentation as well as leaving its normal file documentation - location. This command is useful for documenting - non-friend functions that are nevertheless strongly coupled to a certain - class. It only works for functions. - -<hr> -\section cmdshowinitializer \\showinitializer - - \addindex \\showinitializer - By default the value of a define and the initializer of a variable - are only displayed if they are less than 30 lines long. By putting - this command in a comment block of a define or variable, the - initializer is shown unconditionally. - - \sa section \ref cmdhideinitializer "\\hideinitializer". - -<hr> -\section cmdstruct \\struct <name> [<header-file>] [<header-name>] - - \addindex \\struct - Indicates that a comment block contains documentation for a - struct with name \<name\>. The arguments are equal to the \\class - command. - - \sa section \ref cmdclass "\\class". - -<hr> -\section cmdtypedef \\typedef (typedef declaration) - - \addindex \\typedef - Indicates that a comment block contains documentation for a - typedef (either global or as a member of a class). - This command is equivalent to \\var and \\fn. - - \sa section \ref cmdfn "\\fn" and \ref cmdvar "\\var". - -<hr> -\section cmdunion \\union <name> [<header-file>] [<header-name>] - - \addindex \\union - Indicates that a comment block contains documentation for a - union with name \<name\>. The arguments are equal to the \\class - command. - - \sa section \ref cmdclass "\\class". - -<hr> -\section cmdvar \\var (variable declaration) - - \addindex \\var - Indicates that a comment block contains documentation for a variable or - enum value (either global or as a member of a class). - This command is equivalent to \\typedef and \\fn. - - \sa section \ref cmdfn "\\fn" and \ref cmdtypedef "\\typedef". - -<hr> -\section cmdweakgroup \\weakgroup <name> [(title)] - \addindex \\addtogroup - Can be used exactly like \ref cmdaddtogroup "\\addtogroup", but has - a lower priority when it comes to resolving conflicting grouping - definitions. - - \sa page \ref grouping "Grouping" and \ref cmdaddtogroup "\\addtogroup". - -<hr> - -<h2>\htmlonly <center> --- \endhtmlonly - Section indicators - \htmlonly --- </center>\endhtmlonly</h2> - -<hr> -\section cmdattention \\attention { attention text } - - \addindex \\attention - Starts a paragraph where a message that needs attention may be entered. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\attention commands will be joined into a single paragraph. - The \\attention command ends when a blank line or some other - sectioning command is encountered. - -\section cmdauthor \\author { list of authors } - - \addindex \\author - Starts a paragraph where one or more author names may be entered. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\author commands will be joined into a single paragraph - and separated by commas. Alternatively, one \\author command may mention - several authors. The \\author command ends when a blank line or some other - sectioning command is encountered. - - \par Example: - \verbinclude author.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/author/html/class_windows_n_t.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -<hr> -\section cmdbrief \\brief {brief description} - - \addindex \\brief - Starts a paragraph that serves as a brief description. For classes and files - the brief description will be used in lists and at the start of the - documentation page. For class and file members, the brief description - will be placed at the declaration of the member and prepended to the - detailed description. A brief description may span several lines (although - it is advised to keep it brief!). A brief description ends when a - blank line or another sectioning command is encountered. If multiple - \\brief commands are present they will be joined. See section - \ref cmdauthor "\\author" for an example. - - Synonymous to \\short. - -<hr> -\section cmdbug \\bug { bug description } - - \addindex \\bug - Starts a paragraph where one or more bugs may be reported. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\bug commands will be joined into a single paragraph. - Each bug description will start on a new line. - Alternatively, one \\bug command may mention - several bugs. The \\bug command ends when a blank line or some other - sectioning command is encountered. See section \ref cmdauthor "\\author" - for an example. - -<hr> -\section cmdcond \\cond [<section-label>] - - \addindex \\cond - Starts a conditional section that ends with a corresponding - \ref cmdendcond "\\endcond" command, which is typically found in - another comment block. The main purpose of this pair of - commands is to (conditionally) exclude part of a file from processing - (traditionally this could only be achieved using C processor commands). - - The section between \\cond and \\endcond commands can be included by - adding its section label to the \ref cfg_enabled_sections "ENABLED_SECTIONS" - configuration option. If the section label is omitted, the section will - be excluded from processing unconditionally. - - For conditional sections within a comment block one should - use a \ref cmdif "\\if" ... \ref cmdendif "\\endif" block. - - Conditional sections can be nested. In this case a nested section will only - be shown if it and its containing section are included. - - Here is an example showing the commands in action: - -\verbatim -/** An interface */ -class Intf -{ - public: - /** A method */ - virtual void func() = 0; - - /// @cond TEST - - /** A method used for testing */ - virtual void test() = 0; - - /// @endcond -}; - -/// @cond DEV -/* - * The implementation of the interface - */ -class Implementation : public Intf -{ - public: - void func(); - - /// @cond TEST - void test(); - /// @endcond - - /// @cond - /** This method is obsolete and does - * not show up in the documentation. - */ - void obsolete(); - /// @endcond -}; - -/// @endcond -\endverbatim - -The output will be different depending on whether \c ENABLED_SECTIONS -is empty, \c TEST, \c DEV, or \c DEV \c TEST. - -<hr> -\section cmddate \\date { date description } - - \addindex \\date - Starts a paragraph where one or more dates may be entered. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\date commands will be joined into a single paragraph. - Each date description will start on a new line. - Alternatively, one \\date command may mention - several dates. The \\date command ends when a blank line or some other - sectioning command is encountered. See section \ref cmdauthor "\\author" - for an example. - -<hr> -\section cmddeprecated \\deprecated { description } - - \addindex \\deprecated - Starts a paragraph indicating that this documentation block belongs to - a deprecated entity. Can be used to describe alternatives, - expected life span, etc. - -<hr> -\section cmdelse \\else - - \addindex \\else - Starts a conditional section if the previous conditional section - was not enabled. The previous section should have been started with - a \c \\if, \c \\ifnot, or \c \\elseif command. - - \sa \ref cmdif "\\if", \ref cmdifnot "\\ifnot", \ref cmdelseif "\\elseif", - \ref cmdendif "\\endif." - -<hr> -\section cmdelseif \\elseif <section-label> - - \addindex \\elseif - Starts a conditional documentation section if the previous section - was not enabled. A conditional section is - disabled by default. To enable it you must put the - section-label after the \ref cfg_enabled_sections "ENABLED_SECTIONS" - tag in the configuration - file. Conditional blocks can be nested. A nested section is - only enabled if all enclosing sections are enabled as well. - - \sa sections \ref cmdendif "\\endif", \ref cmdifnot "\\ifnot", - \ref cmdelse "\\else", and \ref cmdelseif "\\elseif". - -<hr> -\section cmdendcond \\endcond - - \addindex \\endcond - Ends a conditional section that was started by \ref cmdcond "\\cond". - - \sa \ref cmdcond "\\cond". - -<hr> -\section cmdendif \\endif - - \addindex \\endif - Ends a conditional section that was started by \c \\if or \c \\ifnot - For each \c \\if or \c \\ifnot one and only one matching \c \\endif must follow. - - \sa \ref cmdif "\\if", and \ref cmdifnot "\\ifnot". - -<hr> -\section cmdexception \\exception <exception-object> { exception description } - - \addindex \\exception - Starts an exception description for an exception object with name - \<exception-object\>. Followed by a description of the exception. - The existence of the exception object is not checked. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\exception commands will be joined into a single paragraph. - Each parameter description will start on a new line. - The \\exception description ends when a blank line or some other - sectioning command is encountered. See section \ref cmdfn "\\fn" for an - example. - - \par Note: - the tag \\exceptions is a synonym for this tag. - -<hr> -\section cmdif \\if <section-label> - - \addindex \\if - Starts a conditional documentation section. The section ends - with a matching \c \\endif command. A conditional section is - disabled by default. To enable it you must put the - section-label after the \ref cfg_enabled_sections "ENABLED_SECTIONS" - tag in the configuration - file. Conditional blocks can be nested. A nested section is - only enabled if all enclosing sections are enabled as well. - - \par Example: -\verbatim - /*! Unconditionally shown documentation. - * \if Cond1 - * Only included if Cond1 is set. - * \endif - * \if Cond2 - * Only included if Cond2 is set. - * \if Cond3 - * Only included if Cond2 and Cond3 are set. - * \endif - * More text. - * \endif - * Unconditional text. - */ -\endverbatim - - You can also use conditional commands inside aliases. To - document a class in two languages you could for instance use: - -\par Example 2: -\verbatim -/*! \english - * This is English. - * \endenglish - * \dutch - * Dit is Nederlands. - * \enddutch - */ -class Example -{ -}; -\endverbatim - <p>Where the following aliases are defined in the configuration file:<p> -\verbatim -ALIASES = "english=\if english" \ - "endenglish=\endif" \ - "dutch=\if dutch" \ - "enddutch=\endif" -\endverbatim - - and \c ENABLED_SECTIONS can be used to enable either \c english or \c dutch. - - \sa sections \ref cmdendif "\\endif", \ref cmdifnot "\\ifnot", - \ref cmdelse "\\else", and \ref cmdelseif "\\elseif". - -<hr> -\section cmdifnot \\ifnot <section-label> - - \addindex \\ifnot - Starts a conditional documentation section. The section ends - with a matching \c \\endif command. This conditional section is - enabled by default. To disable it you must put the - section-label after the \ref cfg_enabled_sections "ENABLED_SECTIONS" - tag in the configuration - file. - - \sa sections \ref cmdendif "\\endif", \ref cmdif "\\if", - \ref cmdelse "\\else", and \ref cmdelseif "\\elseif". - -<hr> -\section cmdinvariant \\invariant { description of invariant } - - \addindex \\invariant - Starts a paragraph where the invariant of an entity can be described. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\invariant commands will be joined into a single paragraph. - Each invariant description will start on a new line. - Alternatively, one \\invariant command may mention - several invariants. The \\invariant command ends when a blank line or some other - sectioning command is encountered. - -<hr> -\section cmdnote \\note { text } - - \addindex \\note - Starts a paragraph where a note can be entered. The paragraph will be - indented. The text of the paragraph has no special internal structure. - All visual enhancement commands may be used inside the paragraph. - Multiple adjacent \\note commands will be joined into a single paragraph. - Each note description will start on a new line. - Alternatively, one \\note command may mention - several notes. The \\note command ends when a blank line or some other - sectioning command is encountered. See section \ref cmdpar "\\par" - for an example. - -<hr> -\section cmdpar \\par [(paragraph title)] { paragraph } - - \addindex \\par - If a paragraph title is given this command starts a paragraph with a - user defined heading. The heading extends until the end of the - line. The paragraph following the command will be indented. - - If no paragraph title is given this command will start a new paragraph. - This will also work inside other paragraph commands - (like \\param or \\warning) without ending the that command. - - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - The \\par command ends when a blank line or some other - sectioning command is encountered. - - \par Example: - \verbinclude par.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/par/html/class_test.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -<hr> -\section cmdparam \\param <parameter-name> { parameter description } - - \addindex \\param - Starts a parameter description for a function parameter with name - \<parameter-name\>. Followed by a description of the parameter. - The existence of the parameter is checked and a warning is given if - the documentation of this (or any other) parameter is missing or not - present in the function declaration or definition. - - The \\param command has an optional attribute specifying the direction - of the attribute. Possible values are "in" and "out". Here is an example - for the function memcpy: - \code -/*! - * Copies bytes from a source memory area to a destination memory area, - * where both areas may not overlap. - * @param[out] dest The memory area to copy to. - * @param[in] src The memory area to copy from. - * @param[in] n The number of bytes to copy - */ -void memcpy(void *dest, const void *src, size_t n); - \endcode - If a parameter is both input and output, use [in,out] as an attribute. - - The parameter description is a paragraph with no special internal structure. - All visual enhancement commands may be used inside the paragraph. - - Multiple adjacent \\param commands will be joined into a single paragraph. - Each parameter description will start on a new line. - The \\param description ends when a blank line or some other - sectioning command is encountered. See section \ref cmdfn "\\fn" for an - example. - -<hr> -\section cmdpost \\post { description of the postcondition } - - \addindex \\post - Starts a paragraph where the postcondition of an entity can be described. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\post commands will be joined into a single paragraph. - Each postcondition will start on a new line. - Alternatively, one \\post command may mention - several postconditions. The \\post command ends when a blank line or some other - sectioning command is encountered. - -<hr> -\section cmdpre \\pre { description of the precondition } - - \addindex \\pre - Starts a paragraph where the precondition of an entity can be described. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\pre commands will be joined into a single paragraph. - Each precondition will start on a new line. - Alternatively, one \\pre command may mention - several preconditions. The \\pre command ends when a blank line or some other - sectioning command is encountered. - -<hr> -\section cmdremarks \\remarks { remark text } - - \addindex \\remarks - Starts a paragraph where one or more remarks may be entered. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\remark commands will be joined into a single paragraph. - Each remark will start on a new line. - Alternatively, one \\remark command may mention - several remarks. The \\remark command ends when a blank line or some other - sectioning command is encountered. - -<hr> -\section cmdreturn \\return { description of the return value } - - \addindex \\return - Starts a return value description for a function. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\return commands will be joined into a single paragraph. - The \\return description ends when a blank line or some other - sectioning command is encountered. See section \ref cmdfn "\\fn" for an - example. - -<hr> -\section cmdretval \\retval <return value> { description } - - \addindex \\retval - Starts a return value description for a function with name - \<return value\>. Followed by a description of the return value. - The text of the paragraph that forms the description has no special - internal structure. All visual enhancement commands may be used inside the - paragraph. - Multiple adjacent \\retval commands will be joined into a single paragraph. - Each return value description will start on a new line. - The \\retval description ends when a blank line or some other - sectioning command is encountered. - -<hr> -\section cmdsa \\sa { references } - - \addindex \\sa - Starts a paragraph where one or more cross-references to classes, - functions, methods, variables, files or URL may be specified. - Two names joined by either <code>::</code> or <code>\#</code> - are understood as referring to a class and one of its members. - One of several overloaded methods or constructors - may be selected by including a parenthesized list of argument types after - the method name. - - Synonymous to \\see. - - \sa section \ref autolink "autolink" for information on how to create links - to objects. - -<hr> -\section cmdsee \\see { references } - - \addindex \\see - Equivalent to \ref cmdsa "\\sa". Introduced for compatibility with Javadoc. - -<hr> -\section cmdsince \\since { text } - - \addindex \\since - This tag can be used to specify since when (version or time) an - entity is available. The paragraph that follows \\since does not have any - special internal structure. All visual enhancement commands may be - used inside the paragraph. The \\since description ends when a blank - line or some other sectioning command is encountered. - -<hr> -\section cmdtest \\test { paragraph describing a test case } - - \addindex \\test - Starts a paragraph where a test case can be described. - The description will also add the test case to a separate test list. - The two instances of the description will be cross-referenced. - Each test case in the test list will be preceded by a header that - indicates the origin of the test case. - -<hr> -\section cmdthrow \\throw <exception-object> { exception description } - - \addindex \\throw - Synonymous to \\exception (see section \ref cmdexception "\\exception"). - - \par Note: - the tag \\throws is a synonym for this tag. - -<hr> -\section cmdtodo \\todo { paragraph describing what is to be done } - - \addindex \\todo - Starts a paragraph where a TODO item is described. - The description will also add an item to a separate TODO list. - The two instances of the description will be cross-referenced. - Each item in the TODO list will be preceded by a header that - indicates the origin of the item. - -<hr> -\section cmdversion \\version { version number } - - \addindex \\version - Starts a paragraph where one or more version strings may be entered. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\version commands will be joined into a single paragraph. - Each version description will start on a new line. - Alternatively, one \\version command may mention - several version strings. - The \\version command ends when a blank line or some other - sectioning command is encountered. See section \ref cmdauthor "\\author" - for an example. - -<hr> -\section cmdwarning \\warning { warning message } - - \addindex \\warning - Starts a paragraph where one or more warning messages may be entered. - The paragraph will be indented. - The text of the paragraph has no special internal structure. All visual - enhancement commands may be used inside the paragraph. - Multiple adjacent \\warning commands will be joined into a single paragraph. - Each warning description will start on a new line. - Alternatively, one \\warning command may mention - several warnings. The \\warning command ends when a blank line or some other - sectioning command is encountered. See section \ref cmdauthor "\\author" - for an example. - -\section cmdxrefitem \\xrefitem <key> "(heading)" "(list title)" {text} - - \addindex \\xrefitem - This command is a generalization of commands such as \ref cmdtodo "\\todo" - and \ref cmdbug "\\bug". - It can be used to create user-defined text sections which are automatically - cross-referenced between the place of occurrence and a related page, - which will be generated. On the related page all sections of - the same type will be collected. - - The first argument \<key\> is a - identifier uniquely representing the type of the section. The second argument - is a quoted string representing the heading of the section under which - text passed as the forth argument is put. The third argument (list title) - is used as the title for the related page containing all items with the - same key. The keys "todo", "test", "bug", and "deprecated" are predefined. - - To get an idea on how to use the \\xrefitem command and what its effect - is, consider the todo list, which (for English output) can be seen an - alias for the command - \verbatim \xrefitem todo "Todo" "Todo List" \endverbatim - - Since it is very tedious and error-prone to repeat the first three - parameters of the command for each section, the command is meant to - be used in combination with the \ref cfg_aliases "ALIASES" option in the - configuration file. - To define a new command \\reminder, for instance, one should add the following - line to the configuration file: - \verbatim ALIASES += "reminder=\xrefitem reminders \"Reminder\" \"Reminders\"" \endverbatim - Note the use of escaped quotes for the second and third argument of the - \\xrefitem command. - -<hr> -<h2>\htmlonly <center> --- \endhtmlonly - Commands to create links - \htmlonly --- </center>\endhtmlonly</h2> - -\section cmdaddindex \\addindex (text) - - \addindex \\addindex - This command adds (text) to the \f$\mbox{\LaTeX}\f$ index. - -<hr> -\section cmdanchor \\anchor <word> - - \addindex \\anchor - This command places an invisible, named anchor into the documentation - to which you can refer with the \\ref command. - - \note Anchors can currently only be put into a comment block - that is marked as a page (using \ref cmdpage "\\page") or mainpage - (\ref cmdmainpage "\\mainpage"). - - \sa section \ref cmdref "\\ref". - -<hr> -\section cmdendlink \\endlink - - \addindex \\endlink - This command ends a link that is started with the \\link command. - - \sa section \ref cmdlink "\\link". - -<hr> -\section cmdlink \\link <link-object> - - \addindex \\link - The links that are automatically generated by doxygen always have the - name of the object they point to as link-text. - - The \\link command can be used to create a link to an object (a file, - class, or member) with a user specified link-text. - The link command should end with an \\endlink command. All text between - the \\link and \\endlink commands serves as text for a link to - the \<link-object\> specified as the first argument of \\link. - - See section \ref autolink "autolink" for more information on automatically - generated links and valid link-objects. - -<hr> -\section cmdref \\ref <name> ["(text)"] - - \addindex \\ref - Creates a reference to a named section, subsection, page or anchor. - For HTML documentation the reference command will generate a link to - the section. For a sections or subsections the title of the section will be - used as the text of the link. For anchor the optional text between quotes - will be used or \<name\> if no text is specified. - For \f$\mbox{\LaTeX}\f$ documentation the reference command will - generate a section number for sections or the text followed by a - page number if \<name\> refers to an anchor. - - \sa - Section \ref cmdpage "\\page" for an example of the \\ref command. - -<hr> -\section cmdsubpage \\subpage <name> ["(text)"] - - \addindex \\subpage - This command can be used to create a hierarchy of pages. The - same structure can be made using the \ref cmddefgroup "\\defgroup" and - \ref cmdingroup "\\ingroup" commands, but for pages the \\subpage command - is often more convenient. The main page (see \ref cmdmainpage "\\mainpage") - is typically the root of hierarchy. - - This command behaves similar as \ref cmdref "\\ref" in the sense that - it creates a reference to a page labeled \<name\> with the optional - link text as specified in the second argument. - - It differs from the \\ref command in that it only works for pages, - and creates a parent-child relation between pages, where the - child page (or sub page) is identified by label \<name\>. - - See the \ref cmdsection "\\section" - and \ref cmdsubsection "\\subsection" commands if you want to add structure - without creating multiple pages. - - \note Each page can be the sub page of only one other page and - no cyclic relations are allowed, i.e. the page hierarchy must have a tree - structure. - - Here is an example: -\verbatim -/*! \mainpage A simple manual - -Some general info. - -This manual is divided in the following sections: -- \subpage intro -- \subpage advanced "Advanced usage" -*/ - -//----------------------------------------------------------- - -/*! \page intro Introduction -This page introduces the user to the topic. -Now you can proceed to the \ref advanced "advanced section". -*/ - -//----------------------------------------------------------- - -/*! \page advanced Advanced Usage -This page is for advanced users. -Make sure you have first read \ref intro "the introduction". -*/ -\endverbatim - -<hr> -\section cmdsection \\section <section-name> (section title) - - \addindex \\section - Creates a section with name \<section-name\>. The title of the - section should be specified as the second argument of the \\section - command. - - \warning This command only works inside related page documentation and - \e not in other documentation blocks! - -<hr> -\section cmdsubsection \\subsection <subsection-name> (subsection title) - - \addindex \\subsection - Creates a subsection with name \<subsection-name\>. The title of the - subsection should be specified as the second argument of the \\subsection - command. - - \warning This command only works inside a section of a related page - documentation block and - \e not in other documentation blocks! - - \sa - Section \ref cmdpage "\\page" for an example of the - \ref cmdsubsection "\\subsection" command. - -<hr> -\section cmdsubsubsection \\subsubsection <subsubsection-name> (subsubsection title) - - \addindex \\subsubsection - Creates a subsubsection with name \<subsubsection-name\>. The title of the - subsubsection should be specified as the second argument of the - \\subsubsection command. - - \warning This command only works inside a subsection of a - related page documentation block and - \e not in other documentation blocks! - - \sa - Section \ref cmdpage "\\page" for an example of the - \ref cmdsubsubsection "\\subsubsection" command. - -<hr> -\section cmdparagraph \\paragraph <paragraph-name> (paragraph title) - - \addindex \\paragraph - Creates a named paragraph with name \<paragraph-name\>. The title of the - paragraph should be specified as the second argument of the - \\paragraph command. - - \warning This command only works inside a subsubsection of a - related page documentation block and - \e not in other documentation blocks! - - \sa - Section \ref cmdpage "\\page" for an example of the - \ref cmdparagraph "\\paragraph" command. - -<hr> - -<h2>\htmlonly <center> --- \endhtmlonly - Commands for displaying examples - \htmlonly --- </center>\endhtmlonly</h2> - -\section cmddontinclude \\dontinclude <file-name> - - \addindex \\dontinclude - This command can be used to parse a source file without actually - verbatim including it in the documentation (as the \\include command does). - This is useful if you want to divide the source file into smaller pieces and - add documentation between the pieces. - Source files or directories can be specified using the - \ref cfg_example_path "EXAMPLE_PATH" - tag of doxygen's configuration file. - - The class and member declarations and definitions inside the code fragment - are `remembered' during the parsing of the comment block that contained - the \\dontinclude command. - - For line by line descriptions of source files, one or more lines - of the example can be displayed using the \\line, \\skip, \\skipline, and - \\until commands. An internal pointer is used for these commands. The - \\dontinclude command sets the pointer to the first line of the example. - - \par Example: - \verbinclude include.cpp - Where the example file \c example_test.cpp looks as follows: - \verbinclude example_test.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/include/html/example.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - - \sa sections \ref cmdline "\\line", \ref cmdskip "\\skip", - \ref cmdskipline "\\skipline", and \ref cmduntil "\\until". - -<hr> -\section cmdinclude \\include <file-name> - - \addindex \\include - This command can be used to include a source file as a block of code. - The command takes the name of an include file as an argument. - Source files or directories can be specified using the - \ref cfg_example_path "EXAMPLE_PATH" - tag of doxygen's configuration file. - - If \<file-name\> itself is not unique for the set of example files specified - by the \ref cfg_example_path "EXAMPLE_PATH" tag, you can include part - of the absolute path to disambiguate it. - - Using the \\include command is equivalent to inserting the file into - the documentation block and surrounding it - with \ref cmdcode "\\code" and \ref cmdendcode "\\endcode" commands. - - The main purpose of the \\include command is to avoid code - duplication in case of example blocks that consist of multiple - source and header files. - - For a line by line description of a source files use the - \ref cmddontinclude "\\dontinclude" command in combination with - the \ref cmdline "\\line", \ref cmdskip "\\skip", - \ref cmdskipline "\\skipline", - and \\until commands. - - \note Doxygen's special commands do not work inside blocks of code. - It is allowed to nest C-style comments inside a code block though. - - \sa section \ref cmdexample "\\example", \ref cmddontinclude "\\dontinclude", and - section \ref cmdverbatim "\\verbatim". - -<hr> -\section cmdincludelineno \\includelineno <file-name> - - \addindex \\includelineno - This command works the same way as \\include, but will add line - numbers to the included file. - - \sa section \ref cmdinclude "\\include". - -<hr> -\section cmdline \\line ( pattern ) - - \addindex \\line - This command searches line by line through the example that was last - included using \\include or \\dontinclude until it finds a non-blank - line. If that line contains the specified pattern, it is written - to the output. - - The internal pointer that is used to keep track of the current line in - the example, is set to the start of the line following the non-blank - line that was found (or to the end of the example if no such line could - be found). - - See section \ref cmddontinclude "\\dontinclude" for an example. - -<hr> -\section cmdskip \\skip ( pattern ) - - \addindex \\skip - This command searches line by line through the example that was last - included using \\include or \\dontinclude until it finds a line that contains - the specified pattern. - - The internal pointer that is used to keep track of the current line in - the example, is set to the start of the line that contains the specified - pattern (or to the end of the example if the pattern could not be found). - - See section \ref cmddontinclude "\\dontinclude" for an example. - -<hr> -\section cmdskipline \\skipline ( pattern ) - - \addindex \\skipline - This command searches line by line through the example that was last - included using \\include or \\dontinclude until it finds a line that contains - the specified pattern. It then writes the line to the output. - - The internal pointer that is used to keep track of the current line in - the example, is set to the start of the line following the line that is - written (or to the end of the example if the pattern could not be found). - - \par Note: - The command: - \verbatim\skipline pattern\endverbatim - is equivalent to: -\verbatim -\skip pattern -\line pattern\endverbatim - - See section \ref cmddontinclude "\\dontinclude" for an example. - -<hr> -\section cmduntil \\until ( pattern ) - - \addindex \\until - This command writes all lines of the example that was last - included using \\include or \\dontinclude to the output, until it finds - a line containing the specified pattern. The line containing the pattern - will be written as well. - - The internal pointer that is used to keep track of the current line in - the example, is set to the start of the line following last written - line (or to the end of the example if the pattern could not be found). - - See section \ref cmddontinclude "\\dontinclude" for an example. - -<hr> -\section cmdverbinclude \\verbinclude <file-name> - - \addindex \\verbinclude - This command includes the file \<file-name\> verbatim in the documentation. - The command is equivalent to pasting the file in the documentation and - placing \\verbatim and \\endverbatim commands around it. - - Files or directories that doxygen should look for can be specified using the - \ref cfg_example_path "EXAMPLE_PATH" tag of doxygen's configuration file. - -<hr> -\section cmdhtmlinclude \\htmlinclude <file-name> - - \addindex \\htmlinclude - This command includes the file \<file-name\> as is in the HTML documentation. - The command is equivalent to pasting the file in the documentation and - placing \\htmlonly and \\endhtmlonly commands around it. - - Files or directories that doxygen should look for can be specified using the - \ref cfg_example_path "EXAMPLE_PATH" tag of doxygen's configuration file. - -<hr> -<h2>\htmlonly <center> --- \endhtmlonly - Commands for visual enhancements - \htmlonly --- </center>\endhtmlonly</h2> - -\section cmda \\a <word> - - \addindex \\a - Displays the argument \<word\> using a special font. - Use this command to refer to member arguments in the running text. - - \par Example: - \verbatim - ... the \a x and \a y coordinates are used to ... - \endverbatim - This will result in the following text:<br><br> - ... the \a x and \a y coordinates are used to ... - -<hr> -\section cmdarg \\arg { item-description } - - \addindex \\arg - This command has one argument that continues until the first - blank line or until another \\arg is encountered. - The command can be used to generate a simple, not nested list of - arguments. - Each argument should start with a \\arg command. - - \par Example: - Typing: - \verbatim - \arg \c AlignLeft left alignment. - \arg \c AlignCenter center alignment. - \arg \c AlignRight right alignment - - No other types of alignment are supported. - \endverbatim - will result in the following text:<br><br> - <ul> - <li> \c AlignLeft left alignment. - <li> \c AlignCenter center alignment. - <li> \c AlignRight right alignment - </ul><br> - No other types of alignment are supported. - - \par Note: - For nested lists, HTML commands should be used. - - Equivalent to \ref cmdli "\\li" - - -<hr> -\section cmdb \\b <word> - - \addindex \\b - Displays the argument \<word\> using a bold font. - Equivalent to \<b\>word\</b\>. - To put multiple words in bold use \<b\>multiple words\</b\>. - -<hr> -\section cmdc \\c <word> - - \addindex \\c - Displays the argument \<word\> using a typewriter font. - Use this to refer to a word of code. - Equivalent to \<tt\>word\</tt\>. - - \par Example: - Typing: - \verbatim - ... This function returns \c void and not \c int ... - \endverbatim - will result in the following text:<br><br> - ... This function returns \c void and not \c int ... - - Equivalent to \ref cmdp "\\p" - To have multiple words in typewriter font use \<tt\>multiple words\</tt\>. - -<hr> -\section cmdcode \\code - - \addindex \\code - Starts a block of code. A code block is treated differently - from ordinary text. It is interpreted as C/C++ code. The names of the - classes and members that are documented are automatically replaced by - links to the documentation. - - \sa section \ref cmdendcode "\\endcode", section \ref cmdverbatim "\\verbatim". - -<hr> -\section cmdcopydoc \\copydoc <link-object> - - \addindex \\copydoc - Copies a documentation block from the object specified by \<link-object\> - and pastes it at the location of the command. This command can be useful - to avoid cases where a documentation block would otherwise have to be - duplicated or it can be used to extend the documentation of an inherited - member. - - The link object can point to a member (of a class, file or group), - a class, a namespace, a group, a page, or a file (checked in that order). - Note that if the object pointed to is a member (function, variable, - typedef, etc), the compound (class, file, or group) containing it - should also be documented for the copying to work. - - To copy the documentation for a member of a - class for instance one can put the following in the documentation - -\verbatim - /*! @copydoc MyClass::myfunction() - * More documentation. - */ -\endverbatim - - if the member is overloaded, you should specify the argument types - explicitly (without spaces!), like in the following: - -\verbatim - /*! @copydoc MyClass::myfunction(type1,type2) */ -\endverbatim - - Qualified names are only needed if the context in which the documentation - block is found requires them. - - The copydoc command can be used recursively, but cycles in the copydoc - relation will be broken and flagged as an error. - -<hr> -\section cmddot \\dot - - \addindex \\dot - Starts a text fragment which should contain a valid description of a - dot graph. The text fragment ends with \ref cmdenddot "\\enddot". - Doxygen will pass the text on to dot and include the resulting - image (and image map) into the output. - The nodes of a graph can be made clickable by using the URL attribute. - By using the command \\ref inside the URL value you can conveniently - link to an item inside doxygen. Here is an example: -\code -/*! class B */ -class B {}; - -/*! class C */ -class C {}; - -/*! \mainpage - * - * Class relations expressed via an inline dot graph: - * \dot - * digraph example { - * node [shape=record, fontname=Helvetica, fontsize=10]; - * b [ label="class B" URL="\ref B"]; - * c [ label="class C" URL="\ref C"]; - * b -> c [ arrowhead="open", style="dashed" ]; - * } - * \enddot - * Note that the classes in the above graph are clickable - * (in the HTML output). - */ -\endcode - -<hr> -\section cmddotfile \\dotfile <file> ["caption"] - - \addindex \\dotfile - Inserts an image generated by dot from \<file\> into the documentation. - - The first argument specifies the file name of the image. - doxygen will look for files in the paths (or files) that you specified - after the \ref cfg_dotfile_dirs "DOTFILE_DIRS" tag. - If the dot file is found it will be used as an input file to the dot tool. - The resulting image will be put into the correct output directory. - If the dot file name contains spaces you'll have to put quotes (") around it. - - The second argument is optional and can be used to specify the caption - that is displayed below the image. This argument has to be specified - between quotes even if it does not contain any spaces. The quotes are - stripped before the caption is displayed. - -<hr> -\section cmde \\e <word> - - \addindex \\e - Displays the argument \<word\> in italics. - Use this command to emphasize words. - - \par Example: - Typing: - \verbatim - ... this is a \e really good example ... - \endverbatim - will result in the following text:<br><br> - ... this is a \e really good example ... - - Equivalent to \ref cmdem "\\em". - To emphasis multiple words use \<em\>multiple words\</em\>. - -<hr> -\section cmdem \\em <word> - - \addindex \\em - Displays the argument \<word\> in italics. - Use this command to emphasize words. - - \par Example: - Typing: - \verbatim - ... this is a \em really good example ... - \endverbatim - will result in the following text:<br><br> - ... this is a \em really good example ... - - Equivalent to \ref cmde "\\e" - -<hr> -\section cmdendcode \\endcode - - \addindex \\endcode - Ends a block of code. - \sa section \ref cmdcode "\\code" - -<hr> -\section cmdenddot \\enddot - - \addindex \\enddot - Ends a blocks that was started with \ref cmddot "\\dot". - -<hr> -\section cmdendhtmlonly \\endhtmlonly - - \addindex \\endhtmlonly - Ends a block of text that was started with a \\htmlonly command. - - \sa section \ref cmdhtmlonly "\\htmlonly". - -<hr> -\section cmdendlatexonly \\endlatexonly - - \addindex \\endlatexonly - Ends a block of text that was started with a \\latexonly command. - - \sa section \ref cmdlatexonly "\\latexonly". - -<hr> -\section cmdendmanonly \\endmanonly - - \addindex \\endmanonly - Ends a block of text that was started with a \\manonly command. - - \sa section \ref cmdmanonly "\\manonly". - -<hr> -\section cmdendverbatim \\endverbatim - - \addindex \\endverbatim - Ends a block of text that was started with a \\verbatim command. - - \sa section \ref cmdendcode "\\endcode", section \ref cmdverbatim "\\verbatim". - -<hr> -\section cmdendxmlonly \\endxmlonly - - \addindex \\endxmlonly - Ends a block of text that was started with a \\xmlonly command. - - \sa section \ref cmdxmlonly "\\xmlonly". - -<hr> -\section cmdfdollar \\f$ - - \addindex \\f\$ - - Marks the start and end of an in-text formula. - \sa section \ref formulas "formulas" for an example. - -<hr> -\section cmdfbropen \\f[ - - \addindex \\f[ - - Marks the start of a long formula that is displayed - centered on a separate line. - \sa section \ref cmdfbrclose "\\f]" and section \ref formulas "formulas". - -<hr> -\section cmdfbrclose \\f] - - \addindex \\f] - - Marks the end of a long formula that is displayed - centered on a separate line. - \sa section \ref cmdfbropen "\\f[" and section \ref formulas "formulas". - -<hr> -\section cmdhtmlonly \\htmlonly - - \addindex \\htmlonly - Starts a block of text that will be verbatim included in the - generated HTML documentation only. The block ends with a - endhtmlonly command. - - This command can be used to include HTML code that is too complex - for doxygen (i.e. applets, java-scripts, and HTML tags that - require attributes). You can use the \\latexonly and \\endlatexonly - pair to provide a proper \f$\mbox{\LaTeX}\f$ alternative. - - \b Note: - environment variables (like \$(HOME) ) are resolved inside a - HTML-only block. - - \sa section \ref cmdmanonly "\\manonly" and section - \ref cmdlatexonly "\\latexonly". - -<hr> -\section cmdimage \\image <format> <file> ["caption"] [<sizeindication>=<size>] - - \addindex \\image - Inserts an image into the documentation. This command is format - specific, so if you want to insert an image for more than one - format you'll have to repeat this command for each format. - - The first argument specifies the output format. Currently, the - following values are supported: \c html and \c latex. - - The second argument specifies the file name of the image. - doxygen will look for files in the paths (or files) that you specified - after the \ref cfg_image_path "IMAGE_PATH" tag. - If the image is found it will be copied to the correct output directory. - If the image name contains spaces you'll have to put quotes (") around it. - You can also specify an absolute URL instead of a file name, but then - doxygen does not copy the image nor check its existance. - - The third argument is optional and can be used to specify the caption - that is displayed below the image. This argument has to be specified - on a single line and between quotes even if it does not contain any - spaces. The quotes are stripped before the caption is displayed. - - The fourth argument is also optional and can be used to specify the - width or height of the image. This is only useful - for \f$\mbox{\LaTeX}\f$ output - (i.e. format=<code>latex</code>). The \c sizeindication can be - either \c width or \c height. The size should be a valid - size specifier in \f$\mbox{\LaTeX}\f$ (for example <code>10cm</code> or - <code>6in</code> or a symbolic width like <code>\\textwidth</code>). - - Here is example of a comment block: - -\verbatim - /*! Here is a snapshot of my new application: - * \image html application.jpg - * \image latex application.eps "My application" width=10cm - */ -\endverbatim - - And this is an example of how the relevant part of the configuration file - may look: - -\verbatim - IMAGE_PATH = my_image_dir -\endverbatim - - \warning The image format for HTML is limited to what your - browser supports. For \f$\mbox{\LaTeX}\f$, the image format - must be Encapsulated PostScript (eps). - <br><br> - Doxygen does not check if the image is in the correct format. - So \e you have to make sure this is the case! - -<hr> -\section cmdlatexonly \\latexonly - - \addindex \\latexonly - Starts a block of text that will be verbatim included in the - generated \f$\mbox{\LaTeX}\f$ documentation only. The block ends with a - endlatexonly command. - - This command can be used to include \f$\mbox{\LaTeX}\f$ code that is too - complex for doxygen (i.e. images, formulas, special characters). You can - use the \\htmlonly and \\endhtmlonly pair to provide a proper HTML - alternative. - - \b Note: - environment variables (like \$(HOME) ) are resolved inside a - \f$\mbox{\LaTeX}\f$-only block. - - \sa section \ref cmdlatexonly "\\latexonly" - and section \ref cmdhtmlonly "\\htmlonly". - -<hr> -\section cmdmanonly \\manonly - - \addindex \\manonly - Starts a block of text that will be verbatim included in the - generated MAN documentation only. The block ends with a - endmanonly command. - - This command can be used to include groff code directly into - MAN pages. You can use the \\htmlonly and \\latexonly and - \\endhtmlonly and \\endlatexonly pairs to provide proper - HTML and \f$\mbox{\LaTeX}\f$ alternatives. - - \sa section \ref cmdhtmlonly "\\htmlonly" and section - \ref cmdlatexonly "\\latexonly". - -<hr> -\section cmdli \\li { item-description } - - \addindex \\li - This command has one argument that continues until the first - blank line or until another \\li is encountered. - The command can be used to generate a simple, not nested list of - arguments. - Each argument should start with a \\li command. - - \par Example: - Typing: - \verbatim - \li \c AlignLeft left alignment. - \li \c AlignCenter center alignment. - \li \c AlignRight right alignment - - No other types of alignment are supported. - \endverbatim - will result in the following text:<br><br> - <ul> - <li> \c AlignLeft left alignment. - <li> \c AlignCenter center alignment. - <li> \c AlignRight right alignment - </ul><br> - No other types of alignment are supported. - - \par Note: - For nested lists, HTML commands should be used. - - Equivalent to \ref cmdarg "\\arg" - -<hr> -\section cmdn \\n - - \addindex \\n - Forces a new line. Equivalent to \<br\> and inspired by - the printf function. - -<hr> -\section cmdp \\p <word> - - \addindex \\p - Displays the parameter \<word\> using a typewriter font. - You can use this command to refer to member function parameters in - the running text. - - \par Example: - \verbatim - ... the \p x and \p y coordinates are used to ... - \endverbatim - This will result in the following text:<br><br> - ... the \p x and \p y coordinates are used to ... - - Equivalent to \ref cmdc "\\c" - -<hr> -\section cmdverbatim \\verbatim - - \addindex \\verbatim - Starts a block of text that will be verbatim included in both the - HTML and the - \f$\mbox{\LaTeX}\f$ documentation. The block should end with a - \\endverbatim block. All commands are disabled in a verbatim block. - - \warning Make sure you include a \\endverbatim command for each - \\verbatim command or the parser will get confused! - - \sa section \ref cmdcode "\\code", and section \ref cmdverbinclude "\\verbinclude". - -<hr> -\section cmdxmlonly \\xmlonly - - \addindex \\xmlonly - Starts a block of text that will be verbatim included in the - generated XML output only. The block ends with a - endxmlonly command. - - This command can be used to include custom XML tags. - - \sa section \ref cmdhtmlonly "\\htmlonly" and section - \ref cmdlatexonly "\\latexonly". - -<hr> -\section cmdbackslash \\\\ - - \addindex \\\\ - This command writes a backslash character (\\) to the HTML and - \f$\mbox{\LaTeX}\f$ output. The backslash has to be escaped in some - cases because doxygen uses it to detect commands. - -<hr> -\section cmdat \\\@ - - \addindex \\\@ - This command writes an at-sign (\@) to the HTML and - \f$\mbox{\LaTeX}\f$ output. The at-sign has to be escaped in some cases - because doxygen uses it to detect JavaDoc commands. - -<hr> -\section cmdtilde \\~[LanguageId] - \addindex \\~ - This command enables/disables a language specific filter. This can be - used to put documentation for different language into one comment block - and use the \c OUTPUT_LANGUAGE tag to filter out only a specific language. - Use \\~language_id to enable output for a specific language only and - \\~ to enable output for all languages (this is also the default mode). - - Example: -\verbatim -/*! \~english This is english \~dutch Dit is Nederlands \~german Dieses ist - deutsch. \~ output for all languages. - */ -\endverbatim - - -<hr> -\section cmdamp \\\& - - \addindex \\\& - This command writes the \& character to output. - This character has to be escaped because it has a special meaning in HTML. - -<hr> -\section cmddollar \\\$ - - \addindex \\\$ - This command writes the \$ character to the output. - This character has to be escaped in some cases, because it is used to expand - environment variables. - -<hr> -\section cmdhash \\\# - - \addindex \\\# - This command writes the \# character to the output. This - character has to be escaped in some cases, because it is used to refer - to documented entities. - -<hr> -\section cmdlt \\\< - - \addindex \\\< - This command writes the \< character to the output. - This character has to be escaped because it has a special meaning in HTML. - -<hr> -\section cmdgt \\\> - - \addindex \\\> - This command writes the \> character to the output. This - character has to be escaped because it has a special meaning in HTML. - -\section cmdperc \\\% - - \addindex \\\% - This command writes the \% character to the output. This - character has to be escaped in some cases, because it is used to - prevent auto-linking to word that is also a documented class or struct. - -<hr> -\section cmd_php_only PHP only commands -For PHP files there are a number of additional commands, that can be -used inside classes to make members public, private, or protected even -though the language itself doesn't support this notion. - -To mark a single item use one of \\private, \\protected, \\public. -For starting a section with a certain protection level use one of: -\\privatesection, \\protectedsection, \\publicsection. -The latter commands are similar to -"private:", "protected:", and "public:" in C++. - -<h2>\htmlonly <center> --- \endhtmlonly - Commands included for Qt compatibility - \htmlonly --- </center>\endhtmlonly</h2> -<hr> - -The following commands are supported to remain compatible to the Qt class -browser generator. Do \e not use these commands in your own documentation. -<ul> -<li>\\annotatedclasslist -<li>\\classhierarchy -<li>\\define -<li>\\functionindex -<li>\\header -<li>\\headerfilelist -<li>\\inherit -<li>\\l -<li>\\postheader -</ul> -<hr> - -*/ - diff --git a/doc/config.doc b/doc/config.doc deleted file mode 100644 index 891f148..0000000 --- a/doc/config.doc +++ /dev/null @@ -1,1913 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page config Configuration - -\section config_format Format - -A configuration file is a free-form ASCII text file with a structure -that is similar to that of a Makefile, with the default name \c Doxyfile. It is -parsed by \c doxygen. The file may contain tabs and newlines for -formatting purposes. The statements in the file are case-sensitive. -Comments may be placed anywhere within the file (except within quotes). -Comments begin with the \# character and end at the end of the line. - -The file essentially consists of a list of assignment statements. -Each statement consists of a \c TAG_NAME written in capitals, -followed by the <code>=</code> character and one or more values. If the same tag -is assigned more than once, the last assignment overwrites any earlier -assignment. For options that take a list as their argument, -the <code>+=</code> operator can be used instead of <code>=</code> to append -new values to the list. Values are sequences of non-blanks. If the value should -contain one or more blanks it must be surrounded by quotes ("..."). -Multiple lines can be concatenated by inserting a backslash (\\) -as the last character of a line. Environment variables can be expanded -using the pattern <code>\$(ENV_VARIABLE_NAME)</code>. - -You can also include part of a configuration file from another configuration -file using a <code>\@INCLUDE</code> tag as follows: -\verbatim -@INCLUDE = config_file_name -\endverbatim -The include file is searched in the current working directory. You can -also specify a list of directories that should be searched before looking -in the current working directory. Do this by putting a <code>\@INCLUDE_PATH</code> tag -with these paths before the <code>\@INCLUDE</code> tag, e.g: -\verbatim -@INCLUDE_PATH = my_config_dir -\endverbatim - -The configuration options can be divided into several categories. -Below is an alphabetical index of the tags that are recognized -followed by the descriptions of the tags grouped by category. - -\secreflist -\refitem cfg_abbreviate_brief ABBREVIATE_BRIEF -\refitem cfg_aliases ALIASES -\refitem cfg_allexternals ALLEXTERNALS -\refitem cfg_alphabetical_index ALPHABETICAL_INDEX -\refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC -\refitem cfg_binary_toc BINARY_TOC -\refitem cfg_builtin_stl_support BUILTIN_STL_SUPPORT -\refitem cfg_brief_member_desc BRIEF_MEMBER_DESC -\refitem cfg_call_graph CALL_GRAPH -\refitem cfg_case_sense_names CASE_SENSE_NAMES -\refitem cfg_chm_file CHM_FILE -\refitem cfg_class_diagrams CLASS_DIAGRAMS -\refitem cfg_class_graph CLASS_GRAPH -\refitem cfg_collaboration_graph COLLABORATION_GRAPH -\refitem cfg_cols_in_alpha_index COLS_IN_ALPHA_INDEX -\refitem cfg_compact_latex COMPACT_LATEX -\refitem cfg_compact_rtf COMPACT_RTF -\refitem cfg_create_subdirs CREATE_SUBDIRS -\refitem cfg_details_at_top DETAILS_AT_TOP -\refitem cfg_directory_graph DIRECTORY_GRAPH -\refitem cfg_disable_index DISABLE_INDEX -\refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC -\refitem cfg_dot_image_format DOT_IMAGE_FORMAT -\refitem cfg_dot_multi_targets DOT_MULTI_TARGETS -\refitem cfg_dot_path DOT_PATH -\refitem cfg_dot_transparent DOT_TRANSPARENT -\refitem cfg_dotfile_dirs DOTFILE_DIRS -\refitem cfg_enable_preprocessing ENABLE_PREPROCESSING -\refitem cfg_enum_values_per_line ENUM_VALUES_PER_LINE -\refitem cfg_enabled_sections ENABLED_SECTIONS -\refitem cfg_example_path EXAMPLE_PATH -\refitem cfg_example_patterns EXAMPLE_PATTERNS -\refitem cfg_example_recursive EXAMPLE_RECURSIVE -\refitem cfg_exclude EXCLUDE -\refitem cfg_exclude_patterns EXCLUDE_PATTERNS -\refitem cfg_exclude_symlinks EXCLUDE_SYMLINKS -\refitem cfg_expand_as_defined EXPAND_AS_DEFINED -\refitem cfg_expand_only_predef EXPAND_ONLY_PREDEF -\refitem cfg_external_groups EXTERNAL_GROUPS -\refitem cfg_extra_packages EXTRA_PACKAGES -\refitem cfg_extract_all EXTRACT_ALL -\refitem cfg_extract_local_classes EXTRACT_LOCAL_CLASSES -\refitem cfg_extract_local_methods EXTRACT_LOCAL_METHODS -\refitem cfg_extract_private EXTRACT_PRIVATE -\refitem cfg_extract_static EXTRACT_STATIC -\refitem cfg_file_patterns FILE_PATTERNS -\refitem cfg_file_version_filter FILE_VERSION_FILTER -\refitem cfg_filter_patterns FILTER_PATTERNS -\refitem cfg_filter_source_files FILTER_SOURCE_FILES -\refitem cfg_full_path_names FULL_PATH_NAMES -\refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF -\refitem cfg_generate_buglist GENERATE_BUGLIST -\refitem cfg_generate_chi GENERATE_CHI -\refitem cfg_generate_deprecatedlist GENERATE_DEPRECIATEDLIST -\refitem cfg_generate_html GENERATE_HTML -\refitem cfg_generate_htmlhelp GENERATE_HTMLHELP -\refitem cfg_generate_latex GENERATE_LATEX -\refitem cfg_generate_legend GENERATE_LEGEND -\refitem cfg_generate_man GENERATE_MAN -\refitem cfg_generate_perlmod GENERATE_PERLMOD -\refitem cfg_generate_rtf GENERATE_RTF -\refitem cfg_generate_tagfile GENERATE_TAGFILE -\refitem cfg_generate_testlist GENERATE_TESTLIST -\refitem cfg_generate_todolist GENERATE_TODOLIST -\refitem cfg_generate_treeview GENERATE_TREEVIEW -\refitem cfg_generate_xml GENERATE_XML -\refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY -\refitem cfg_group_graphs GROUP_GRAPHS -\refitem cfg_have_dot HAVE_DOT -\refitem cfg_hhc_location HHC_LOCATION -\refitem cfg_hide_friend_compounds HIDE_FRIEND_COMPOUNDS -\refitem cfg_hide_in_body_docs HIDE_IN_BODY_DOCS -\refitem cfg_hide_scope_names HIDE_SCOPE_NAMES -\refitem cfg_hide_undoc_classes HIDE_UNDOC_CLASSES -\refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS -\refitem cfg_hide_undoc_relations HIDE_UNDOC_RELATIONS -\refitem cfg_html_align_members HTML_ALIGN_MEMBERS -\refitem cfg_html_footer HTML_FOOTER -\refitem cfg_html_header HTML_HEADER -\refitem cfg_html_output HTML_OUTPUT -\refitem cfg_html_stylesheet HTML_STYLESHEET -\refitem cfg_ignore_prefix IGNORE_PREFIX -\refitem cfg_image_path IMAGE_PATH -\refitem cfg_include_graph INCLUDE_GRAPH -\refitem cfg_include_path INCLUDE_PATH -\refitem cfg_inherit_docs INHERIT_DOCS -\refitem cfg_inline_info INLINE_INFO -\refitem cfg_inline_inherited_memb INLINE_INHERITED_MEMB -\refitem cfg_inline_sources INLINE_SOURCES -\refitem cfg_input INPUT -\refitem cfg_input_filter INPUT_FILTER -\refitem cfg_internal_docs INTERNAL_DOCS -\refitem cfg_javadoc_autobrief JAVADOC_AUTOBRIEF -\refitem cfg_latex_batchmode LATEX_BATCHMODE -\refitem cfg_latex_cmd_name LATEX_CMD_NAME -\refitem cfg_latex_header LATEX_HEADER -\refitem cfg_latex_hide_indices LATEX_HIDE_INDICES -\refitem cfg_latex_output LATEX_OUTPUT -\refitem cfg_macro_expansion MACRO_EXPANSION -\refitem cfg_makeindex_cmd_name MAKEINDEX_CMD_NAME -\refitem cfg_man_extension MAN_EXTENSION -\refitem cfg_man_links MAN_LINKS -\refitem cfg_man_output MAN_OUTPUT -\refitem cfg_max_dot_graph_depth MAX_DOT_GRAPH_DEPTH -\refitem cfg_max_dot_graph_height MAX_DOT_GRAPH_HEIGHT -\refitem cfg_max_dot_graph_width MAX_DOT_GRAPH_WIDTH -\refitem cfg_max_initializer_lines MAX_INITIALIZER_LINES -\refitem cfg_multiline_cpp_is_brief MULTILINE_CPP_IS_BRIEF -\refitem cfg_optimize_output_for_c OPTIMIZE_OUTPUT_FOR_C -\refitem cfg_optimize_output_java OPTIMIZE_OUTPUT_JAVA -\refitem cfg_output_directory OUTPUT_DIRECTORY -\refitem cfg_output_language OUTPUT_LANGUAGE -\refitem cfg_paper_type PAPER_TYPE -\refitem cfg_pdf_hyperlinks PDF_HYPERLINKS -\refitem cfg_perl_path PERL_PATH -\refitem cfg_perlmod_latex PERLMOD_LATEX -\refitem cfg_perlmod_pretty PERLMOD_PRETTY -\refitem cfg_perlmod_makevar_prefix PERLMOD_MAKEVAR_PREFIX -\refitem cfg_predefined PREDEFINED -\refitem cfg_project_name PROJECT_NAME -\refitem cfg_project_number PROJECT_NUMBER -\refitem cfg_quiet QUIET -\refitem cfg_recursive RECURSIVE -\refitem cfg_referenced_by_relation REFERENCED_BY_RELATION -\refitem cfg_references_relation REFERENCES_RELATION -\refitem cfg_repeat_brief REPEAT_BRIEF -\refitem cfg_rtf_extensions_file RTF_EXTENSIONS_FILE -\refitem cfg_rtf_hyperlinks RTF_HYPERLINKS -\refitem cfg_rtf_output RTF_OUTPUT -\refitem cfg_rtf_stylesheet_file RTF_STYLESHEET_FILE -\refitem cfg_search_includes SEARCH_INCLUDES -\refitem cfg_searchengine SEARCHENGINE -\refitem cfg_separate_member_pages SEPARATE_MEMBER_PAGES -\refitem cfg_short_names SHORT_NAMES -\refitem cfg_show_dirs SHOW_DIRECTORIES -\refitem cfg_show_include_files SHOW_INCLUDE_FILES -\refitem cfg_show_used_files SHOW_USED_FILES -\refitem cfg_skip_function_macros SKIP_FUNCTION_MACROS -\refitem cfg_sort_brief_docs SORT_BRIEF_DOCS -\refitem cfg_sort_member_docs SORT_MEMBER_DOCS -\refitem cfg_source_browser SOURCE_BROWSER -\refitem cfg_strip_code_comments STRIP_CODE_COMMENTS -\refitem cfg_strip_from_inc_path STRIP_FROM_INC_PATH -\refitem cfg_strip_from_path STRIP_FROM_PATH -\refitem cfg_subgrouping SUBGROUPING -\refitem cfg_tab_size TAB_SIZE -\refitem cfg_tagfiles TAGFILES -\refitem cfg_template_relations TEMPLATE_RELATIONS -\refitem cfg_toc_expand TOC_EXPAND -\refitem cfg_treeview_width TREEVIEW_WIDTH -\refitem cfg_uml_look UML_LOOK -\refitem cfg_use_htags USE_HTAGS -\refitem cfg_use_pdflatex USE_PDFLATEX -\refitem cfg_use_windows_encoding USE_WINDOWS_ENCODING -\refitem cfg_verbatim_headers VERBATIM_HEADERS -\refitem cfg_warn_format WARN_FORMAT -\refitem cfg_warn_if_doc_error WARN_IF_DOC_ERROR -\refitem cfg_warn_if_undocumented WARN_IF_UNDOCUMENTED -\refitem cfg_warn_logfile WARN_LOGFILE -\refitem cfg_warn_no_paramdoc WARN_NO_PARAMDOC -\refitem cfg_warnings WARNINGS -\refitem cfg_xml_dtd XML_DTD -\refitem cfg_xml_output XML_OUTPUT -\refitem cfg_xml_programlisting XML_PROGRAMLISTING -\refitem cfg_xml_schema XML_SCHEMA -\endsecreflist - -\section config_project Project related options -\anchor cfg_project_name -<dl> - -<dt>\c PROJECT_NAME <dd> - \addindex PROJECT_NAME - The \c PROJECT_NAME tag is a single word (or a sequence of words - surrounded by double-quotes) that should identify the project for which the - documentation is generated. This name is used in the title of most - generated pages and in a few other places. - -\anchor cfg_project_number -<dt>\c PROJECT_NUMBER <dd> - \addindex PROJECT_NUMBER - The \c PROJECT_NUMBER tag can be used to enter a project or revision number. - This could be handy for archiving the generated documentation or - if some version control system is used. - -\anchor cfg_output_directory -<dt>\c OUTPUT_DIRECTORY <dd> - \addindex OUTPUT_DIRECTORY - The \c OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) - path into which the generated documentation will be written. - If a relative path is entered, it will be relative to the location - where doxygen was started. If left blank the current directory will be used. - -\anchor cfg_create_subdirs -<dt>\c CREATE_SUBDIRS <dd> - \addindex CREATE_SUBDIRS - If the \c CREATE_SUBDIRS tag is set to \c YES, then doxygen will create - 4096 sub-directories (in 2 levels) under the output directory of each output - format and will distribute the generated files over these directories. - Enabling this option can be useful when feeding doxygen a huge amount of source - files, where putting all generated files in the same directory would otherwise - causes performance problems for the file system. - -\anchor cfg_output_language -<dt>\c OUTPUT_LANGUAGE <dd> - \addindex OUTPUT_LANGUAGE - The \c OUTPUT_LANGUAGE tag is used to specify the language in which all - documentation generated by doxygen is written. Doxygen will use this - information to generate all constant output in the proper language. - The default language is English, other supported languages are: - Brazilian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, - German, Greek, Hungarian, Italian, Japanese, Korean, Lithuanian, Norwegian, - Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, - Swedish, and Ukrainian. - -\anchor cfg_use_windows_encoding -<dt>\c USE_WINDOWS_ENCODING <dd> - \addindex USE_WINDOWS_ENCODING - This tag can be used to specify the encoding used in the generated output. - The encoding is not always determined by the language that is chosen, - but also whether or not the output is meant for Windows or non-Windows users. - In case there is a difference, setting the \c USE_WINDOWS_ENCODING tag to \c YES - forces the Windows encoding, (this is the default for the Windows binary), - whereas setting the tag to \c NO uses a Unix-style encoding (the default for - all platforms other than Windows). - -\anchor cfg_brief_member_desc -<dt>\c BRIEF_MEMBER_DESC <dd> - \addindex BRIEF_MEMBER_DESC - If the \c BRIEF_MEMBER_DESC tag is set to \c YES (the default) doxygen will - include brief member descriptions after the members that are listed in - the file and class documentation (similar to JavaDoc). - Set to NO to disable this. - -\anchor cfg_repeat_brief -<dt>\c REPEAT_BRIEF <dd> - \addindex REPEAT_BRIEF - If the \c REPEAT_BRIEF tag is set to \c YES (the default) doxygen will - prepend the brief description of a member or function before the detailed - description - - \par Note: - If both \c HIDE_UNDOC_MEMBERS and \c BRIEF_MEMBER_DESC are set to \c NO, the - brief descriptions will be completely suppressed. - -\anchor cfg_abbreviate_brief -<dt>\c ABBREVIATE_BRIEF <dd> - \addindex ABBREVIATE_BRIEF - This tag implements a quasi-intelligent brief description abbreviator - that is used to form the text in various listings. Each string - in this list, if found as the leading text of the brief description, will be - stripped from the text and the result after processing the whole list, is used - as the annotated text. Otherwise, the brief description is used as-is. If left - blank, the following values are used ("\$name" is automatically replaced with the - name of the entity): "The $name class" "The $name widget" "The $name file" - "is" "provides" "specifies" "contains" "represents" "a" "an" "the". - -\anchor cfg_always_detailed_sec -<dt>\c ALWAYS_DETAILED_SEC <dd> - \addindex ALWAYS_DETAILED_SEC - If the \c ALWAYS_DETAILED_SEC and \c REPEAT_BRIEF tags are both set to \c YES then - doxygen will generate a detailed section even if there is only a brief - description. - -\anchor cfg_inline_inherited_memb -<dt>\c INLINE_INHERITED_MEMB <dd> -\addindex INLINE_INHERITED_MEMB - If the \c INLINE_INHERITED_MEMB tag is set to \c YES, doxygen will show all inherited - members of a class in the documentation of that class as if those members were - ordinary class members. Constructors, destructors and assignment operators of - the base classes will not be shown. - -\anchor cfg_full_path_names -<dt>\c FULL_PATH_NAMES <dd> - \addindex FULL_PATH_NAMES - If the \c FULL_PATH_NAMES tag is set to \c YES doxygen will prepend the full - path before files name in the file list and in the header files. If set - to NO the shortest path that makes the file name unique will be used - -\anchor cfg_strip_from_path -<dt>\c STRIP_FROM_PATH <dd> - \addindex STRIP_FROM_PATH - If the \c FULL_PATH_NAMES tag is set to \c YES then the \c STRIP_FROM_PATH tag - can be used to strip a user-defined part of the path. Stripping is - only done if one of the specified strings matches the left-hand part of the - path. The tag can be used to show relative paths in the file list. - If left blank the directory from which doxygen is run is used as the - path to strip. - -\anchor cfg_strip_from_inc_path -<dt>\c STRIP_FROM_INC_PATH <dd> - \addindex STRIP_FROM_INC_PATH - The \c STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of - the path mentioned in the documentation of a class, which tells - the reader which header file to include in order to use a class. - If left blank only the name of the header file containing the class - definition is used. Otherwise one should specify the include paths that - are normally passed to the compiler using the -I flag. - - - -\anchor cfg_case_sense_names -<dt>\c CASE_SENSE_NAMES <dd> - \addindex CASE_SENSE_NAMES - If the \c CASE_SENSE_NAMES tag is set to \c NO then doxygen - will only generate file names in lower-case letters. If set to - \c YES upper-case letters are also allowed. This is useful if you have - classes or files whose names only differ in case and if your file system - supports case sensitive file names. Windows users are advised to set this - option to NO. - -\anchor cfg_short_names -<dt>\c SHORT_NAMES <dd> - \addindex SHORT_NAMES - If the \c SHORT_NAMES tag is set to \c YES, doxygen will generate much shorter - (but less readable) file names. This can be useful is your file systems - doesn't support long names like on DOS, Mac, or CD-ROM. - -\anchor cfg_javadoc_autobrief -<dt>\c JAVADOC_AUTOBRIEF <dd> - \addindex JAVADOC_AUTOBRIEF - If the \c JAVADOC_AUTOBRIEF is set to \c YES then doxygen - will interpret the first line (until the first dot) of a JavaDoc-style - comment as the brief description. If set to NO (the default), the - Javadoc-style will behave just like the Qt-style comments. - -\anchor cfg_builtin_stl_support -<dt>\c BUILTIN_STL_SUPPORT <dd> - \addindex BUILTIN_STL_SUPPORT - If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to - include (a tag file for) the STL sources as input, then you should - set this tag to \c YES in order to let doxygen match functions declarations and - definitions whose arguments contain STL classes (e.g. func(std::string); v.s. - func(std::string) {}). This also make the inheritance and collaboration - diagrams that involve STL classes more complete and accurate. - -\anchor cfg_distribute_group_doc -<dt>\c DISTRIBUTE_GROUP_DOC <dd> - \addindex DISTRIBUTE_GROUP_DOC - If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC - tag is set to YES, then doxygen will reuse the documentation of the first - member in the group (if any) for the other members of the group. By default - all members of a group must be documented explicitly. - -\anchor cfg_multiline_cpp_is_brief -<dt>\c MULTILINE_CPP_IS_BRIEF <dd> - \addindex MULTILINE_CPP_IS_BRIEF - The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen - treat a multi-line C++ special comment block (i.e. a block of //! or /// - comments) as a brief description. This used to be the default behaviour. - The new default is to treat a multi-line C++ comment block as a detailed - description. Set this tag to YES if you prefer the old behaviour instead. - Note that setting this tag to YES also means that rational rose comments - are not recognized any more. - -\anchor cfg_details_at_top -<dt>\c DETAILS_AT_TOP <dd> - \addindex DETAILS_AT_TOP - If the DETAILS_AT_TOP tag is set to YES then Doxygen - will output the detailed description near the top, like JavaDoc. - If set to NO, the detailed description appears after the member - documentation. - -\anchor cfg_inherit_docs -<dt>\c INHERIT_DOCS <dd> - \addindex INHERIT_DOCS - If the \c INHERIT_DOCS tag is set to \c YES (the default) then an undocumented - member inherits the documentation from any documented member that it - re-implements. - -\anchor cfg_separate_member_pages -<dt>\c SEPARATE_MEMBER_PAGES <dd> - \addindex SEPARATE_MEMBER_PAGES - If the \c SEPARATE_MEMBER_PAGES tag is set to \c YES, then doxygen will produce - a new page for each member. If set to \c NO, the documentation of a member will - be part of the file/class/namespace that contains it. - -\anchor cfg_tab_size -<dt>\c TAB_SIZE <dd> - \addindex TAB_SIZE - the \c TAB_SIZE tag can be used to set the number of spaces in a tab. - Doxygen uses this value to replace tabs by spaces in code fragments. - -\anchor cfg_aliases -<dt>\c ALIASES <dd> - \addindex ALIASES - This tag can be used to specify a number of aliases that acts - as commands in the documentation. An alias has the form -\verbatim - name=value -\endverbatim - For example adding -\verbatim - "sideeffect=\par Side Effects:\n" -\endverbatim - will allow you to - put the command \\sideeffect (or \@sideeffect) in the documentation, which - will result in a user-defined paragraph with heading "Side Effects:". - You can put \\n's in the value part of an alias to insert newlines. - -\anchor cfg_optimize_output_for_c -<dt>\c OPTIMIZE_OUTPUT_FOR_C <dd> - \addindex OPTIMIZE_OUTPUT_FOR_C - Set the \c OPTIMIZE_OUTPUT_FOR_C tag to \c YES if your project consists - of C sources only. Doxygen will then generate output that is more tailored - for C. For instance, some of the names that are used will be different. - The list of all members will be omitted, etc. - -\anchor cfg_optimize_output_java -<dt>\c OPTIMIZE_OUTPUT_JAVA <dd> - \addindex OPTIMIZE_OUTPUT_JAVA - Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or - Python sources only. Doxygen will then generate output that is more tailored - for that language. For instance, namespaces will be presented as packages, - qualified scopes will look different, etc. - -\anchor cfg_subgrouping -<dt>\c SUBGROUPING <dd> - \addindex SUBGROUPING - Set the \c SUBGROUPING tag to \c YES (the default) to allow class member groups of - the same type (for instance a group of public functions) to be put as a - subgroup of that type (e.g. under the Public Functions section). Set it to - \c NO to prevent subgrouping. Alternatively, this can be done per class using - the \ref cmdnosubgrouping "\\nosubgrouping" command. - -</dl> - -\section config_build Build related options -\anchor cfg_extract_all -<dl> - -<dt>\c EXTRACT_ALL <dd> - \addindex EXTRACT_ALL - If the \c EXTRACT_ALL tag is set to \c YES doxygen will assume all - entities in documentation are documented, even if no documentation was - available. Private class members and static file members will be hidden - unless the \c EXTRACT_PRIVATE and \c EXTRACT_STATIC tags are set to \c YES - - \par Note: - This will also disable the warnings about undocumented members - that are normally produced when \c WARNINGS is set to \c YES - -\anchor cfg_extract_private -<dt>\c EXTRACT_PRIVATE <dd> - \addindex EXTRACT_PRIVATE - If the \c EXTRACT_PRIVATE tag is set to \c YES all private members of a - class will be included in the documentation. - -\anchor cfg_extract_static -<dt>\c EXTRACT_STATIC <dd> - \addindex EXTRACT_STATIC - If the \c EXTRACT_STATIC tag is set to \c YES all static members of a file - will be included in the documentation. - -\anchor cfg_extract_local_classes -<dt>\c EXTRACT_LOCAL_CLASSES <dd> - \addindex EXTRACT_LOCAL_CLASSES - If the \c EXTRACT_LOCAL_CLASSES tag is set to \c YES classes (and structs) - defined locally in source files will be included in the documentation. - If set to NO only classes defined in header files are included. Does not - have any effect for Java sources. - -\anchor cfg_extract_local_methods -<dt>\c EXTRACT_LOCAL_METHODS <dd> - \addindex EXTRACT_LOCAL_METHODS - This flag is only useful for Objective-C code. When set to \c YES local - methods, which are defined in the implementation section but not in - the interface are included in the documentation. - If set to \c NO (the default) only methods in the interface are included. - -\anchor cfg_hide_undoc_members -<dt>\c HIDE_UNDOC_MEMBERS <dd> - \addindex HIDE_UNDOC_MEMBERS - If the \c HIDE_UNDOC_MEMBERS tag is set to \c YES, doxygen will hide all - undocumented members inside documented classes or files. - If set to \c NO (the default) these members will be included in the - various overviews, but no documentation section is generated. - This option has no effect if \c EXTRACT_ALL is enabled. - -\anchor cfg_hide_undoc_classes -<dt>\c HIDE_UNDOC_CLASSES <dd> - \addindex HIDE_UNDOC_CLASSES - If the \c HIDE_UNDOC_CLASSESS tag is set to \c YES, doxygen will hide all - undocumented classes. - If set to \c NO (the default) these classes will be included in the - various overviews. - This option has no effect if \c EXTRACT_ALL is enabled. - -\anchor cfg_hide_friend_compounds -<dt>\c HIDE_FRIEND_COMPOUNDS <dd> - \addindex HIDE_FRIEND_COMPOUNDS - If the \c HIDE_FRIEND_COMPOUNDS tag is set to \c YES, Doxygen will hide all - friend (class|struct|union) declarations. - If set to \c NO (the default) these declarations will be included in the - documentation. - -\anchor cfg_hide_in_body_docs -<dt>\c HIDE_IN_BODY_DOCS <dd> - \addindex HIDE_IN_BODY_DOCS -If the \c HIDE_IN_BODY_DOCS tag is set to \c YES, Doxygen will hide any -documentation blocks found inside the body of a function. -If set to \c NO (the default) these blocks will be appended to the -function's detailed documentation block. - -\anchor cfg_internal_docs -<dt>\c INTERNAL_DOCS <dd> - \addindex INTERNAL_DOCS - The \c INTERNAL_DOCS tag determines if documentation - that is typed after a \ref cmdinternal "\\internal" command is included. If the tag is set - to \c NO (the default) then the documentation will be excluded. - Set it to \c YES to include the internal documentation. - -\anchor cfg_hide_scope_names -<dt>\c HIDE_SCOPE_NAMES <dd> - \addindex HIDE_SCOPE_NAMES - If the \c HIDE_SCOPE_NAMES tag is set to \c NO (the default) then doxygen - will show members with their full class and namespace scopes in the - documentation. If set to \c YES the scope will be hidden. - -\anchor cfg_show_include_files -<dt>\c SHOW_INCLUDE_FILES <dd> - \addindex SHOW_INCLUDE_FILES - If the SHOW_INCLUDE_FILES tag is set to YES (the default) then doxygen - will put a list of the files that are included by a file in the documentation - of that file. - -\anchor cfg_inline_info -<dt>\c INLINE_INFO <dd> - \addindex INLINE_INFO - If the \c INLINE_INFO tag is set to \c YES (the default) then a tag [inline] - is inserted in the documentation for inline members. - -\anchor cfg_sort_member_docs -<dt>\c SORT_MEMBER_DOCS <dd> - \addindex SORT_MEMBER_DOCS - If the \c SORT_MEMBER_DOCS tag is set to \c YES (the default) then doxygen - will sort the (detailed) documentation of file and class members - alphabetically by member name. If set to \c NO the members will appear in - declaration order. - -\anchor cfg_sort_brief_docs -<dt>\c SORT_BRIEF_DOCS <dd> - \addindex SORT_BRIEF_DOCS - If the \c SORT_BRIEF_DOCS tag is set to \c YES then doxygen will sort the - brief descriptions of file, namespace and class members alphabetically - by member name. If set to \c NO (the default) the members will appear in - declaration order. - -\anchor cfg_generate_deprecatedlist -<dt>\c GENERATE_DEPRECATEDLIST <dd> - \addindex GENERATE_DEPRECATEDLIST - The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or - disable (NO) the deprecated list. This list is created by - putting \ref cmddeprecated "\\deprecated" - commands in the documentation. - -\anchor cfg_generate_todolist -<dt>\c GENERATE_TODOLIST <dd> - \addindex GENERATE_TODOLIST - The GENERATE_TODOLIST tag can be used to enable (YES) or - disable (NO) the todo list. This list is created by - putting \ref cmdtodo "\\todo" - commands in the documentation. - -\anchor cfg_generate_testlist -<dt>\c GENERATE_TESTLIST <dd> - \addindex GENERATE_TESTLIST - The GENERATE_TESTLIST tag can be used to enable (YES) or - disable (NO) the test list. This list is created by - putting \ref cmdtest "\\test" commands in the documentation. - -\anchor cfg_generate_buglist -<dt>\c GENERATE_BUGLIST <dd> - \addindex GENERATE_BUGLIST - The GENERATE_BUGLIST tag can be used to enable (YES) or - disable (NO) the bug list. This list is created by - putting \ref cmdbug "\\bug" commands in the documentation. - -\anchor cfg_enabled_sections -<dt>\c ENABLED_SECTIONS <dd> - \addindex ENABLED_SECTIONS - The \c ENABLED_SECTIONS tag can be used to enable conditional - documentation sections, marked by \ref cmdif "\\if" \<section-label\> ... - \ref cmdendif "\\endif" and \ref cmdcond "\\cond" \<section-label\> ... - \ref cmdendcond "\\endcond" blocks. - -\anchor cfg_max_initializer_lines -<dt>\c MAX_INITIALIZER_LINES <dd> - \addindex MAX_INITIALIZER_LINES - The \c MAX_INITIALIZER_LINES tag determines the maximum number of lines - that the initial value of a variable or define can be. If the initializer - consists of more lines than specified here it will be hidden. Use a value - of 0 to hide initializers completely. The appearance of the value of - individual variables and defines can be controlled using \ref cmdshowinitializer "\\showinitializer" - or \ref cmdhideinitializer "\\hideinitializer" command in the documentation. - -\anchor cfg_show_used_files -<dt>\c SHOW_USED_FILES <dd> - \addindex SHOW_USED_FILES - Set the \c SHOW_USED_FILES tag to \c NO to disable the list of files generated - at the bottom of the documentation of classes and structs. If set to \c YES the - list will mention the files that were used to generate the documentation. - -\anchor cfg_show_dirs -<dt>\c SHOW_DIRECTORIES <dd> - \addindex SHOW_DIRECTORIES - If the sources in your project are distributed over multiple directories - then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy - in the documentation. - -</dl> - -\section messages_input Options related to warning and progress messages -\anchor cfg_quiet -<dl> - -<dt>\c QUIET <dd> - \addindex QUIET - The \c QUIET tag can be used to turn on/off the messages that are generated - to standard output by doxygen. Possible values are \c YES and \c NO, - where \c YES implies that the messages are off. - If left blank \c NO is used. - -\anchor cfg_warnings -<dt>\c WARNINGS <dd> - \addindex WARNINGS - The \c WARNINGS tag can be used to turn on/off the warning messages that are - generated to standard error by doxygen. Possible values are \c YES and \c NO, - where \c YES implies that the warnings are on. If left blank \c NO is used. - - \b Tip: Turn warnings on while writing the documentation. - -\anchor cfg_warn_if_undocumented -<dt>\c WARN_IF_UNDOCUMENTED <dd> - \addindex WARN_IF_UNDOCUMENTED - If \c WARN_IF_UNDOCUMENTED is set to \c YES, then doxygen will generate warnings - for undocumented members. If \c EXTRACT_ALL is set to \c YES then this flag will - automatically be disabled. - -\anchor cfg_warn_if_doc_error -<dt>\c WARN_IF_DOC_ERROR <dd> - \addindex WARN_IF_DOC_ERROR - If \c WARN_IF_DOC_ERROR is set to \c YES, doxygen will generate warnings for - potential errors in the documentation, such as not documenting some - parameters in a documented function, or documenting parameters that - don't exist or using markup commands wrongly. - -\anchor cfg_warn_no_paramdoc -<dt>\c WARN_NO_PARAMDOC <dd> - \addindex WARN_NO_PARAMDOC - This \c WARN_NO_PARAMDOC option can be abled to get warnings for - functions that are documented, but have no documentation for their parameters - or return value. If set to \c NO (the default) doxygen will only warn about - wrong or incomplete parameter documentation, but not about the absence of - documentation. - -\anchor cfg_warn_format -<dt>\c WARN_FORMAT <dd> - \addindex WARN_FORMAT - The \c WARN_FORMAT tag determines the format of the warning messages that - doxygen can produce. The string should contain the <code>\$file</code>, - <code>\$line</code>, and <code>\$text</code> - tags, which will be replaced by the file and line number from which the - warning originated and the warning text. - -\anchor cfg_warn_logfile -<dt>\c WARN_LOGFILE <dd> - \addindex WARN_LOGFILE - The \c WARN_LOGFILE tag can be used to specify a file to which warning - and error messages should be written. If left blank the output is written - to stderr. - -</dl> - -\section config_input Input related options -\anchor cfg_input -<dl> - -<dt>\c INPUT <dd> - \addindex INPUT - The \c INPUT tag is used to specify the files and/or directories that contain - documented source files. You may enter file names like - \c myfile.cpp or directories like \c /usr/src/myproject. - Separate the files or directories with spaces.<br> - - \b Note: - If this tag is empty the current directory is searched. - -\anchor cfg_file_patterns -<dt>\c FILE_PATTERNS <dd> - \addindex FILE_PATTERNS - If the value of the \c INPUT tag contains directories, you can use the - \c FILE_PATTERNS tag to specify one or more wildcard patterns - (like \c *.cpp and \c *.h ) to filter out the source-files - in the directories. If left blank the following patterns are tested: - <code> - *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp - *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm - </code> - -\anchor cfg_file_version_filter -<dt>\c FILE_VERSION_FILTER <dd> - \addindex FILE_VERSION_FILTER - The \c FILE_VERSION_FILTER tag can be used to specify a program or script that - doxygen should invoke to get the current version for each file (typically from the - version control system). Doxygen will invoke the program by executing (via - popen()) the command <code>command input-file</code>, where \c command is - the value of the \c FILE_VERSION_FILTER tag, and \c input-file is the name - of an input file provided by doxygen. - Whatever the program writes to standard output is used as the file version. - -Example of using a shell script as a filter for Unix: -\verbatim - FILE_VERSION_FILTER = "/bin/sh versionfilter.sh" -\endverbatim - -Example shell script for CVS: -\verbatim -#!/bin/sh -cvs status $1 | sed -n 's/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p' -\endverbatim - -Example shell script for Subversion: -\verbatim -#!/bin/sh -svn stat -v $1 | sed -n 's/^[ A-Z?\*|!]\{1,15\}/r/;s/ \{1,15\}/\/r/;s/ .*//p' -\endverbatim - -Example filter for ClearCase: -\verbatim -FILE_VERSION_INFO = "cleartool desc -fmt \%Vn" -\endverbatim - -\anchor cfg_recursive -<dt>\c RECURSIVE <dd> - \addindex RECURSIVE - The \c RECURSIVE tag can be used to specify whether or not subdirectories - should be searched for input files as well. Possible values are \c YES - and \c NO. If left blank \c NO is used. - -\anchor cfg_exclude -<dt>\c EXCLUDE <dd> - \addindex EXCLUDE - The \c EXCLUDE tag can be used to specify files and/or directories that should - excluded from the \c INPUT source files. This way you can easily exclude a - subdirectory from a directory tree whose root is specified with the \c INPUT tag. - -\anchor cfg_exclude_symlinks -<dt>\c EXCLUDE_SYMLINKS <dd> - \addindex EXCLUDE_SYMLINKS - The \c EXCLUDE_SYMLINKS tag can be used select whether or not files or directories - that are symbolic links (a Unix filesystem feature) are excluded from the input. - -\anchor cfg_exclude_patterns -<dt>\c EXCLUDE_PATTERNS <dd> - \addindex EXCLUDE_PATTERNS - If the value of the \c INPUT tag contains directories, you can use the - \c EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude - certain files from those directories. - - Note that the wildcards are matched against the file with absolute path, - so to exclude all test directories use the pattern - <code>*</code><code>/test/</code><code>*</code> - -\anchor cfg_example_path -<dt>\c EXAMPLE_PATH <dd> - \addindex EXAMPLE_PATH - The \c EXAMPLE_PATH tag can be used to specify one or more files or - directories that contain example code fragments that are included (see - the \\include command in section \ref cmdinclude "\\include"). - -\anchor cfg_example_recursive -<dt>\c EXAMPLE_RECURSIVE <dd> - \addindex EXAMPLE_RECURSIVE - If the \c EXAMPLE_RECURSIVE tag is set to \c YES then subdirectories will be - searched for input files to be used with the \\include or \\dontinclude - commands irrespective of the value of the \c RECURSIVE tag. - Possible values are \c YES and \c NO. If left blank \c NO is used. - -\anchor cfg_example_patterns -<dt>\c EXAMPLE_PATTERNS <dd> - \addindex EXAMPLE_PATTERNS - If the value of the \c EXAMPLE_PATH tag contains directories, you can use the - \c EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp - and *.h) to filter out the source-files in the directories. If left - blank all files are included. - -\anchor cfg_image_path -<dt>\c IMAGE_PATH <dd> - \addindex IMAGE_PATH - The \c IMAGE_PATH tag can be used to specify one or more files or - directories that contain images that are to be included in the - documentation (see the \ref cmdimage "\\image" command). - -\anchor cfg_input_filter -<dt>\c INPUT_FILTER <dd> - \addindex INPUT_FILTER - The \c INPUT_FILTER tag can be used to specify a program that doxygen should - invoke to filter for each input file. Doxygen will invoke the filter program - by executing (via popen()) the command: -\verbatim <filter> <input-file> -\endverbatim - - where \<filter\> - is the value of the \c INPUT_FILTER tag, and \<input-file\> is the name of an - input file. Doxygen will then use the output that the filter program writes - to standard output. - -\anchor cfg_filter_patterns -<dt>\c FILTER_PATTERNS <dd> - \addindex FILTER_PATTERNS - The \c FILTER_PATTERNS tag can be used to specify filters on a per file pattern - basis. Doxygen will compare the file name with each pattern and apply the - filter if there is a match. The filters are a list of the form: - pattern=filter (like <code>*.cpp=my_cpp_filter</code>). See \c INPUT_FILTER for further - info on how filters are used. If \c FILTER_PATTERNS is empty, \c INPUT_FILTER - is applied to all files. - -\anchor cfg_filter_source_files -<dt>\c FILTER_SOURCE_FILES <dd> - \addindex FILTER_SOURCE_FILES - If the \c FILTER_SOURCE_FILES tag is set to \c YES, the input filter (if set using - \ref cfg_input_filter "INPUT_FILTER" ) will also be used to filter the input - files that are used for producing the source files to browse - (i.e. when SOURCE_BROWSER is set to YES). - -</dl> - -\section sourcebrowser_index Source browsing related options -\anchor cfg_source_browser -<dl> - -<dt>\c SOURCE_BROWSER <dd> - \addindex SOURCE_BROWSER - If the \c SOURCE_BROWSER tag is set to \c YES then a list of source files will - be generated. Documented entities will be cross-referenced with these sources. - -\anchor cfg_inline_sources -<dt>\c INLINE_SOURCES <dd> - \addindex INLINE_SOURCES - Setting the \c INLINE_SOURCES tag to \c YES will include the body - of functions, classes and enums directly into the documentation. - -\anchor cfg_strip_code_comments -<dt>\c STRIP_CODE_COMMENTS <dd> - \addindex STRIP_CODE_COMMENTS - Setting the \c STRIP_CODE_COMMENTS tag to \c YES (the default) will instruct - doxygen to hide any special comment blocks from generated source code - fragments. Normal C and C++ comments will always remain visible. - -\anchor cfg_referenced_by_relation -<dt>\c REFERENCED_BY_RELATION <dd> - \addindex REFERENCED_BY_RELATION - If the \c REFERENCED_BY_RELATION tag is set to \c YES (the default) - then for each documented function all documented - functions referencing it will be listed. - -\anchor cfg_references_relation -<dt>\c REFERENCES_RELATION <dd> - \addindex REFERENCES_RELATION - If the \c REFERENCES_RELATION tag is set to \c YES (the default) - then for each documented function all documented entities - called/used by that function will be listed. - -\anchor cfg_verbatim_headers -<dt>\c VERBATIM_HEADERS <dd> - \addindex VERBATIM_HEADERS - If the \c VERBATIM_HEADERS tag is set the \c YES (the default) then doxygen - will generate a verbatim copy of the header file for each class for - which an include is specified. Set to NO to disable this. - \sa Section \ref cmdclass "\\class". - -\anchor cfg_use_htags -<dt>\c USE_HTAGS <dd> - \addindex USE_HTAGS - If the \c USE_HTAGS tag is set to \c YES then the references to source code - will point to the HTML generated by the htags(1) tool instead of doxygen - built-in source browser. The htags tool is part of GNU's global source - tagging system (see http://www.gnu.org/software/global/global.html). - The use it do the following: - - -# Install the latest version of global (i.e. 4.8.6 or better) - -# Enable SOURCE_BROWSER and USE_HTAGS in the config file - -# Make sure the INPUT points to the root of the source tree - -# Run doxygen as normal - - Doxygen will invoke htags (and that will in turn invoke gtags), so these tools - must be available from the command line (i.e. in the search path). - - The result: instead of the source browser generated by doxygen, the links to - source code will now point to the output of htags. - -</dl> - -\section alphabetical_index Alphabetical index options -\anchor cfg_alphabetical_index -<dl> - -<dt>\c ALPHABETICAL_INDEX <dd> - \addindex ALPHABETICAL_INDEX - If the \c ALPHABETICAL_INDEX tag is set to \c YES, an alphabetical index - of all compounds will be generated. Enable this if the project contains - a lot of classes, structs, unions or interfaces. - -\anchor cfg_cols_in_alpha_index -<dt>\c COLS_IN_ALPHA_INDEX <dd> - \addindex COLS_IN_ALPHA_INDEX - If the alphabetical index is enabled - (see \c ALPHABETICAL_INDEX) then the \c COLS_IN_ALPHA_INDEX tag can be - used to specify the number of columns in which this list will be split (can be a number in the range [1..20]) - -\anchor cfg_ignore_prefix -<dt>\c IGNORE_PREFIX <dd> - \addindex IGNORE_PREFIX - In case all classes in a project start with a common prefix, all classes will - be put under the same header in the alphabetical index. - The \c IGNORE_PREFIX tag can be used to specify a prefix - (or a list of prefixes) that should be ignored while generating the index - headers. - -</dl> -\section html_output HTML related options -\anchor cfg_generate_html -<dl> - -<dt>\c GENERATE_HTML <dd> - \addindex GENERATE_HTML - If the \c GENERATE_HTML tag is set to \c YES (the default) doxygen will - generate HTML output - -\anchor cfg_html_output -<dt>\c HTML_OUTPUT <dd> - \addindex HTML_OUTPUT - The \c HTML_OUTPUT tag is used to specify where the HTML docs will be put. - If a relative path is entered the value of \c OUTPUT_DIRECTORY will be - put in front of it. If left blank `html' will be used as the default path. - -\anchor cfg_html_file_extension -<dt>\c HTML_FILE_EXTENSION <dd> - \addindex HTML_FILE_EXTENSION - The \c HTML_FILE_EXTENSION tag can be used to specify the file extension for - each generated HTML page (for example: .htm, .php, .asp). If it is left blank - doxygen will generate files with .html extension. - -\anchor cfg_html_header -<dt>\c HTML_HEADER <dd> - \addindex HTML_HEADER - The \c HTML_HEADER tag can be used to specify a user-defined HTML - header file for each generated HTML page. To get valid HTML the header file - should contain at least a \c \<HTML\> and a \c \<BODY\> tag, but it is - good idea to include the style sheet that is generated by doxygen as well. - Minimal example: -\verbatim - <HTML> - <HEAD> - <TITLE>My title - - - -\endverbatim - If the tag is left blank doxygen will generate a - standard header. - - The following commands have a special meaning inside the header: - \$title, \$datetime, \$date, - \$doxygenversion, \$projectname, and - \$projectnumber. - Doxygen will replace them by respectively - the title of the page, the current date and time, only the current date, - the version number of doxygen, the project name (see \c PROJECT_NAME), or the - project number (see \c PROJECT_NUMBER). - - If \c CREATE_SUBDIRS is enabled, the command \$relpath\$ can be - used to produce a relative path to the root of the HTML output directory, - e.g. use \$relpath\$doxygen.css, to refer to the standard style sheet. - - See also section \ref doxygen_usage for information on how to generate - the default header that doxygen normally uses. - -\anchor cfg_html_footer -
\c HTML_FOOTER
- \addindex HTML_FOOTER - The \c HTML_FOOTER tag can be used to specify a user-defined HTML footer for - each generated HTML page. To get valid HTML the footer file should contain - at least a \c \ and a \c \ tag. A minimal example: -\verbatim - - -\endverbatim - If the tag is left blank doxygen will generate a standard footer. - - The following commands have a special meaning inside the footer: - \$title, \$datetime, \$date, - \$doxygenversion, \$projectname, - \$projectnumber. - Doxygen will replace them by respectively - the title of the page, the current date and time, only the current date, - the version number of doxygen, the project name (see \c PROJECT_NAME), or the - project number (see \c PROJECT_NUMBER). - - See also section \ref doxygen_usage for information on how to generate - the default footer that doxygen normally uses. - -\anchor cfg_html_stylesheet -
\c HTML_STYLESHEET
- \addindex HTML_STYLESHEET - The \c HTML_STYLESHEET tag can be used to specify a user-defined cascading - style sheet that is used by each HTML page. It can be used to - fine-tune the look of the HTML output. If the tag is left blank doxygen - will generate a default style sheet. - - See also section \ref doxygen_usage for information on how to generate - the style sheet that doxygen normally uses. - -\anchor cfg_html_align_members -
\c HTML_ALIGN_MEMBERS
- \addindex HTML_ALIGN_MEMBERS - If the \c HTML_ALIGN_MEMBERS tag is set to \c YES, the members of classes, - files or namespaces will be aligned in HTML using tables. If set to - \c NO a bullet list will be used. - - Note: - Setting this tag to \c NO will become obsolete in the future, since I only - intent to support and test the aligned representation. - -\anchor cfg_generate_htmlhelp -
\c GENERATE_HTMLHELP
- \addindex GENERATE_HTMLHELP - If the \c GENERATE_HTMLHELP tag is set to \c YES then - doxygen generates three additional HTML index files: - \c index.hhp, \c index.hhc, and \c index.hhk. The \c index.hhp is a - project file that can be read by - - Microsoft's HTML Help Workshop - on Windows. - - The HTML Help Workshop contains a compiler that can convert all HTML output - generated by doxygen into a single compressed HTML file (.chm). Compressed - HTML files are now used as the Windows 98 help format, and will replace - the old Windows help format (.hlp) on all Windows platforms in the future. - Compressed HTML files also contain an index, a table of contents, - and you can search for words in the documentation. - The HTML workshop also contains a viewer for compressed HTML files. - -\anchor cfg_chm_file -
\c CHM_FILE
- \addindex CHM_FILE - If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c CHM_FILE tag can - be used to specify the file name of the resulting .chm file. You - can add a path in front of the file if the result should not be - written to the html output directory. - -\anchor cfg_hhc_location -
\c HHC_LOCATION
- \addindex HHC_LOCATION - If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c HHC_LOCATION tag can - be used to specify the location (absolute path including file name) of - the HTML help compiler (hhc.exe). If non empty doxygen will try to run - the HTML help compiler on the generated index.hhp. - -\anchor cfg_generate_chi -
\c GENERATE_CHI
- \addindex GENERATE_CHI - If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c GENERATE_CHI flag - controls if a separate .chi index file is generated (YES) or that - it should be included in the master .chm file (NO). - -\anchor cfg_binary_toc -
\c BINARY_TOC
- \addindex BINARY_TOC - If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c BINARY_TOC flag - controls whether a binary table of contents is generated (YES) or a - normal table of contents (NO) in the .chm file. - -\anchor cfg_toc_expand -
\c TOC_EXPAND
- \addindex TOC_EXPAND - The \c TOC_EXPAND flag can be set to YES to add extra items for - group members to the table of contents of the HTML help documentation - and to the tree view. - -\anchor cfg_disable_index -
\c DISABLE_INDEX
- \addindex DISABLE_INDEX - If you want full control over the layout of the generated HTML pages it - might be necessary to disable the index and replace it with your own. - The \c DISABLE_INDEX tag can be used to turn on/off the condensed index at - top of each page. A value of NO (the default) enables the index and the - value YES disables it. - -\anchor cfg_enum_values_per_line -
\c ENUM_VALUES_PER_LINE
- \addindex ENUM_VALUES_PER_LINE - This tag can be used to set the number of enum values (range [1..20]) - that doxygen will group on one line in the generated HTML documentation. - -\anchor cfg_generate_treeview -
\c GENERATE_TREEVIEW
- \addindex GENERATE_TREEVIEW - If the \c GENERATE_TREEVIEW tag is set to YES, a side panel will be - generated containing a tree-like index structure (just like the one that - is generated for HTML Help). For this to work a browser that supports - JavaScript and frames is required (for instance Mozilla 1.0+, Netscape 6.0+ - or Internet explorer 5.0+ or Konqueror). - -\anchor cfg_treeview_width -
\c TREEVIEW_WIDTH
- \addindex TREEVIEW_WIDTH - If the treeview is enabled (see \c GENERATE_TREEVIEW) then this tag can be - used to set the initial width (in pixels) of the frame in which the tree - is shown. - - -\section latex_output LaTeX related options -\anchor cfg_generate_latex -
- -
\c GENERATE_LATEX
- \addindex GENERATE_LATEX - If the \c GENERATE_LATEX tag is set to \c YES (the default) doxygen will - generate \f$\mbox{\LaTeX}\f$ output. - -\anchor cfg_latex_output -
\c LATEX_OUTPUT
- \addindex LATEX_OUTPUT - The \c LATEX_OUTPUT tag is used to specify where the \f$\mbox{\LaTeX}\f$ - docs will be put. - If a relative path is entered the value of \c OUTPUT_DIRECTORY will be - put in front of it. If left blank `latex' will be used as the default path. - -\anchor cfg_latex_cmd_name -
\c LATEX_CMD_NAME
- \addindex LATEX_CMD_NAME - The \c LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. - If left blank `latex' will be used as the default command name. - -\anchor cfg_makeindex_cmd_name -
\c MAKEINDEX_CMD_NAME
- \addindex MAKEINDEX_CMD_NAME - The MAKEINDEX_CMD_NAME tag can be used to specify the command name to - generate index for LaTeX. If left blank `makeindex' will be used as the - default command name. - -\anchor cfg_compact_latex -
\c COMPACT_LATEX
- \addindex COMPACT_LATEX - If the \c COMPACT_LATEX tag is set to \c YES doxygen generates more compact - \f$\mbox{\LaTeX}\f$ documents. This may be useful for small projects and may help to - save some trees in general. - -\anchor cfg_paper_type -
\c PAPER_TYPE
- \addindex PAPER_TYPE - The \c PAPER_TYPE tag can be used to set the paper type that is used - by the printer. Possible values are: -
    -
  • a4 (210 x 297 mm). -
  • a4wide (same as a4, but including the a4wide package). -
  • letter (8.5 x 11 inches). -
  • legal (8.5 x 14 inches). -
  • executive (7.25 x 10.5 inches) -
- If left blank a4wide will be used. - -\anchor cfg_extra_packages -
\c EXTRA_PACKAGES
- \addindex EXTRA_PACKAGES - The \c EXTRA_PACKAGES tag can be used to specify one or more \f$\mbox{\LaTeX}\f$ - package names that should be included in the \f$\mbox{\LaTeX}\f$ output. - To get the times font for instance you can specify -\verbatim -EXTRA_PACKAGES = times -\endverbatim - If left blank no extra packages will be included. - -\anchor cfg_latex_header -
\c LATEX_HEADER
- \addindex LATEX_HEADER - The \c LATEX_HEADER tag can be used to specify a personal \f$\mbox{\LaTeX}\f$ - header for the generated \f$\mbox{\LaTeX}\f$ document. - The header should contain everything until the first chapter. - - If it is left blank doxygen will generate a - standard header. See section \ref doxygen_usage for information on how to - let doxygen write the default header to a separate file. - - \par Note: - Only use a user-defined header if you know what you are doing! - - The following commands have a special meaning inside the header: - \$title, \$datetime, \$date, - \$doxygenversion, \$projectname, - \$projectnumber. - Doxygen will replace them by respectively - the title of the page, the current date and time, only the current date, - the version number of doxygen, the project name (see \c PROJECT_NAME), or the - project number (see \c PROJECT_NUMBER). - -\anchor cfg_pdf_hyperlinks -
\c PDF_HYPERLINKS
- \addindex PDF_HYPERLINKS - - If the \c PDF_HYPERLINKS tag is set to \c YES, the \f$\mbox{\LaTeX}\f$ that - is generated is prepared for conversion to PDF (using ps2pdf or pdflatex). - The PDF file will - contain links (just like the HTML output) instead of page references. - This makes the output suitable for online browsing using a PDF viewer. - -\anchor cfg_use_pdflatex -
\c USE_PDFLATEX
- \addindex LATEX_PDFLATEX - - If the \c LATEX_PDFLATEX tag is set to \c YES, doxygen will use - pdflatex to generate the PDF file directly from the \f$\mbox{\LaTeX}\f$ - files. - -\anchor cfg_latex_batchmode -
\c LATEX_BATCHMODE
- \addindex LATEX_BATCHMODE - - If the \c LATEX_BATCHMODE tag is set to \c YES, doxygen will add the \\batchmode. - command to the generated \f$\mbox{\LaTeX}\f$ files. This will - instruct \f$\mbox{\LaTeX}\f$ to keep running if errors occur, instead of - asking the user for help. This option is also used when generating formulas - in HTML. - -\anchor cfg_latex_hide_indices -
\c LATEX_HIDE_INDICES
- \addindex LATEX_HIDE_INDICES - - If \c LATEX_HIDE_INDICES is set to \c YES then doxygen will not - include the index chapters (such as File Index, Compound Index, etc.) - in the output. - -
-\section rtf_output RTF related options -\anchor cfg_generate_rtf -
- -
\c GENERATE_RTF
- \addindex GENERATE_RTF - If the \c GENERATE_RTF tag is set to \c YES doxygen will generate RTF output. - The RTF output is optimized for Word 97 and may not look too pretty with - other readers/editors. - -\anchor cfg_rtf_output -
\c RTF_OUTPUT
- \addindex RTF_OUTPUT - The \c RTF_OUTPUT tag is used to specify where the RTF docs will be put. - If a relative path is entered the value of \c OUTPUT_DIRECTORY will be - put in front of it. If left blank \c rtf will be used as the default path. - -\anchor cfg_compact_rtf -
\c COMPACT_RTF
- \addindex COMPACT_RTF - If the \c COMPACT_RTF tag is set to \c YES doxygen generates more compact - RTF documents. This may be useful for small projects and may help to - save some trees in general. - -\anchor cfg_rtf_hyperlinks -
\c RTF_HYPERLINKS
- \addindex RTF_HYPERLINKS - If the \c RTF_HYPERLINKS tag is set to \c YES, the RTF that is generated - will contain hyperlink fields. The RTF file will - contain links (just like the HTML output) instead of page references. - This makes the output suitable for online browsing using Word or some other - Word compatible reader that support those fields. - - \par note: - WordPad (write) and others do not support links. - -\anchor cfg_rtf_stylesheet_file -
\c RTF_STYLESHEET_FILE
- \addindex RTF_STYLESHEET_FILE - Load stylesheet definitions from file. Syntax is similar to doxygen's - config file, i.e. a series of assignments. You only have to provide - replacements, missing definitions are set to their default value. - - See also section \ref doxygen_usage for information on how to generate - the default style sheet that doxygen normally uses. - -\anchor cfg_rtf_extensions_file -
\c RTF_EXTENSIONS_FILE
- Set optional variables used in the generation of an RTF document. - Syntax is similar to doxygen's config file. - A template extensions file can be generated using - doxygen -e rtf extensionFile. - -
- -\section man_output Man page related options -\anchor cfg_generate_man -
- -
\c GENERATE_MAN
- \addindex GENERATE_MAN - If the \c GENERATE_MAN tag is set to \c YES (the default) doxygen will - generate man pages for classes and files. - -\anchor cfg_man_output -
\c MAN_OUTPUT
- \addindex MAN_OUTPUT - The \c MAN_OUTPUT tag is used to specify where the man pages will be put. - If a relative path is entered the value of \c OUTPUT_DIRECTORY will be - put in front of it. If left blank `man' will be used as the default path. - A directory man3 will be created inside the directory specified by - \c MAN_OUTPUT. - -\anchor cfg_man_extension -
\c MAN_EXTENSION
- \addindex MAX_EXTENSION - The \c MAN_EXTENSION tag determines the extension that is added to - the generated man pages (default is the subroutine's section .3) - -\anchor cfg_man_links -
\c MAN_LINKS
- \addindex MAN_LINKS - If the \c MAN_LINKS tag is set to \c YES and doxygen generates man output, - then it will generate one additional man file for each entity documented in - the real man page(s). These additional files only source the real man page, - but without them the man command would be unable to find the correct page. - The default is \c NO. - -
- -\section xml_output XML related options -\anchor cfg_generate_xml -
- -
\c GENERATE_XML
- \addindex GENERATE_XML - If the \c GENERATE_XML tag is set to \c YES Doxygen will - generate an XML file that captures the structure of - the code including all documentation. - -\anchor cfg_xml_output -
\c XML_OUTPUT
- \addindex XML_OUTPUT - The \c XML_OUTPUT tag is used to specify where the XML pages will be put. - If a relative path is entered the value of \c OUTPUT_DIRECTORY will be - put in front of it. If left blank \c xml will be used as the default path. - -\anchor cfg_xml_schema -
\c XML_SCHEMA
- \addindex XML_SCHEMA - The \c XML_SCHEMA tag can be used to specify an XML schema, - which can be used by a validating XML parser to check the - syntax of the XML files. - -\anchor cfg_xml_dtd -
\c XML_DTD
- \addindex XML_DTD - The \c XML_DTD tag can be used to specify an XML DTD, - which can be used by a validating XML parser to check the - syntax of the XML files. - -\anchor cfg_xml_programlisting -
\c XML_PROGRAMLISTING
- \addindex XML_PROGRAMLISTING - If the \c XML_PROGRAMLISTING tag is set to \c YES Doxygen will - dump the program listings (including syntax highlighting - and cross-referencing information) to the XML output. Note that - enabling this will significantly increase the size of the XML output. - -
- -\section autogen_output AUTOGEN_DEF related options -\anchor cfg_generate_autogen_def -
- -
\c GENERATE_AUTOGEN_DEF
- \addindex GENERATE_AUTOGEN_DEF - If the \c GENERATE_AUTOGEN_DEF tag is set to \c YES Doxygen will - generate an AutoGen Definitions (see http://autogen.sf.net) file - that captures the structure of the code including all - documentation. Note that this feature is still experimental - and incomplete at the moment. - -
- -\section perlmod_output PERLMOD related options -\anchor cfg_generate_perlmod -
- -
\c GENERATE_PERLMOD
- \addindex GENERATE_PERLMOD - If the \c GENERATE_PERLMOD tag is set to \c YES Doxygen will - generate a Perl module file that captures the structure of - the code including all documentation. Note that this - feature is still experimental and incomplete at the - moment. - -\anchor cfg_perlmod_latex -
\c PERLMOD_LATEX
- \addindex PERLMOD_LATEX - If the \c PERLMOD_LATEX tag is set to \c YES Doxygen will generate - the necessary Makefile rules, Perl scripts and LaTeX code to be able - to generate PDF and DVI output from the Perl module output. - -\anchor cfg_perlmod_pretty -
\c PERLMOD_PRETTY
- \addindex PERLMOD_PRETTY - If the \c PERLMOD_PRETTY tag is set to \c YES the Perl module output will be - nicely formatted so it can be parsed by a human reader. This is useful - if you want to understand what is going on. On the other hand, if this - tag is set to \c NO the size of the Perl module output will be much smaller - and Perl will parse it just the same. - -\anchor cfg_perlmod_makevar_prefix -
\c PERLMOD_MAKEVAR_PREFIX
- \addindex PERLMOD_MAKEVAR_PREFIX - The names of the make variables in the generated doxyrules.make file - are prefixed with the string contained in \c PERLMOD_MAKEVAR_PREFIX. - This is useful so different doxyrules.make files included by the same - Makefile don't overwrite each other's variables. - -
- -\section config_prepro Preprocessor related options -\anchor cfg_enable_preprocessing -
- -
\c ENABLE_PREPROCESSING
- \addindex ENABLE_PREPROCESSING - If the \c ENABLE_PREPROCESSING tag is set to \c YES (the default) doxygen will - evaluate all C-preprocessor directives found in the sources and include - files. - -\anchor cfg_macro_expansion -
\c MACRO_EXPANSION
- \addindex MACRO_EXPANSION - If the \c MACRO_EXPANSION tag is set to \c YES doxygen will expand all macro - names in the source code. If set to \c NO (the default) only conditional - compilation will be performed. Macro expansion can be done in a controlled - way by setting \c EXPAND_ONLY_PREDEF to \c YES. - -\anchor cfg_expand_only_predef -
\c EXPAND_ONLY_PREDEF
- \addindex EXPAND_ONLY_PREDEF - If the \c EXPAND_ONLY_PREDEF and \c MACRO_EXPANSION tags are both set to YES - then the macro expansion is limited to the macros specified with the - \c PREDEFINED and \c EXPAND_AS_DEFINED tags. - -\anchor cfg_search_includes -
\c SEARCH_INCLUDES
- \addindex SEARCH_INCLUDES - If the \c SEARCH_INCLUDES tag is set to \c YES (the default) the includes files - in the \c INCLUDE_PATH (see below) will be searched if a \#include is found. - -\anchor cfg_include_path -
\c INCLUDE_PATH
- \addindex INCLUDE_PATH - The \c INCLUDE_PATH tag can be used to specify one or more directories that - contain include files that are not input files but should be processed by - the preprocessor. - -\anchor cfg_predefined -
\c PREDEFINED
- \addindex PREDEFINED - The \c PREDEFINED tag can be used to specify one or more macro names that - are defined before the preprocessor is started (similar to the -D option of - gcc). The argument of the tag is a list of macros of the form: - name or name=definition (no spaces). - If the definition and the "=" are omitted, "=1" is assumed. To prevent - a macro definition from being undefined via \#undef or recursively expanded - use the := operator instead of the = operator. - -\anchor cfg_expand_as_defined -
\c EXPAND_AS_DEFINED
- \addindex EXPAND_AS_DEFINED - If the \c MACRO_EXPANSION and \c EXPAND_ONLY_PREDEF tags are set to \c YES then - this tag can be used to specify a list of macro names that should be expanded. - The macro definition that is found in the sources will be used. - Use the \c PREDEFINED tag if you want to use a different macro definition. - -\anchor cfg_skip_function_macros -
\c SKIP_FUNCTION_MACROS
- \addindex SKIP_FUNCTION_MACROS - If the \c SKIP_FUNCTION_MACROS tag is set to \c YES (the default) then - doxygen's preprocessor will remove all function-like macros that are alone - on a line, have an all uppercase name, and do not end with a semicolon. - Such function macros are typically - used for boiler-plate code, and will confuse the parser if not removed. - -
-\section config_extref External reference options -\anchor cfg_tagfiles -
- -
\c TAGFILES
- \addindex TAGFILES - The \c TAGFILES tag can be used to specify one or more tagfiles. - - See section \ref doxytag_usage for more information about the usage of - tag files. - - Optionally an initial location of the external documentation - can be added for each tagfile. - The format of a tag file without this location is as follows: -
-TAGFILES = file1 file2 ... 
- Adding location for the tag files is done as follows: -
-TAGFILES = file1=loc1 "file2 = loc2" ... 
- where \c loc1 and \c loc2 can be relative or absolute paths or URLs, - If a location is present for each tag, the installdox tool (see - section \ref installdox_usage for more information) does not - have to be run to correct the links. - - \par Note: - Each tag file must have a unique name - (where the name does \e not include the path) - If a tag file is not located in the directory in which doxygen - is run, you must also specify the path to the tagfile here. - -\anchor cfg_generate_tagfile -
\c GENERATE_TAGFILE
- \addindex GENERATE_TAGFILE - When a file name is specified after \c GENERATE_TAGFILE, doxygen will create - a tag file that is based on the input files it reads. - See section \ref doxytag_usage for more information about the usage of - tag files. - -\anchor cfg_allexternals -
\c ALLEXTERNALS
- \addindex ALLEXTERNALS - If the \c ALLEXTERNALS tag is set to \c YES all external class will be listed - in the class index. If set to \c NO only the inherited external classes - will be listed. - -\anchor cfg_external_groups -
\c EXTERNAL_GROUPS
- \addindex EXTERNAL_GROUPS - If the \c EXTERNAL_GROUPS tag is set to \c YES all external groups will be listed - in the modules index. If set to \c NO, only the current project's groups will - be listed. - -\anchor cfg_perl_path -
\c PERL_PATH
- \addindex PERL_PATH - The \c PERL_PATH should be the absolute path and name of the perl script - interpreter (i.e. the result of `which perl'). - -
-\section config_dot Dot options -\anchor cfg_class_diagrams -
- -
\c CLASS_DIAGRAMS
- \addindex CLASS_DIAGRAMS - If the \c CLASS_DIAGRAMS tag is set to \c YES (the default) doxygen will - generate a class diagram (in HTML and \f$\mbox{\LaTeX}\f$) for classes with base or - super classes. Setting the tag to \c NO turns the diagrams off. - Note that this option is superseded by the HAVE_DOT option below. - This is only a fallback. It is recommended to install and use dot, - since it yields more powerful graphs. - -\anchor cfg_have_dot -
\c HAVE_DOT
- \addindex HAVE_DOT - If you set the \c HAVE_DOT tag to \c YES then doxygen will assume the dot tool is - available from the path. This tool is part of - Graphviz, a graph - visualization toolkit from AT\&T and Lucent Bell Labs. The other options in - this section have no effect if this option is set to \c NO (the default) - -\anchor cfg_class_graph -
\c CLASS_GRAPH
- \addindex CLASS_GRAPH - If the \c CLASS_GRAPH and \c HAVE_DOT tags are set to \c YES then doxygen - will generate a graph for each documented class showing the direct and - indirect inheritance relations. Setting this tag to \c YES will force the - the \c CLASS_DIAGRAMS tag to NO. - -\anchor cfg_collaboration_graph -
\c COLLABORATION_GRAPH
- \addindex COLLABORATION_GRAPH - If the \c COLLABORATION_GRAPH and \c HAVE_DOT tags are set to \c YES then doxygen - will generate a graph for each documented class showing the direct and - indirect implementation dependencies (inheritance, containment, and - class references variables) of the class with other documented classes. - -\anchor cfg_group_graphs -
\c GROUP_GRAPHS
- \addindex GROUP_GRAPHS - If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen - will generate a graph for groups, showing the direct groups dependencies. - -\anchor cfg_uml_look -
\c UML_LOOK
- \addindex UML_LOOK - If the UML_LOOK tag is set to YES doxygen will generate inheritance and - collaboration diagrams in a style similar to the OMG's Unified Modeling - Language. - -\anchor cfg_template_relations -
\c TEMPLATE_RELATIONS
- \addindex TEMPLATE_RELATIONS - If the \c TEMPLATE_RELATIONS and \c HAVE_DOT tags are set to \c YES then - doxygen will show the relations between templates and their instances. - -\anchor cfg_hide_undoc_relations -
\c HIDE_UNDOC_RELATIONS
- \addindex HIDE_UNDOC_RELATIONS - If set to YES, the inheritance and collaboration graphs will hide - inheritance and usage relations if the target is undocumented - or is not a class. - -\anchor cfg_include_graph -
\c INCLUDE_GRAPH
- \addindex INCLUDE_GRAPH - If the \c ENABLE_PREPROCESSING, \c SEARCH_INCLUDES, \c INCLUDE_GRAPH, and \c HAVE_DOT - tags are set to \c YES then doxygen will generate a graph for each documented file - showing the direct and indirect include dependencies of the file with other - documented files. - -\anchor cfg_included_by_graph -
\c INCLUDED_BY_GRAPH
- \addindex INCLUDED_BY_GRAPH - If the \c ENABLE_PREPROCESSING, \c SEARCH_INCLUDES, \c INCLUDED_BY_GRAPH, and - \c HAVE_DOT tags are set to \c YES then doxygen will generate a graph for each - documented header file showing the documented files that directly or indirectly - include this file. - -\anchor cfg_call_graph -
\c CALL_GRAPH
- \addindex CALL_GRAPH - If the \c CALL_GRAPH and \c HAVE_DOT tags are set to \c YES then doxygen will - generate a call dependency graph for every global function or class method. - Note that enabling this option will significantly increase the time of a run. - So in most cases it will be better to enable call graphs for selected - functions only using the \\callgraph command. - -\anchor cfg_graphical_hierarchy -
\c GRAPHICAL_HIERARCHY
- \addindex GRAPHICAL_HIERARCHY - If the \c GRAPHICAL_HIERARCHY and \c HAVE_DOT tags are set to \c YES then - doxygen will graphical hierarchy of all classes instead of a textual one. - -\anchor cfg_directory_graph -
\c DIRECTORY_GRAPH
- \addindex DIRECTORY_GRAPH - If the \c DIRECTORY_GRAPH, \c SHOW_DIRECTORIES and \c HAVE_DOT options are set - to \c YES then doxygen will show the dependencies a directory has on other directories - in a graphical way. The dependency relations are determined by the \#include - relations between the files in the directories. - -\anchor cfg_dot_image_format -
\c DOT_IMAGE_FORMAT
- \addindex DOT_IMAGE_FORMAT - The \c DOT_IMAGE_FORMAT tag can be used to set the image format of the images - generated by dot. Possible values are gif, jpg, and png. - If left blank png will be used. - -\anchor cfg_dot_path -
\c DOT_PATH
- \addindex DOT_PATH - This tag can be used to specify the path where the dot tool can be found. - If left blank, it is assumed the dot tool can be found on the path. - -\anchor cfg_dotfile_dirs -
\c DOTFILE_DIRS
- \addindex DOTFILE_DIRS - This tag can be used to specify one or more directories that - contain dot files that are included in the documentation (see the - \\dotfile command). - -\anchor cfg_max_dot_graph_height -
\c MAX_DOT_GRAPH_HEIGHT
- \addindex MAX_DOT_GRAPH_HEIGHT - The \c MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height - (in pixels) of the graphs generated by dot. If a graph becomes larger than - this value, doxygen will try to truncate the graph, so that it fits within - the specified constraint. Beware that most browsers cannot cope with very - large images. - -\anchor cfg_max_dot_graph_depth -
\c MAX_DOT_GRAPH_DEPTH
-\addindex MAX_DOT_GRAPH_DEPTH -The \c MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -graphs generated by dot. A depth value of 3 means that only nodes reachable -from the root by following a path via at most 3 edges will be shown. Nodes that -lay further from the root node will be omitted. Note that setting this option to -1 or 2 may greatly reduce the computation time needed for large code bases. Also -note that a graph may be further truncated if the graph's image dimensions are -not sufficient to fit the graph (see -\ref cfg_max_dot_graph_width "MAX_DOT_GRAPH_WIDTH" and -\ref cfg_max_dot_graph_height "MAX_DOT_GRAPH_HEIGHT"). -If 0 is used for the depth value (the default), the graph is -not depth-constraint. - -\anchor cfg_max_dot_graph_width -
\c MAX_DOT_GRAPH_WIDTH
- \addindex MAX_DOT_GRAPH_WIDTH - The \c MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width - (in pixels) of the graphs generated by dot. If a graph becomes larger than - this value, doxygen will try to truncate the graph, so that it fits within - the specified constraint. Beware that most browsers cannot cope with very - large images. - -\anchor cfg_dot_transparent -
\c DOT_TRANSPARENT
- \addindex DOT_TRANSPARENT - Set the \c DOT_TRANSPARENT tag to \c YES to generate images with a transparent - background. This is disabled by default, which results in a white background. - Warning: Depending on the platform used, enabling this option may lead to badly - anti-aliased labels on the edges of a graph (i.e. they become hard to read). - -\anchor cfg_dot_multi_targets -
\c DOT_MULTI_TARGETS
- \addindex DOT_MULTI_TARGET - Set the \c DOT_MULTI_TARGETS tag to \c YES allow dot to generate multiple output - files in one run (i.e. multiple -o and -T options on the command line). This - makes dot run faster, but since only newer versions of dot (>1.8.10) - support this, this feature is disabled by default. - -\anchor cfg_generate_legend -
\c GENERATE_LEGEND
- \addindex GENERATE_LEGEND - If the \c GENERATE_LEGEND tag is set to \c YES (the default) doxygen will - generate a legend page explaining the meaning of the various boxes and - arrows in the dot generated graphs. - -\anchor cfg_dot_cleanup -
\c DOT_CLEANUP
- \addindex DOT_CLEANUP -If the \c DOT_CLEANUP tag is set to \c YES (the default) doxygen will -remove the intermediate dot files that are used to generate the various graphs. - - -
-\section config_search Search engine options -\anchor cfg_searchengine -
- -
\c SEARCHENGINE
- \addindex SEARCHENGINE - The \c SEARCHENGINE tag specifies whether or not the HTML output should - contain a search facility. Possible values are \c YES and \c NO. - If set to YES, doxygen will produce a search index and a PHP script - to search through the index. For this to work the documentation should - be viewed via a web-server running PHP version 4.1.0 or higher. - (See http://www.php.net/manual/en/installation.php for installation - instructions). - -
-

Examples

- -Suppose you have a simple project consisting of two files: a source file -\c example.cc and a header file \c example.h. -Then a minimal configuration file is as simple as: -\verbatim -INPUT = example.cc example.h -\endverbatim - -Assuming the example makes use of Qt classes and perl is located -in /usr/bin, a more realistic configuration file would be: -\verbatim -PROJECT_NAME = Example -INPUT = example.cc example.h -WARNINGS = YES -TAGFILES = qt.tag -PERL_PATH = /usr/bin/perl -SEARCHENGINE = NO -\endverbatim - -To generate the documentation for the -QdbtTabular package -I have used the following configuration file: -\verbatim -PROJECT_NAME = QdbtTabular -OUTPUT_DIRECTORY = html -WARNINGS = YES -INPUT = examples/examples.doc src -FILE_PATTERNS = *.cc *.h -INCLUDE_PATH = examples -TAGFILES = qt.tag -PERL_PATH = /usr/local/bin/perl -SEARCHENGINE = YES -\endverbatim - -To regenerate the Qt-1.44 documentation from the sources, you could use the -following config file: -\verbatim -PROJECT_NAME = Qt -OUTPUT_DIRECTORY = qt_docs -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -SEARCH_INCLUDES = YES -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = $(QTDIR)/ -PREDEFINED = USE_TEMPLATECLASS Q_EXPORT= \ - QArrayT:=QArray \ - QListT:=QList \ - QDictT:=QDict \ - QQueueT:=QQueue \ - QVectorT:=QVector \ - QPtrDictT:=QPtrDict \ - QIntDictT:=QIntDict \ - QStackT:=QStack \ - QDictIteratorT:=QDictIterator \ - QListIteratorT:=QListIterator \ - QCacheT:=QCache \ - QCacheIteratorT:=QCacheIterator \ - QIntCacheT:=QIntCache \ - QIntCacheIteratorT:=QIntCacheIterator \ - QIntDictIteratorT:=QIntDictIterator \ - QPtrDictIteratorT:=QPtrDictIterator -INPUT = $(QTDIR)/doc \ - $(QTDIR)/src/widgets \ - $(QTDIR)/src/kernel \ - $(QTDIR)/src/dialogs \ - $(QTDIR)/src/tools -FILE_PATTERNS = *.cpp *.h q*.doc -INCLUDE_PATH = $(QTDIR)/include -RECURSIVE = YES -\endverbatim - -For the Qt-2.1 sources I recommend to use the following settings: -\verbatim -PROJECT_NAME = Qt -PROJECT_NUMBER = 2.1 -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -SOURCE_BROWSER = YES -INPUT = $(QTDIR)/src -FILE_PATTERNS = *.cpp *.h q*.doc -RECURSIVE = YES -EXCLUDE_PATTERNS = *codec.cpp moc_* */compat/* */3rdparty/* -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 3 -IGNORE_PREFIX = Q -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -INCLUDE_PATH = $(QTDIR)/include -PREDEFINED = Q_PROPERTY(x)= \ - Q_OVERRIDE(x)= \ - Q_EXPORT= \ - Q_ENUMS(x)= \ - "QT_STATIC_CONST=static const " \ - _WS_X11_ \ - INCLUDE_MENUITEM_DEF -EXPAND_ONLY_PREDEF = YES -EXPAND_AS_DEFINED = Q_OBJECT_FAKE Q_OBJECT ACTIVATE_SIGNAL_WITH_PARAM \ - Q_VARIANT_AS -\endverbatim - -Here doxygen's preprocessor is used to substitute some -macro names that are normally substituted by the C preprocessor, -but without doing full macro expansion. - -*/ - diff --git a/doc/diagrams.doc b/doc/diagrams.doc deleted file mode 100644 index 7b3c46e..0000000 --- a/doc/diagrams.doc +++ /dev/null @@ -1,140 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page diagrams Graphs and diagrams - - Doxygen has built-in support to generate inheritance diagrams for C++ - classes. - - Doxygen can use the "dot" tool from graphviz 1.5 to generate - more advanced diagrams and graphs. Graphviz is an "open-sourced", - cross-platform graph drawing toolkit from AT\&T and Lucent Bell Labs and - can be found at http://www.research.att.com/sw/tools/graphviz/ - - If you have the "dot" tool available in the path, you can set - \ref cfg_have_dot "HAVE_DOT" to \c YES in the configuration file to - let doxygen use it. - - Doxygen uses the "dot" tool to generate the following graphs: -
    -
  • if \ref cfg_graphical_hierarchy "GRAPHICAL_HIERARCHY" is set to \c YES, - a graphical representation of the class hierarchy will be drawn, along - with the textual one. Currently this feature is supported for HTML only.\n - Warning: When you have a very large class hierarchy where many - classes derive from a common base class, the resulting image may become - too big to handle for some browsers. -
  • if \ref cfg_class_graph "CLASS_GRAPH" is set to \c YES, - a graph will be generated for each documented class showing the - direct and indirect inheritance relations. This disables the - generation of the built-in class inheritance diagrams. -
  • if \ref cfg_include_graph "INCLUDE_GRAPH" is set to \c YES, an include - dependency graph is generated for each documented file that includes at - least one other file. This feature is currently supported for HTML and RTF - only. -
  • if \ref cfg_collaboration_graph "COLLABORATION_GRAPH" is set to YES, a - graph is drawn for each documented class and struct that shows: -
      -
    • the inheritance relations with base classes. -
    • the usage relations with other structs and classes (e.g. - class \c A has a member variable \c m_a of type class \c B, then - \c A has an arrow to \c B with \c m_a as label). -
    -
  • if \ref cfg_call_graph "CALL_GRAPH" is set to YES, a - graphical call graph is drawn for each function showing the - functions that the function directly or indirectly calls. -
- - The elements in the class diagrams in HTML and RTF - have the following meaning: -
    -
  • A \b yellow box indicates a class. A box can have a - little marker in the lower right corner to indicate that the class - contains base classes that are hidden. - For the class diagrams the maximum tree width is currently 8 elements. - If a tree is wider some nodes will be hidden. - If the box is filled with a - dashed pattern the inheritance relation is virtual. -
  • A \b white box indicates that the documentation of the class - is currently shown. -
  • A \b grey box indicates an undocumented class. -
  • A solid dark blue arrow indicates public inheritance. -
  • A dashed dark green arrow indicates protected inheritance. -
  • A dotted dark green arrow indicates private inheritance. -
- - The elements in the class diagram in \f$\mbox{\LaTeX}\f$ have the - following meaning: -
    -
  • A \b white box indicates a class. - A \b marker in the lower right corner of the box indicates that the - class has base classes that are hidden. - If the box has a \b dashed border this indicates virtual inheritance. -
  • A \b solid arrow indicates public inheritance. -
  • A \b dashed arrow indicates protected inheritance. -
  • A \b dotted arrow indicates private inheritance. -
- - The elements in the graphs generated by the dot tool have the following - meaning: -
    -
  • A \b white box indicates a class or struct or file. -
  • A box with a \b red border indicates a node that has - \e more arrows than are shown! - In other words: the graph is \e truncated with respect to this node. - The reason why a graph is sometimes truncated is to prevent images - from becoming too large. - For the graphs generated with dot doxygen tries - to limit the width of the resulting image to 1024 pixels. -
  • A \b black box indicates that the class' documentation is currently shown. -
  • A dark blue arrow indicates an include relation (for the - include dependency graph) or public inheritance (for the other graphs). -
  • A dark green arrow indicates protected inheritance. -
  • A dark red arrow indicates private inheritance. -
  • A purple dashed arrow indicated a "usage" relation, the - edge of the arrow is labled with the variable(s) responsible for the - relation. - Class \c A uses class \c B, if class \c A has a member variable \c m - of type C, where B is a subtype of C (e.g. C could be \c B, \c B*, T\* ). -
- - -Here are a couple of header files that together show the various diagrams -that doxygen can generate: - -diagrams_a.h -\verbinclude diagrams_a.h -diagrams_b.h -\verbinclude diagrams_b.h -diagrams_c.h -\verbinclude diagrams_c.h -diagrams_d.h -\verbinclude diagrams_d.h -diagrams_e.h -\verbinclude diagrams_e.h - - \htmlonly - Click here - for the corresponding HTML documentation that is generated by doxygen
- (EXTRACT_ALL = YES is used here). - \endhtmlonly - -\htmlonly -Go to the next section or return to the - index. -\endhtmlonly - -*/ - diff --git a/doc/docblocks.doc b/doc/docblocks.doc deleted file mode 100644 index a0132d8..0000000 --- a/doc/docblocks.doc +++ /dev/null @@ -1,396 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page docblocks Documenting the code - -\section specialblock Special documentation blocks - -A special documentation block is a C or C++ style comment block with some -additional markings, so doxygen knows it is a piece of documentation that -needs to end up in the generated documentation. For Python code there is -a different comment convention, which can be found in section -\ref pythonblocks - -For each code item there are two types of descriptions, which together -form the documentation: a \e brief description and \e detailed -description, both are optional. -Having more than one brief or detailed description however, is -not allowed. - -As the name suggest, a brief description is -a short one-liner, whereas the detailed description provides longer, -more detailed documentation. - -There are several ways to mark a comment block as a detailed description: -
    -
  1. You can use the JavaDoc style, which consist of a C-style comment -block starting with two *'s, like this: - -\verbatim -/** - * ... text ... - */ -\endverbatim - -
  2. or you can use the Qt style and add an exclamation mark (!) -after the opening of a C-style comment block, as shown in this example: - -\verbatim -/*! - * ... text ... - */ -\endverbatim - -In both cases the intermediate *'s are optional, so - -\verbatim -/*! - ... text ... -*/ -\endverbatim - -is also valid. - -
  3. A third alternative is to use a block of at least two C++ comment -lines, where each line starts with an additional slash or an -exclamation mark. Here are examples of the two cases: - -\verbatim -/// -/// ... text ... -/// -\endverbatim - -or - -\verbatim -//! -//!... text ... -//! -\endverbatim - -
  4. - -Some people like to make their comment blocks more visible in the -documentation. For this purpose you can use the following: - -\verbatim -///////////////////////////////////////////////// -/// ... text ... -///////////////////////////////////////////////// -\endverbatim - -
- -For the brief description there are also several posibilities: -
    -
  1. One could use the \ref cmdbrief "\\brief" command with one of the -above comment blocks. This command ends at the end of a paragraph, -so the detailed description follows after an empty line. - -Here is an example: - -\verbatim -/*! \brief Brief description. - * Brief description continued. - * - * Detailed description starts here. - */ -\endverbatim - -
  2. If \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" is set to \c YES - in the configuration file, - then using JavaDoc style comment - blocks will automatically start a brief description which ends at the - first dot followed by a space or new line. Here is an example: - -\verbatim -/** Brief description which ends at this dot. Details follow - * here. - */ -\endverbatim -The option has the same effect for multi-line special C++ comments: -\verbatim -/// Brief description which ends at this dot. Details follow -/// here. -\endverbatim - -
  3. A third option is to use a special C++ style comment which does not - span more than one line. Here are two examples: -\verbatim -/// Brief description. -/** Detailed description. */ -\endverbatim - -or - -\verbatim -//! Brief descripion. - -//! Detailed description -//! starts here. -\endverbatim - -Note the blank line in the last example, which is required to separate the -brief description from the block containing the detailed description. The -\ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" should also be set to \c NO -for this case. - -
- -As you can see doxygen is quite flexible. The following however is -not legal - -\verbatim -//! Brief description, which is -//! really a detailed description since it spans multiple lines. -/*! Oops, another detailed description! - */ -\endverbatim - -because doxygen only allows one brief and one detailed description. - -Furthermore, if there is one brief description before a declaration -and one before a definition of a code item, only the one before -the \e declaration will be used. If the same situation occurs for a -detailed description, the one before the \e definition is preferred -and the one before the declaration will be ignored. - -Here is an example of a documented piece of C++ code using the Qt style: -\include qtstyle.cpp - \htmlonly - Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -The one-line comments contain a brief description, -whereas the multi-line comment blocks contain a more detailed description. - -The brief descriptions are included in the member overview of a -class, namespace or file and are printed using a small italic font -(this description can be hidden by setting -\ref cfg_brief_member_desc "BRIEF_MEMBER_DESC" to \c NO in -the config file). By default the brief descriptions become the first -sentence of the detailed descriptions -(but this can be changed by setting the \ref cfg_repeat_brief "REPEAT_BRIEF" -tag to \c NO). Both the brief and the detailed descriptions are optional -for the Qt style. - -By default a JavaDoc style documentation block behaves the same way as a -Qt style documentation block. This is not according the JavaDoc specification -however, where the first sentence of the documentation block is automatically -treated as a brief description. To enable this behaviour you should set -\ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" to YES in the configuration -file. If you enable this option and want to put a dot in the middle of a -sentence without ending it, you should put a backslash and a space after it. -Here is an example: -\verbatim - /** Brief description (e.g.\ using only a few words). Details follow. */ -\endverbatim - -Here is the same piece of code as shown above, this time documented using the -JavaDoc style and \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" set to YES: -\include jdstyle.cpp - \htmlonly - Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -Unlike most other documentation systems, doxygen also allows you to put -the documentation of members (including global functions) in front of -the \e definition. This way the documentation can be placed in the source -file instead of the header file. This keeps the header file compact, and allows the -implementer of the members more direct access to the documentation. -As a compromise the brief description could be placed before the -declaration and the detailed description before the member definition. - -\section memberdoc Putting documentation after members - -If you want to document the members of a file, struct, union, class, or enum, -and you want to put the documentation for these members inside the compound, -it is sometimes desired to place the documentation block after the member -instead of before. For this purpose you should put an additional \< marker -in the comment block. - -Here are some examples: -\verbatim -int var; /*!< Detailed description after the member */ -\endverbatim -This block can be used to put a Qt style detailed -documentation block \e after a member. Other ways to do the -same are: -\verbatim -int var; /**< Detailed description after the member */ -\endverbatim -or -\verbatim -int var; //!< Detailed description after the member - //!< -\endverbatim -or -\verbatim -int var; ///< Detailed description after the member - ///< -\endverbatim - -Most often one only wants to put a brief description after a member. -This is done as follows: -\verbatim -int var; //!< Brief description after the member -\endverbatim -or -\verbatim -int var; ///< Brief description after the member -\endverbatim - -Note that these blocks have the same structure and meaning as the -special comment blocks in the previous section -only the \< indicates that the member is -located in front of the block instead of after the block. - -Here is an example of the use of these comment blocks: -\include afterdoc.h - \htmlonly - Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -\warning These blocks can only be used to document \e members and \e parameters. - They cannot be used to document files, classes, unions, structs, - groups, namespaces and enums themselves. Furthermore, the structural - commands mentioned in the next section - (like \\class) are ignored inside these comment blocks. - -\section structuralcommands Documentation at other places - -So far we have assumed that the documentation blocks are always located in -front of the declaration or definition of a file, class or namespace or in -front or after one of its members. -Although this is often comfortable, there may sometimes be reasons to put the -documentation somewhere else. For documenting a file this is even -required since there is no such thing as "in front of a file". -Doxygen allows you to put your documentation blocks practically -anywhere (the exception is inside the body of a function or inside a -normal C style comment block). - -The price you pay for not putting the -documentation block before (or after) an item is the need to put a -structural command inside the documentation block, which leads to some -duplication of information. - -Structural commands (like all other commands) start with a backslash -(\\), or an at-sign (\@) if you prefer JavaDoc style, -followed by a command name and one or more parameters. -For instance, if you want to document the class \c Test in the example -above, you could have also put the following documentation block somewhere -in the input that is read by doxygen: -\verbatim -/*! \class Test - \brief A test class. - - A more detailed class description. -*/ -\endverbatim - -Here the special command \c \\class is used to indicate that the -comment block contains documentation for the class \c Test. -Other structural commands are: -
    -
  • \c \\struct to document a C-struct. -
  • \c \\union to document a union. -
  • \c \\enum to document an enumeration type. -
  • \c \\fn to document a function. -
  • \c \\var to document a variable or typedef or enum value. -
  • \c \\def to document a \#define. -
  • \c \\typedef to document a type definition. -
  • \c \\file to document a file. -
  • \c \\namespace to document a namespace. -
  • \c \\package to document a Java package. -
  • \c \\interface to document an IDL interface. -
-See section \ref commands for detailed information about these and many other -commands. - -To document a member of a C++ class, you must also document the class -itself. The same holds for namespaces. To document a global C function, -typedef, enum or preprocessor definition you must first document the file -that contains it (usually this will be a header file, because that file -contains the information that is exported to other source files). - -Let's repeat that, because it is often overlooked: -to document global objects (functions, typedefs, enum, macros, etc), you -must document the file in which they are defined. In other words, -there must at least be a \verbatim /*! \file */ \endverbatim -or a \verbatim /** @file */ \endverbatim line in this file. - -Here is an example of a C header named \c structcmd.h that is documented -using structural commands: -\include structcmd.h - \htmlonly - Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - - Because each comment block in the example above contains a structural command, all - the comment blocks could be moved to another location or input file - (the source file for instance), without affecting the generated - documentation. The disadvantage of this approach is that prototypes are - duplicated, so all changes have to be made twice! Because of this you - should first consider if this is really needed, and avoid structural - commands if possible. I often receive examples that contain \\fn command - in comment blocks which are place in front of a function. This is clearly - a case where the \\fn command is redundant and will only lead to problems. - -\section pythonblocks Special documentation blocks in Python - -For Python there is a standard way of documenting the code using -so called documentation strings. Such strings are stored in \c __doc__ -and can be retrieved at runtime. Doxygen will extract such comments -and assume they have to be represented in a preformatted way. - -\include docstring.py - \htmlonly - Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -Note that in this case none of doxygen's \ref cmd_intro "special commands" -are supported. - -There is also another way to document Python code using comments that -start with "##". These type of comment blocks are more in line with the -way documentation blocks work for the other languages support doxygen -and this also allows the use of special commands. - -Here is the same example again but now using doxygen style comments: - -\include pyexample.py - \htmlonly - Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -Since python looks more like Java than like C or C++, you should set -\ref cfg_optimize_output_java "OPTMIZE_OUTPUT_JAVA" to \c YES in the -config file. - - -\htmlonly -Go to the next section or return to the - index. -\endhtmlonly - -*/ diff --git a/doc/doxygen.1 b/doc/doxygen.1 deleted file mode 100644 index fc4ccd8..0000000 --- a/doc/doxygen.1 +++ /dev/null @@ -1,46 +0,0 @@ -.TH DOXYGEN "1" "DATE" "doxygen VERSION" "User Commands" -.SH NAME -doxygen \- documentation system for various programming languages -.SH DESCRIPTION -Doxygen is a documentation system for C++, C, Java, Objective-C, IDL -(Corba and Microsoft flavors) and to some extent PHP, C#, and D. -.PP -You can use doxygen in a number of ways: -.TP -1) Use doxygen to generate a template configuration file: -.IP -doxygen [-s] \fB\-g\fR [configName] -.IP -If - is used for configName doxygen will write to standard output. -.TP -2) Use doxygen to update an old configuration file: -.IP -doxygen [-s] \fB\-u\fR [configName] -.TP -3) Use doxygen to generate documentation using an existing configuration file: -.IP -doxygen [configName] -.IP -If - is used for configName doxygen will read from standard input. -.TP -4) Use doxygen to generate a template style sheet file for RTF, HTML or Latex. -.TP -RTF: -doxygen \fB\-w\fR rtf styleSheetFile -.TP -HTML: -doxygen \fB\-w\fR html headerFile footerFile styleSheetFile [configFile] -.TP -LaTeX: doxygen \fB\-w\fR latex headerFile styleSheetFile [configFile] -.TP -5) Use doxygen to generate an rtf extensions file -.TP -RTF: -doxygen \fB\-e\fR rtf extensionsFile -.PP -If \fB\-s\fR is specified the comments in the config file will be omitted. -If configName is omitted `Doxyfile' will be used as a default. -.SH AUTHOR -Doxygen version VERSION, Copyright Dimitri van Heesch 1997-2005 -.SH SEE ALSO -doxytag(1), doxywizard(1). diff --git a/doc/doxygen.sty b/doc/doxygen.sty deleted file mode 100644 index 7c24e26..0000000 --- a/doc/doxygen.sty +++ /dev/null @@ -1,72 +0,0 @@ -% -% -% -% Copyright (C) 1997-2004 by Dimitri van Heesch. -% -% Permission to use, copy, modify, and distribute this software and its -% documentation under the terms of the GNU General Public License is hereby -% granted. No representations are made about the suitability of this software -% for any purpose. It is provided "as is" without express or implied warranty. -% See the GNU General Public License for more details. -% -% Documents produced by Doxygen are derivative works derived from the -% input used in their production; they are not affected by this license. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{doxygen} -\RequirePackage{calc} -\RequirePackage{array} -\pagestyle{fancyplain} -\addtolength{\headwidth}{\marginparsep} -\addtolength{\headwidth}{\marginparwidth} -\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} -\lhead[\fancyplain{}{\bfseries\thepage}] - {\fancyplain{}{\bfseries\rightmark}} -\rhead[\fancyplain{}{\bfseries\leftmark}] - {\fancyplain{}{\bfseries\thepage}} -\rfoot[\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2004}]{} -\lfoot[]{\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2004}} -\cfoot{} -\newenvironment{CompactList} -{\begin{list}{}{ - \setlength{\leftmargin}{0.5cm} - \setlength{\itemsep}{0pt} - \setlength{\parsep}{0pt} - \setlength{\topsep}{0pt} - \renewcommand{\makelabel}{}}} -{\end{list}} -\newenvironment{CompactItemize} -{ - \begin{itemize} - \setlength{\itemsep}{-4pt} - \setlength{\parsep}{0pt} - \setlength{\topsep}{0pt} - \setlength{\partopsep}{0pt} -} -{\end{itemize}} -\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} -\newlength{\tmplength} -\newenvironment{TabularC}[1] -{ -\setlength{\tmplength} - {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} - \par\begin{tabular*}{\linewidth} - {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} -} -{\end{tabular*}\par} -\newcommand{\entrylabel}[1]{ - {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\\}}} -\newenvironment{Desc} -{\begin{list}{} - { - \settowidth{\labelwidth}{40pt} - \setlength{\leftmargin}{\labelwidth} - \setlength{\parsep}{0pt} - \setlength{\itemsep}{-4pt} - \renewcommand{\makelabel}{\entrylabel} - } -} -{\end{list}} -\setlength{\parindent}{0cm} -\setlength{\parskip}{0.2cm} -\sloppy diff --git a/doc/doxygen_logo.eps b/doc/doxygen_logo.eps deleted file mode 100644 index 6539c3a..0000000 --- a/doc/doxygen_logo.eps +++ /dev/null @@ -1,6322 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%BoundingBox: 0 0 634 197 -%%HiResBoundingBox: 0.000000 0.000000 634.000000 197.000000 -%......................................... -%%Creator: GNU Ghostscript 705 (epswrite) -%%CreationDate: 2002/09/28 21:44:36 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%EndComments -%%BeginProlog -% This copyright applies to everything between here and the %%EndProlog: -% Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved. -%%BeginResource: procset GS_epswrite_2_0_1001 -/GS_epswrite_2_0_1001 80 dict dup begin -/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch -4 index eq and{ pop pop pop}{ PageSize dup 1 -5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get exec} -{ pop/setpagedevice where -{ pop 1 dict dup /PageSize PageSize put setpagedevice} -{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat -setpage}if}ifelse}ifelse}ifelse} bind def -/!{bind def}bind def/#{load def}!/N/counttomark # -/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}! -/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}! -/w/setlinewidth #/J/setlinecap # -/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat # -/m/moveto #/l/lineto #/c/rcurveto # -/p{N 2 idiv{N -2 roll rlineto}repeat}! -/P{N 0 gt{N -2 roll moveto p}if}! -/h{p closepath}!/H{P closepath}! -/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}! -/re{4 -2 roll m exch dup lx exch ly neg lx h}! -/^{3 index neg 3 index neg}! -/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}! -/q/gsave #/Q/grestore #/rf{re fill}! -/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}! -/|={pop exch 4 1 roll 3 array astore cvx exch 1 index def exec}! -/|{exch string readstring |=}! -/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}! -/@/currentfile #/${+ @ |}! -/B{{2 copy string{readstring pop}aload pop 4 array astore cvx -3 1 roll}repeat pop pop true}! -/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}! -/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}! -/Ic{exch Ix false 3 colorimage}! -/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>> -/CCITTFaxDecode filter}!/FX{<^Kpr;N/_rk/1.Rf*/tr;N/_rk/1.Rf*/tr;OA,rgNcaRf*/t -r;N/_rk/1.Rf*/tr;N/_rgNcaRf*/Rr;N/_rdaqGJGfD8r;M6ErgNcaRf*/tr;N/_rdaqGJH,ZL -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Yrk/1.]_qcAr;OA,rgNca]_qcAr;N/_rk/1.Rf*/tr;OA,rgNca]_qbtr;OA,rgNcaRf*/R -r;N/_rgNcaRf*/8r;M6ErdaqGRf*/8r;N/_rgNcaRf*/8r;M6Erk/:2s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_JAp&G'lr;N/_rgNca]_qcA -r;N/_rk/1.Rf*/tr;N/_rk/1.Rf*/tr;N/_rk/1.Rf*/Rr;OA,rgNcaRf*/Rr;M6ErdaqGJGfD8 -r;M6ErdaqG]_qbtr;N/_rdaqGJGfDZs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7d9oZ$h.Rf*/tr;N/_rk/1.Rf*/tr;N/_rk/1.Rf*/t -r;N/_rk/1.]_qbtr;OA,rgNcaRf*/Rr;N/_rgNcaRf*/8r;M6ErgNcaJGfCsr;N/_rgNcaJGfCs -r;N/_rk/:2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-ilnkPXtlr;OA,rgNca]_qbtr;OA,rgNca]_qbtr;OA,rgNca]_qbtr;OA,rgNca]_qbt -r;N/_rgNcaRf*/Rr;M6ErdaqGJGfD8r;M6ErdaqGRf*/Rr;M6ErdaqGJGfDZs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7d9oZ$h.Rf*/t -r;N/_rk/1.Rf*/tr;N/_rgNca]_qbtr;OA,rgNca]_qcAr;N/_rgNcaRf*/Rr;N/_rgNcaRf*/8 -r;M6ErgNcaJGfCsr;N/_rdaqGRf*/8r;M6Erk/:2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkPXtlr;OA,rgNca]_qbtr;OA,rgNca]_qbt -r;N/_rk/1.Rf*/tr;N/_rgNca]_qbtr;N/_rgNcaRf*/Rr;M6ErdaqGJGfD8r;M6ErdaqGRf*/R -r;M6ErdaqGJGfDZs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<726kj7d9oZ$h.Rf*/Rr;N/_rgNca]_qbtr;N/_rgNca]_qbtr;OA,rgNca]_qcA -r;N/_rgNca]_qbtr;N/_rgNcaRf*/8r;N/_rdaqGJGfCsr;N/_rdaqGJGfCsr;M6Erk/:2s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-j0)n,2gt -r;OA,rgNca]_qbtr;N/_rk/1.Rf*/tr;N/_rgNca]_qbtr;OA,rgNca]_qbtr;N/_rgNcaRf*/R -r;N/_rdaqGRf*/8r;M6ErdaqGJGfCsr;N/_rdaqGJGfDZs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCVi8j)!oZ$h.Rf*/tr;N/_rk/1.Rf*/R -r;N/_rgNca]_qbtr;N/_rk/1.Rf*/tr;N/_rk/1.Rf*/tr;N/_rk/1.Rf*/8r;M6ErgNcaJGfCs -r;N/_rdaqGJGfCsr;M6Erk/:2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_&&kOeKDr;N/_rgNcaRf*/Rr;N/_rgNcaRf*/Rr;N/_rgNcaRf*/t -r;N/_rk/1.Rf*/Rr;N/_rgNcaRf*/Rr;N/_rgNcaRf*/8r;M6ErdaqGJGfCsr;M6ErdaqGJGfDZ -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_G -kj7d9oZ$h.Rf*/Rr;N/_rgNcaRf*/Rr;N/_rgNcaRf*/Rr;N/_rgNcaRf*/Rr;OA,rgNca]_qbt -r;OA,rgNca]_qbZr;N/_rgNcaJGfCsr;M6ErdaqGJGfCsr;M6Erk/:2s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_>6n,2gtr;N/_rgNcaRf*/R -r;N/_rgNcaRf*/Rr;N/_rgNcaRf*/Rr;OA,rgNca]_qbtr;OA,rgNcaRf*/tr;N/_rdaqGRf*/8 -r;N/_rdaqGJGfCsr;M6Erdaq=EW#gKs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s6/h6n,2Ojr;N/_rdaqGRf*/8r;N/_rgNcaJGfD8r;M6ErgNcaJGfD8r;N/_rgNcaRf*/R -r;OA,rgNcaRf*/tr;N/_rdaqGJGfCsr;M6ErdaqGJGfCsr;M6Erdaq=EW#gKs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6/h6n,2Ojr;M6ErgNcaJGfCsr;N/_rdaqGRf*/8r;M6ErgNcaRf*/8 -r;N/_rdaqGRf*/Rr;N/_rgNcaRf*/Rr;N/_rdaqGJGfCsr;M6Erdaq=EW#HKr;M6ErdaqGJGfDZ -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6/h< -kj7d9oZ$h.JGfCsr;M6ErgNcaJGfCsr;M6ErdaqGRf*/8r;M6ErgNcaRf*/Rr;M6ErgNcaRf*/R -r;N/_rgNcaRf*/8r;M6ErdaqGJGf%Zr:G",oPsg.JGfCsr;M6Erk/:2s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA*Y-kPXtlr;N/_rdaqGJGfCs -r;M6ErgNcaJGfD8r;M6ErgNcaJGfD8r;M6ErgNcaRf*/Rr;M6ErgNcaRf*/Rr;M6ErdaqGJGf%Z -r;M6EoPsg$EW#fdr;M6Erdaq=EW#gKs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7d9oZ$h.JGfCsr;M6ErdaqGJGfCsr;N/_rdaqGJGfD8 -r;M6ErgNcaJGfD8r;M6ErgNcaRf*/Rr;M6ErgNcaJGfCsr;M6Erdaq=EW#HKr:G",oPsg.JGfCs -r;M6Erk/:2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+QpA*q=n,2Ojr;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr;N/_rdaqGJGfD8r;N/_rgNcaRf*/R -r;M6ErgNcaRf*/Rr;M6Erdaq=EW#HKr:G",oPsg$EW#HKr;M6Erdaq=EW#gKs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6/h6n,2Ojr;M6ErdaqGJGfCsr;M6ErdaqGJGfCs -r;N/_rdaqGRf*/8r;N/_rdaqGRf*/8r;N/_rdaqGRf*/Rr;M6Erdaq=EW#HKr8qbloPsg$EW#HK -r;M6EoPsg$EW#gKs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<726kj7d9m)8i$JGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGfD8r;M6ErgNcaJGfD8 -r;M6ErgNcaJGfCsr;M6ErdaqGJGf%Zr:G",oPsfkCAd^Dr:G",rdaq=EW#HKr:G",rk/:2s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA*q=n,2Oj -r;M6ErdaqGJGfCsr;M6ErdaqGRf*/8r;N/_rdaqGRf*/8r;N/_rdaqGJGfCsr;N/_rdaqGRf*/8 -r;M6EoPsg$EW#HKr8qblk%ahdEW#HKr;M6EoPsfqG5V?Ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7d9m)8i$JGfCsr;M6ErdaqGJGfCs -r;M6ErdaqGRf*/8r;N/_rdaqGJGfCsr;N/_rdaqGJGfCsr;M6ErdaqGJGf%Zr:G",k%ahVCAd4/ -r:G",oPsg$EW#HKr8qblrk/:2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_>6n,2Ojr;M6ErdaqGJGfCsr;M6ErdaqGRf*/Rr;M6ErgNcaJGfCs -r;M6ErdaqGJGfCsr;N/_rdaqGRf*/8r;M6EoPsg$EW"s6r8qblk%ahdEW#HKr:G",oPsg$EW#gK -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6/h< -kj7d9m)8i$JGfCsr;M6ErdaqGJGfD8r;M6ErdaqGRf*/8r;M6ErgNcaJGfCsr;M6ErdaqGJGfCs -r;M6ErdaqGJGebWr:G",k%ahVCAd4/r8qbloPsg$EW#HKr8qblrk/:2s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_>6n,2Ojr;M6ErdaqGJGfCs -r;M6ErdaqGJGfD8r;M6ErgNcaJGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGfD8r;M6EoPsfkCAd4/ -r8qblk%ahdEW#HKr:G",oPsfqG5V?Ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7d9m)8i$JGfCsr;M6ErdaqGJGfD8r;M6ErgNcaJGfCs -r;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGf%Zr8qblk%ahVCAd4/r8qbloPsg$EW#HK -r9SV)rk/:2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+IoC_>6n,2Ojr;M6ErdaqGJGfCsr;M6ErdaqGRf*/8r;M6ErdaqGJGfCsr;M6ErdaqGJGfCs -r;M6ErdaqGJGfCsr;M6EoPsfkCAd4/r8qblk%ahVCAd^Dr9SV)lur=!EW#IKs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7d9m)8i$JGfCs -r;M6ErdaqGJGfD8r;M6ErdaqGJGfD8r;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr;N/_rdaqGJGf%Z -r8qblk%ahLB)Le+r8qbloPsg$EW#HKr9SV)rk/:2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_&&kPX\br;M6ErdaqGJGfCsr;M6ErdaqGRf*/8 -r;N/_rdaqGJGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr;M6ElurB)LFrr8qblk%ahVCAck! -r8qblk%ahLB)M:fs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8VHWp%7tRi8j)!m)8i$JGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr;N/_rdaqGJGfCs -r;N/_rdaqGJGfCsr;M6ErdaqGJGe27r7ko^gh-K>B)LFrr8qblgh-K>B)Le+r7ko^oZ$q2s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_&&kPX\b -r:G",rdaqGJGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr;N/_rdaqGJGfCsr;M6ErdaqGJGfCs -r:G",k%ahD@JnV`r7ko^gh-K>B)LFrr7ko^k%ahLB)M:fs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7d8jMCcnJGf%Zr;M6ErdaqGJGfCs -r;M6ErdaqGJGfCsr;N/_rdaqGJGfCsr;M6ErdaqGJGfCsr;M6Erdaq=EW"Vr:G",rdaqGJGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGfCs -r;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr:G",e7&:)@Jn>Tr7#0Qe7&:)@JnV`r7#0Qgh-K6@Joc; -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726 -kj7d9m)8hoEW#HKr:G",oPsg.JGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr;M6ErdaqGJGfCs -r;M6Erdaq=EW"6n,)1^r:G",oPsg$EW#HK -r:G",oPsg.JGf%Zr;M6ErdaqGJGfCsr;M6ErdaqGJGfCsr:G",rdaq=EW#HKr9SV)e7&:!?2VoP -r6/IEb[(.j?2VoPr6/IEe7&:)@JoGZs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gi8j)!m)8haCAd4/r:G",oPsg$EW#HKr:G",oPsg$EW#HK -r:G",oPsg.JGfCsr;M6EoPsg$EW#HKr:G",oPsfkCAc:]r5;b9b[(.b=o?3@r6/IE`**#^?2VoP -r7#0QoZ$q2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+IoC_>6n,)1^r8qblk%ahdEW#0Hr:G",oPsg$EW#HKr:G",oPsg$EW#HKr:G",oPsg$EW#HK -r:G",oPsfqG5UuPr8qbl`**#V=o>p3r5;b9]N"gI=o?3@r5;b9`**#^?2X?7s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCVi8j(ujMCcVCAd4/ -r8qblk%ah\G5U]Mr9SV)lurp3r5;b9]N"gA<;a[;r6/IEm)8r(s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-j0)n,)1^r8qblk%ahVCAd4/r8qblk%ahVCAd4/ -r8qbllurp3r4H#,]N"gI=o>p3 -r4H#,]N"gQ?2X#Vs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA+(Hp#tc2i8j(tgopY2B)LFrr8qblk%ahVCAd4/r8qblk%ahVCAd4/r8qblk%ahVCAdFA -r8qblk%ahVCAd4/r8qblk%ahD@Jmc;r5;b9]N"gA<;a+"r4H#,]N"gA<;aC.r5;b9m)8r(s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W#r]`8$3s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;l/r:J#,oU#LARJcDpr9KdKl^@\:RJc]D -r:J#,oZ$h$`r,JKs8W,soZ$q2s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gm.9o.jQGI^kPEu; -r7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr7ko^k%ahVCAd4/r8qblk%ahVCAd4/r8qblk%ahLB)Le+ -r7#0Q]N"gA<;aC.r4H#,Zr$\5<;a+"r3T;uZr$\5<;c'Ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#rRf)fEr8qblk%ahVCAd4/ -r8qblk%ahVCAd4/r9SV)lurB)LFrr8qblgh-K6@Jn>T -r5;b9]N"gA<;a[;r4HkDc%GrDM#,o1qrGTfm-!U!n)39ig"bH\gopY2B)LFrr7ko^gh-K6@Jnnm -r7#0Qgh-K>B)LFrr7ko^gh-K>B)LFrr8qblgh-K>B)LFrr7ko^gh-K.?2V'+r3T;u]N"g9;#ICg -r4H#,Zr$\%9`1tcr3T;um)8r(s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!r;OA,lur;rjqV8:Pj.ZD2U&=5Er9KdKlurB)LFrr8qblgh-K>B)LFrr6/IE]N"g9;#ICg -r2`TiUe(Eb9`1\Wr3T;u]PQfTX8:&;r7#0Qe7&:)@JnV`r7#0Qe7&:1B)L.er7ko^e7&:1B)LFr -r7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr6/IEZr$\-;#I[sr3T;uXA&Q!;#I[sr2`TiXA&Q!;#K@I -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;l/r8qblk%ahVCAck! -r8qblgh-K>B)LFrr8qblk%ahLB)Le+r7ko^gh-KHCAck!r7ko^k%ahLB)LFrr7ko^gh-K>B)LFr -r7ko^b[(.Z<;`gkr2`Ti`*)rlYQ+Y&s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r:G",k%ahVCAd4/ -r8qbl`**#>9`1tcr4H#/s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,slurB)LFrr7ko^k%ahdEW#gKs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -r;OA,rk/1$EW#0Hr9SV)lurY"cr2`TiZr$\==o@&er9SV)lur?pr3T;uZr$\%9`1tcr2`TiUe(EZ8Go8Sr2`ThjMClrs8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W#r]_po,r7ko^gh-K>B)L.er7ko^gh-K>B)LFrr7ko^gh-K>B)LFr -r7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr7#0Qe7&:)@Jnnmr7#0Qe7&9n=o>?p -r1lm]XA&Q)<;PCRs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r9SV)k%ahVCAd4/r8qblk%ahVCAd4/r3T;uXA&Pn9`2h3 -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#`G5UK;r9SV)k%ahVCAdFAr9SV)k%ah[RK*B)LFrr7ko^k%ahVCAdFAr;N/bs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,sm)8h^U&=5Er9SV)oPsg$EW#HKr9SV)lur6n+thCqSeN>er8XLKgkYg_L]#Y1r7#0Qgh-KHCAd4/r9SV)lurB)LFrr7ko^gh-K>B)Le+r7ko^k%ahLB)Le+r7ko^lur=!`rH)= -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8:oNr5;b9]N"gI=o>p3 -r4H#,]N"gA<;a[;r4H#,`**#V=o?KLr6/IEb[(.r@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:1B)L.e -r7#0Qe7&:)@JnV`r7#0Qe7&:!?2VoPr4H#,Ue(EZ8Go8Sr1lm]S3m.D6N!oYr6/IEb[(.j?2VoP -r6/IEb[(.r@JnV`r6/IEe7&:)@Jn>Tr7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r5;b9XA&Pn9`1tc -r2`TiXA&Pn9`1\Wr1lm]S3m.L8GqMAs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#hQi,WN -r7ko^e7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:1B)LFrr7ko^gh-K>B)LFrr7ko^e7&:)@Jnnm -r7#0Qgh-K>B)L.er7#0Qe7&:)@JnV`r7#0Qb[(.r@JnV`r6/IEe7&9n=o>?pr1$+OUe(Eb9`2P> -r:J#/s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;l/ -r9SV)gh-K>B)LFrr7ko^k%ahLB)Le+r7ko^k%ahB)LFr -r7ko^gh-K>B)L.er7ko^gh-K6@K6B-s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#0D#DL_r7ko^e7&:1B)LFrr7#0Qgh-K>B)LFr -r7ko^k%ahLB)Le+r8qbllur=+]`8$3s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -qV8:Pe;4%P@JoJ8r9SV)lurB)LFrr8qblk%ahVCAdFAr9SV)lurB)LFrr7ko^e7&:1B)LFr -r7ko^gh-K6@Jnnmr7ko^e7&:1B)LFrr7ko^gh-K>B)LFrr7ko^k%ah\`;fl;s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8:Z-r4H#,]N"gA<;aC.r4H#,]N"gA<;a[;r4H#,]N"gA<;a[; -r5;b9`**#^?2VWDr6/IEb[(.r@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:)@Jn>Tr6/IEb[(.j?2VoP -r5;b9b[(.b=o?3@r2`TiS3m.D6N!WMr1$+OUe(F%=o?3@r6/IEb[(.j?2VoPr6/IEb[(.j?2VoP -r5;b9b[(.j?2VoPr6/IEb[(.j?2VoPr6/IEb[(.b=o>?pr2`TiXA&Pn9`1DIr2`TiS3m.D6N!?? -r1$+NjMClrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#_RJbQCr7#0Qb[(.r@Jn>Tr6/IEe7&:!?2VoP -r6/IEe7&:!?2W2\r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV` -r6/IEb[(.j?2VoPr6/IEb[(.j?2VoPr6/IEe7&9f<;`gkr1$+OUe(EZ8GohkqV8:Ss8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;l/r7m)*gh-K6@Jnnmr7ko^gh-K>B)LFr -r7ko^gh-KHCAck!r7ko^]N"g)8Go8Sr3T<#s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r9KdKgh-K>B)LFr -r8qblgh-KHCAd4/r8qbllurTr7#0Qe7&:)@JnV` -r7#0QoZ$q2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCV -o_/+QpA+@Sq>/mMr4H#,e7&:1B)L.er7#0Qe7&:)@Jnnmr7ko^gh-K>B)LFrr7ko^gh-K>B)LFr -r7ko^k%ah\G5V?.s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8(NSqSeB)Le+r8qblk%ahVCAdFAr8qblk%ahVCAd4/ -r8qblk%ahVCAd4/r8qblk%ah\G5UK;r9SV)rk/:2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp$D;Cm.9o.jQHB`VYd`@ -r1lm]XA&Pf8GoP_r4H#,gh-KHCAd4/r8qblk%ahVCAd4/r8qblk%ahVCAd4/r8qblk%ahLB)LFr -r7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr8qbllurB)LFrr8qblgh-KHCAck! -r8qblgh-KHCAd4/r8qblk%ahLL]$:Lr7m)*k%ahLB)Le+r8qbl]N"g19`1\Wr2`TiXA&Pn9`1\W -r6/IEgh-KHCAck!r7ko^gh-K>B)LFrr7#0Qgh-K6@Jnnmr7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV` -r7ko^gh-K>B)L.er7#0Qgh-K6@JnV`r7ko^gh-KV`rH)=s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8:Z- -r4H#,]N"gA<;aC.r4H#,]N"gA<;aC.r4H#,]N"gA<;aC.r4H#,]N"gA<;a[;r5;b9`**#V=o?KL -r6/IEb[(.j?2W2\r6/IEb[(.j?2VoPr6/IEb[(.b=o?3@r5;b9`**#V=o?3@r4H#,`**#N<;a+" -r1$+OS3m.D6N!WMr5;b9`**#V=o?3@r5;b9`**#V=o?3@r5;b9`**#V=o?3@r5;b9`**#^?2VWD -r6/IEb[(.b=o?KLr4H#,Ue(EZ8Go8Sr1$+OS3m.L8GnuEr1$+OS3m.D6N#l;s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W#_RJbQCr6/IEb[(.j?2VoPr6/IEb[(.j?2VWDr6/IE`**#^?2VWDr6/IEb[(.j?2VoP -r7#0Qe7&:!?2W2\r7#0Qe7&:!?2W2\r7#0Qe7&:!?2VoPr6/IEb[(.j?2VoPr5;b9b[(.j?2VoP -r6/IE`**#^?2VWDr5;b9`**#F;#HhMr1$+OPX55C8GoP_qV8:Ss8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8;N/r7#0Qb[(.r@JnV`r7#0Qe7&:)@JnV`r7ko^gh-K>B)LFrr7ko^gh-K>B)L.e -r2`TiS3m.L8Gp,:s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Ym)8hO@JnV`r7#0Qgh-K6@Jnnmr7ko^gh-K>B)Le+ -r7ko^k%ahVCAd4/r7ko^e7&78_>jQ8s8W-!s8W-!s8W-!s8W,sgh-K>B)LFrr7m)*gh-K>B)L.e -r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r6/IEe7&:!?2VoPr6/IEb[(.j?2W2\s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gm.9o6m-j0)n*'-,kj7d9]PRMa=o?cX -r7#0Qe7&:)@JnV`r7#0Qe7&:1B)LFrr7ko^gh-K6@Jnnmr7ko^gh-K>B)LFrr7ko^gh-KHCAd4/ -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8Vi[kPE]4r3T;u`**#nB)Le+r8qblk%ahVCAd4/r8qblk%ahVCAd4/r7ko^k%ahLB)Le+ -r8qblgh-K>B)LFrr7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr7ko^gh-K>B)LFr -r7ko^gh-K6@Jnnmr7ko^gh-K>B)LFrr8qblgh-KHCAd4/r7ko^k%ahLB)Le+r8qblk%ahVCAd4/ -r8qblk%ahVCB+>6s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+(Hp$D;Ckj7crjQHBYM>X/?r1lm]Ue(ER6N!WMr4H#,e7&:;CAck! -r8qblgh-K>B)Le+r7ko^k%ahLB)LFrr7ko^gh-K>B)LFrr8qblgh-KHCAck!r7ko^gh-K>B)LFr -r7ko^gh-KHCAd4/r7m)*k%ahVCAck!r7ko^gh-K>B)Le+r7ko^gh-KHCAck!r9KdNs8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mm.9o6m-ilnkLnYIg"bH;gtp`>hXA+;r1lm]S3m.D6N!?? -r1$+OUe(EZ8GnuEr1$+OS3m.d<;bN`r7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr7ko^gh-K>B)LFr -r8qblk%ahVCAck!r7m)*k%ahLB)K;@r1lm]Ue(Eb9`1DIr3T;ue7&:;CAd4/r7ko^gh-K6@JnV` -r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qb[(.j?2W2\r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV` -r7#0Qe7&:!?2W2\r7#0Qj.ZMQs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8:oNr5;b9]N"gA<;aC.r4H#,]N"g9;#I[s -r3T;uZr$\-;#I[sr3T;u]N"gA<;aC.r5;b9]N"gA<;a[;r5;b9`**#V=o?3@r6/IE`**#^?2VoP -r5;b9`**#V=o?3@r5;b9`**#V=o>p3r4H#,]N"gA<;a+"r4H#,]N"g9;#HhMr00MFS3m.d<;aC. -r4H#,`**#N<;a[;r4H#,]N"gA<;aC.r4H#,]N"gA<;aC.r4H#,`**#V=o?3@r5;b9`**#F;#I+[ -r1$+OUe(ER6N!??r1$+OPX4o!2Z/e*r1$+MgopbXs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#h`r+)6r6/IEb[(.j?2VWD -r5;b9`**#V=o?3@r5;b9`**#V=o>p3r5;b9]N"gI=o?3@r5;b9b[(.b=o?3@r6/IE`**#^?2VoP -r6/IEb[(.j?2VoPr6/IEb[(.b=o?3@r5;b9`**#V=o?3@r5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r5;b9`**#>9`1DIr00MFPX55;6N!WMqrGTns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;6%r7#0Q`**#^?2VoP -r6/IEb[(.j?2VoPr7#0Qe7&:)@JnV`r7m)*e7&:1B)L.er7ko^gh-K&=o=dVr1$+OUe(CD_>jQ8 -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-j]8kPWSWr7#0Qb[(.r@JnV`r7#0Qe7&:)@Jnnmr7ko^gh-K>B)L.er7ko^e7&:1B)LFr -r7#0Q`*)rlYQ+Y&s8W-!s8W-!s8:Z-r7#0Qgh-K6@JnV`r7#0Qe7&:)@JnV`r6/IEe7&:!?2VoP -r6/IEb[(.j?2VWDr6/IEb[(.j?2VoPr6/IE]N"q2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\kj7d%m-ilnkMYFai8j(ZjQG[Lao&56r6/IEb[(.r@Jn>Tr7#0Qe7&:)@Jnnm -r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qgh-K6@Jnnmr7ko^oZ$q2s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vi[kPE/Sr2`Ti]N"gaB)Le+ -r7ko^gh-K>B)LFrr7ko^gh-K6@Jnnmr7#0Qgh-K6@Jnnmr7ko^e7&:1B)L.er7ko^e7&:1B)LFr -r7ko^e7&:1B)L.er7ko^e7&:)@JnV`r7#0Qe7&:1B)L.er7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV` -r7#0Qgh-K>B)LFrr7ko^gkYg_B)Le+r7m)*k%ahLB)LG>r7ko^gh-KHCAckBr9SV,s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp$D;C -kj7d#gt_h?M#=&>r1$+OS3m.D6N!??r2`Tie7&:1B)LFrr7ko^k%ahLB)LFrr7ko^gh-K>B)LFr -r7ko^gh-KHCAck!r7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr7#0Qgh-K>B)LFrr7ko^gh-KHCAck! -r7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr7ko^gh-K>B)LFrr:J#/s8W-!s8W-!s8W-!s8W-!s8W-! -m.9o:oC_&&kMYFag"bH;gtpK/f$`(!daZk:]T2o[6N!??r1$+OS3m.D6N!??r1$+OS3m.D6N!?? -r2`Tib[(.r@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qgh-K6@Jnnmr7ko^k%ahLB)LFr -r8qblZr$[r8Go8Sr1$+O]N"gaB)LFrr7ko^e7&:1B)L.er7#0Qe7&:)@JnV`r6/IEe7&:!?2W2\ -r6/IEb[(.j?2VoPr6/IEb[(.j?2VoPr7#0Qe7&:)@Jn>Tr6/IEb[(.j?2VoPr6/IEb[(.j?2VoP -r7#0Ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8;N/r4HkD]N"gA<;aC.r4H#,]N"g9;#I[sr4H#,Zr$\-;#I[sr3T;uZr$\-;#I[s -r4H#,Zr$\5<;aC.r4H#,]N"gA<;aC.r5;b9]N"gA<;a[;r4H#,`**#N<;a[;r4H#,]N"gA<;aC. -r4H#,Zr$\-;#I[sr3T;uZr$\-;#I[sr3T;uXA&P^6N!??r4H#,]N"gA<;a+"r4H#,Zr$\5<;a+" -r3T;uZr$\-;#It*r4H#,]N"gA<;aC.r4H#,]N"gA<;a[;r3T;uS3m.D6N!WMr1$+OS3m.D6M$*n -o8>NuM`1L'6Mf39s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8:ATr5;b9`**#V=o?3@r5;b9`**#N<;a[;r4H#,]N"gA<;aC. -r4H#,]N"gA<;a[;r4H#,`**#N<;a[;r4H#,`**#V=o?3@r5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r5;b9`**#N<;aC.r4H#,]N"gA<;aC.r4H#,`**#N<;aC.r4H#,]N"gA<;aC.r4H#,Zr$[j6M$*n -o8>O)PX55;6Mn-1s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8;6%r7#0Q`**#V=o?3@r5;b9`**#V=o?3@r6/IEb[(.j?2VoP -r69llb[(.r@JnV`r69lle7&:)@JnV`r7#0QXA&P^6N!??r2`Tls8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n*'-,r69ll`**#^?2VoP -r6/IEb[(.j?2W2\r7#0Qe7&:)@JnV`r7#0Qgh-K6@Jnnmr7$Q#e7&:)@JnV`r6/IE]PRH"YQ+Y& -s8W,sm)8hO@JnV`r7#0Qe7&:!?2VoPr6/IEb[(.j?2VoPr6/IEb[(.b=o?3@r5;b9`**#V=o?3@ -r5;b9`**#V=o?3@r69los8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYI -g"bH;gtpK/f%Jj8m&ka6]N"gQ?2VoPr6/IEb[(.j?2VoPr6/IEe7&:)@JnV`r7#0Qe7&:!?2W2\ -r7#0Qe7&:)@JnV`r7$Q#e7&:)@K6B-s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq>/'er1lm]Zr$\M@Jnnmr7ko^gh-K>B)LFrr7ko^gh-K6@JnV` -r7#0Qe7&:)@JnV`r7#0Qb[(.j?2W2\r6/IEe7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV` -r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r6/IEe7&:)@Jn>Tr7#0Qe7&:)@JnV`r7#0Qgh-K>B)LFr -r7ko^gkYg_B)LFrr7ko^k%ahLB)LFrr7ko^gh-KV`rH)=s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq<[_Gkj7ckgtqM4Nr5D6r00MFPX55362Zs5 -r1$+O]N"gY@JnV`r7#0Qgh-K>B)L.er7$Q#gh-K6@Jnnmr7#0Qe7&:1B)LFrr7#0Qgh-K>B)LFr -r7ko^gh-K6@Jnnmr7#0Qe7&:)@JnV`r7ko^gh-K>L]#q>r7m)*gh-K>B)L.er7ko^e7&:)@JnV` -r7#0Qe7&:)@JnV`r7#0Qe7&:)@JoJ8s8W-!s8W-!s8W-!s8W,coC_JAp#+ooi8j(SgtpK/f#u:^ -bKS5Sbg")F`T41Lr00MFPX55362Zs5r00MFS3m.D6N!'6r00MFPX55K9`3+?r6/IEb[(.j?2VoP -r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:1B)L.er7ko^gh-K>B)K#4r1$+OS3m.l=o@&e -r7ko^gh-K6@Jnnmr7#0Qe7&:!?2VoPr6/IEb[(.j?2VoPr6/IEb[(.j?2VoPr6/IE`**#^?2VWD -r6/IEb[(.j?2VoPr5;b9b[(.j?2VoPr6/IEb[(.b=o?KLr5;b9b[(.b=o?d*s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r69llZr$\-;#I[s -r3T;uZr$\-;#I[sr3T;uZr$\-;#I[sr2`TiZr$\%9`27or3T;uZr$\%9`27or3T;uZr$\-;#I[s -r3T;uZr$\-;#I[sr3T;uZr$\-;#It*r4H#,]N"gA<;aC.r3T;uZr$\-;#ICgr3T;uXA&Pn9`1tc -r2`TiXA&Pn9`1tcr3T;uS3m.\;#I[sr3T;uZr$\-;#ICgr3T;uZr$\-;#I[sr3T;uZr$\-;#It* -r3T;u]N"gA<;aC.r4H#,]N"g9;#HhMr1$+OS3m.D6N!'6r1$+FM`10b2Y2hbr/p3r4H#,]N"gA<;aC. -r4H#,]N"gA<;aC.r4H#,Zr$\5<;a+"r3T;uZr$\-;#It*r4H#,XA&PV61^!mqh.$.PX55362\u[ -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;6% -r5;b9`**#V=o?3@r5;b9`**#N<;a[;r4H#,`**#V=o?3@r5;b9`**#V=o?KLr5;b9`**#^?2VWD -r5;b9b[(.j?2VWDr1$+OPX55362\BOs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA*q=n*'-,i8j)!e;4%@=o?3@r5;b9`**#^?2VWDr6/IEb[(.j?2VoP -r7#0Qe7&:)@JnW2r7#0Qe7&:)@JnV`r7#0Qb[(.r@Jn>Tr5;b9XCh=QVYBH?r7$Q#e7&:"KD`r! -r6/IEb[(.b=o?KLr5;b9`**#V=o?3@r5;b9]N"gI=o?3@r4H#,]N"gI=o>p3r4H#,]N"g9;#gRq -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)39ig"bH4eCN'tf#u:^bKS5_`4c)E8GpD/ -r5;b9b[(.j?2VoPr6/IEb[(.j?2VoPr6/IEb[(.j?2VoPr6/IEb[(.j?2VoPr6/IEb[(.j?2W2\ -r9KdNs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=rI] -r1lm]SP8t"=o?cXr7#0Qgh-K6@JnW2r7ko^e7&:)@JnV`r7#0Qe7&:)@JnV`r6/IEb[(.j?2VoP -r6/IEb[(.j?2VoPr6/IEb[(.j?2VoPr6/IEe7&:!?2W2\r6/IEe7&:!?2VoPr6/IEb[(.j?2VoP -r6/IEb[(.j?2VoPr6/IEb[(.j?2W2\r6/IEe7&:)@JnV`r7#0Qe7&:)@Jnnmr7ko^gkYgW@JnV` -r7#0Qe7&:)@Jnnmr;OA/s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8VHWp#tc2kj7crjQGaMX7;cdo8>O)PX55362Zs5o8>O)XA&Q1=o?cXr6/IEe7&:)@JnB& -r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r7#0Qe7&:)@JnW2r7#0Qgh-K6M#>b2r7#0Qe7&:)@JnV` -r7#0Qe7&:)@JnV`r7#0Qe7&:1B)L.er7#0Qe7&:)@JnV`r7#0Qe7&:)@JnV`r6/IEe7&:)@JnV` -r6/IEb[(.r@K6B-s8W-!s8V`bq<[_Gkj7ckgtp`>hU9p)`5T^6`PoI%]u7n/]=bi0Uj2g%62Zs5 -o8>O)PX4o!2Z/e*r00MFPX4o!2Y2hbr1$+O`**#V=o?3@r5;b9b[(.b=o?3@r6/IE`**#^?2VoP -r6/IEc%GrD@JnV`r7#0Qe7&:)@JnV`r7#0QXA&P^6N#&5r7#0Qe7&:)@JnV`r7#0Qb[(.j?2VoP -r6/IEb[(.b=o?KLr5;b9`**#V=o?3@r5;b9`**#V=o?3@r5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r5;b9`**#V=o?3@r5;b9`**#V=o?3@r5;b9`**#nL]@DSs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r:J#,]PRMI9`1tcr2`TiXA&Pn9`1tcr2`TiXA&Pn9`1tc -r1lm]XA&Pn9`1\Wr2`TiXA&Pf8GoP_r2`TiXA&Pn9`1tcr2`TiXA&Pn9`1tcr2`TiXA&Pn9`1tc -r3T;uXA&Q!;#ICgr3T;uZr$\%9`27or2`TiXA&Pn9`1\Wr2`TiUe(EZ8Go8Sr2`TiUe(Eb9`1tc -r2`TiXA&Pn9`1tcr2`TiXA&Pn9`1tcr2`TiXA&Pn9`1tcr3T;uZr$\-;#I[sr4HkD]N"gA<;aC. -r2`TiPX55362Zs5r00MFPX55361^!mo8>NuM`1Kt62]5gs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r69llZr$\-;#I[sr4H#,]N"g9;#It* -r3T;uZr$\-;#I[sr3T;uZr$\-;#ICgr3T;uXA&Pn9`1tcr3T;uXA&Pn9`27or3T;uZr$\-;#I[s -r4H#,Zr$\5<;aC.r4H#,]N"gA<;aC.r4H#,]N"gA<;aC.r3T;uZr$\-;#I[sr3T;uZr$\-;#I[s -r3T;uZr$\-;#I[sr3T;uZr$\-;#It*r3T;uPX4o!2Z&.go8>O)PX55CD?'Y9s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,rjMCc,<;aC.r4H#,]N"gA<;aC. -r4H#,]N"gA<;aC.r4H#,]PRMa=o?3@r5;b9`**#V=o?3@r5;b9`**#ND#D4Sr5;b9`**#F;#H88 -o8>O)PX53-_>jQ8s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_G -i8j(ZjQGdXfDN9\r4H#,]N"gI=o?3@r5;b9`**#V=o?3@r6/IEb[(.j?2VoPr6/IEe7&:!?2Vs" -r7#0Qb[(.kKD`r!r6/IEb[(.Z<;_\J&r6/IEb[(.j?2VWDr5;b9`**#V=o?3@ -r5;b9`**#N<;a[;r4H#,]N"gA<;aC.r4H#,]N"gA<;aC.r3T;ue;4/)s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<726i8j(SgtpK/f%A3i`5T^=bg")F`T41Lr2`Tib[(.b=o?3@r6/IE`**#V=o?3@ -r6/IE`**#V=o?KLr5;b9`**#^?2VWDr6/IEb[(.kKD`r!r6/IEc%H&rs8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq<726n%=\YPX55C8GpD/r6/IEb[(.r@Jn>T -r6/IEe7&:!?2W2\r69lle7&:"KD`r!r7#0Qb[(.j?2VoPr5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r6/IE`**#^?2VWDr6/IE`**#V=o?KLr5;b9b[(.b=o?KLr5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r6/IE`**#^?2VoPr6/IEc%GrD@JnV`r7#0Qc%GrD@Jn>Tr7#0Qb[(.r@JnB&r7#0Qe7&CWs8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp$D;Ckj7crjQG4OhW1he -r00MFPX55;6M$*no8>O)PX55S;#JOCr6/IEb[(.j?2VoPr6/IEb[(.j?2VoPr6/IEc%GrNuM`10b2Y2hbo8>NuM`10b2Z/Ls -o8>O(KKB%$6N"c)r4H#,`**#N<;aC.r5;b9]PRMa=o?3@r4HkD`**#^?2VWDr5;b9b[(.kKD`r! -r7#0Qc%GrD@Jm3#r5;b9b[(.j?2VoPr6/IE`**#^?2VWDr5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r5;b9`**#N<;a[;r4H#,]N"gA<;aC.r4H#,]N"gA<;a[;r4H#,`**#N<;a[;r4H#,]N"gI=o>p3 -r4H#,]N"gA<;aC.r4H#,oZ$q2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,rjMCbq9`1tcr1lm]Ue(Eb9`1tcr1lm]XA&Pf8Go8Sr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8GnuE -r1lm]Ue(EZ8GnuEr1lm]S3m.D6N!??r1lm]S3m.L8Go8Sr1lm]XA&Pf8GoP_r2`TiXA&Pf8GoP_ -r1lm]XA&Pf8Go8Sr1lm]S3m.D6N!WMr1$+OS3m.L8Go8Sr1lm]Ue(Eb9`1\Wr1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8GoP_r2`TiXA&Pn9`1tcr2aN.Zr$\-;#I[sr3T;uZr$[r8Gn]pKr5;b9`**#V=o?KLr5;b9b[(.j?2VoP -r6/IEb[(.j?2VWDr5;b9`**#V=o?3@r5;b9`**#N<;a[;r5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r4H#,`**#N<;a[;r4H#,`**#N<;a[;r5;b9]N"gI=o>p3r5;b9]N"gI=o?3@r5;b9`**#^?2VoP -r6/IEc%GrNuM`1L'6N"Jq -r5;b9b[(.b=o?3@r6/IE`**#^?2VWDr6/IE`**#V=o?3@r5;b9`**#V=o?3@r6/IE`**#^?2VoP -r6/IEc%Grp3r5;b9`**#V=o?3@r5;b9`**#V=o?3@r5;b4m-!U!n)39ig"bH4eCMgec+CX% -['[3I['Zm8XfJP*X/rGIO_"'A2Y2hbqh.$-KKB!`3qJ7fqh.$%M`1Hc3r=Rkr1$+OZr$\5<;a+" -r3T;u]N"g9;#It*r4H#,]N"gA<;a[;r4H#,`**#V=o>p3r4H#,`**#V=o?3@r5;b9`**#V=o>p3 -r5;b9]N"gI=o?3@r5;b9]N"gI=o>p3r4H#,]N"gA<;aC.r4H#,]N"gA<;aC.r4H#,]N"gA<;a+" -r4H#,Zr$\5<;aC.r4H#,Zr$\5<;a+"r4H#,]N"gA<;aC.r3T;u]N"gA<;aC.r4H#,Zr$\5<;b!n -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VrNYPb1er1-OZUe(EZ8Go8S -r1$+OUe(EZ8GnuEr1lm]Ue(ER6N!WMr1$+OS3m.D6N!??r1$+OS3m.D6N!??r1$+OS3m.D6N!?? -r1$+OS3m.D6N!??r1$+OS3m.D6N!??r1lm]S3m.L8Go8Sr1lm]S3m.L8GnuEr1$+OS3m.D6N!?? -r1$+OS3m.D6N!??r1$+OS3m.D6N!WMr1$+OS3m.L8GnuEr1$+OS3m.D6N!WMr1lm]Ue(EZ8GoP_ -r2`TiXA&Pn9`1tcr2`TiXChC39`1tcr1lm]N'6cj2Y2hbo8>NuM`1Hc3r=Rkqh.#sF=Qm?2Z2'\ -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+Wn;#ICg -r2`TiXA&Pn9`1u(r2`TiXA&PfD>^J/r1lm]Ue(Eb9`1\Wr1lm]Ue(EZ8Go8Sr1lm]S3m.L8GnuE -r1lm]Ue(ER6N!WMr1lm]Ue(EZ8Go8Sr1lm]XA&Pf8GoP_r2`TiXA&Pn9`1u(r3T;uZr$\%9`1tc -r3T;uXA&Pn9`1tcr2`TiXA&Pn9`1tcr2`TiXA&Pn9`1tcr2`TiXA&Pn9`27or3T;uZr$\-;#HhM -qh.$-KKB!`3qJ7fr/6n)iE\g"bH\`JON";#I[sr3T;uZr$\5<;a+"r4H#,Zr$\5<;aC. -r4H#,]N"gAD#D4Sr4HkD`**#V=o>pKr5;b7`JON2=o>pKr4HkDS3m.44m]>!g"bH4eCN'tf)!@B -r4H#,]N"gA<;aC.r4H#,]N"gA<;aC.r4H#,]N"g9;#I[sr3T;uZr$\-;#I[sr3T;uXA&Pn9`27o -r2`TiZr$VSYQ+Y&s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n)39idaZjreCMgec,@T?`5T^6`Ppo@I/Kd2 -r5;b9]N"gI=o>p3r5;b9`**#N<;a[;r5;b9`**#V=o?3@r5;b9`**#ND#D4SqSekpKr5;b9]PRMa=o?3@r5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r5;b9]N"gA<;aC.r4H#,]N"gA<;aCFr4H#,]N"gA<;aC.r4H#,]N"gA<;aC.r4H#,]N"gA<;aC. -r4H#,Zr$\5<;a+"r3T;u]N"g9;#It*r4H#,]N"gI=o?3@r5;b9`**#V=o?3@r5;b9`**#V=o?3@ -r5;b9]PRMa=o?3@r5;b9oZ$q2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -m.9o6m-ilnkLnYIf>PB#PX4o!2Y2hbo8>NuM`1Hc3rG4.r5;b9`**#V=o?3@r5;b9`**#V=o>pK -r5;b9]PRMa=o>pKr5;b9]PRMa=o>pKr4H#,]PRMa=o>pKr5;b7`JON2=o?KLr5;b9b[(.b=o?KL -r5;b9c%Gr4=o?KLr6/IEb[(.j?2VoPr5;b9`**#ND#D4Sr4HkD`**#V=o>pKr5;b9]N"gA<;aC. -r4H#,]N"gA<;aCFr4H#,`**#N<;a[;q:sBUjQFt@f#u:^]=bhh]Y1AIXfJP*Unsl_V50o`Us+s3 -r/ -r00MFS3m.<62[6>r00MFS3m.<62[6>r00MFPX55362Zs5r00MFPX55;6N!'6r00MFPX55362Zs5 -r00MFS3m.<62[6>r00MFS3m.<62[6>r00MFS3m.<62Zs5r00MFPX55362Zs5r00MFPX55362Zs5 -r00MFS3m.<62[6>r1$+OPX55;6N!??r1$+OS3m.D6N!WMr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8S -r1lm]Ue(ER6M$*nqg:C#KKA^_2Z&.gqh.#sF=R0@3r=:aqh.$,bbkF?s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s88rlr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8GnuEr1lm]S3m.L8GnuEr1lm]S3m.D6N!WMr1$+OS3m.L8GnuEr1lm]S3m.D6N!?? -r1$+OS3m.L8Go8Sr1lm]Ue(EZ8GoP_r2`TiXA&Pn9`1u(r2`TiXChC39`1tcr2`TiXA&Pf8GoP_ -r1lm]XA&Pf8Go8Sr1lm]XA&Pf8GoP_r2`TiXA&Pn9`1tcr2`TiXA&PV60r\Cqg:BiF=Qm?2Z&.g -qrGTns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7d6gsQ%q8Go8S -r2`TiUe(Eb9`1tcr2`TiXA&Q!;#I[sr2`TiZr$\-;#I[sr3T;uZr$\-;#I[sr3T;uZr$\-;#I[s -r3T;uZr$[r8Ge'$qh.$-KKB"k_>jQ8s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726 -i8j(Sgtq8UbKS5nbfTdi;#I[sr3T;uZr$\-;#I[s -r3T;uZr$\-;#I[sr3T;uZr$\%9`27or2`TiXA&Pn9`1tcr2`TiXA&Pn9`1tcr2`Tls8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<[_Gi8j(SgtpK/f#u:^`5T^6`Pod7`Q#R%r0:.WZr$\5<;aC.r4H#,]N"gA<;aC. -r4H#,]N"gA<;aC.r4H#,`**#ND#D4Sr5;b9`**#ND#D4Sr5;b9]N"gRKE(uOs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7d%m-iW_hXR1Bqh.$-KKB%49`27or3T;uZr$\-;#@V? -r3T;uZr$\5<;aC.r4H#,]PRMa=o>pKr5;b9`**#ND#D4Sr4HkD]N"gA<;aC.r4H#,]N"g9;#It* -r3T;uZr$\-;#I[sr3T;uZr$\-;#ICgr3T;uZr$\%9`27or2`TiZr$\-;#I[sr2`TiZr$\-;#I[s -r3T;uZr$\-;#It*r4H#,]PRMa=o>pKr5;b9`**#V=o?3@r4H#,]PRMa=o>p3r5;b9]N"gA<<*!u -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkLnYIg"bH:]XIEi2Y2hb -o8>NuM`1Hc3qJ7fr00MF]N"gA<;aC.r4H#,]N"gA<;aCFr4H#,]N"gAD#CqFr4H#,]N"g9;#It* -r4H#,Zr$\5<;aC.r4H#,]PRMa=o?3@r4HkD`**#V=o>pKr5;b9]PRMa=o>p3r5;b9]PRMa=o>pK -r5;b9]PRMa=o>pKr5;b9]PRMa=o>pKr4H#,]N"gA<;aC.r4HkDZr$\5<;aC.r4H#,]N"gA<;aC. -r4H#,]N"gA<9`)HdaZjkbg!c4]sP/RX/rFnSt)UQUnji_Unsm2O_"?:3;\@iluX`SHoUJ7.dV7, -o8>NnF=Qm?2Z%k]r/O)N'7)t4oCO1r/r00MFS3m.D6N!'6r1$+OS3m.<62[6>r1$+OS3m.D6N!??r1$+OS3m.L8Go8S -r1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8GoP_ -r1lm]XA&Pf8GoP_r2`TiUe(Eb9`1\Wr1lmTM`0pD.f4TQluX`SHoU_U2Y?_=s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mkj7crjQGI^kLnYIqSeTc,@T?r4Ij`XA&Q!;#ICgr2`TiXA&Q!;#I[sr2`TiZr$\%9`27o -r2`TiXA&Pn9`1tcr1lm]XA&Pf8Go8Sr2`TiUe(EZ8GhJas8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYI -fZ_O^bg")F`Pfa7`5T^JXIo*B2Z0pYr3T;uZr$\-;#I[sr3T;uZr$Y,Erf'r3T;uXA&PnB)K#4r2`TiXA&Q!;#I[sr3T;tZuZ)O;#It* -r3T;u]N"g9;#ItBr3T;uZr$\5<;a+"r3T;uZr$\-;#I[sr3T;uXA&Q!;#ICgr3T;uXA&PnB)J`( -r2`TiXA&Pf8GoP_r1lm]XA&Pf8GoP_r1lm]XA&Pn9`1\Wr2`TiUe(Eb9`1tcr3T;uZr$\-;#It* -r4H#,]N"gA<;X%Cr4H#,Zr$\5<;a+"r3T;uZr$\-;#I[sr4HkGs8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_>6n)39ig"bH4eCMXP](:hNuM`1Hc3p^rNnF=QX!.dV7,qh.#sF=R083:(`:luX`DF=R3Q62[fX -r2`TiXA&Pf8GoP_r1lm]Ue(Eb9`1\Wr2`TiXA&Pf8Go8Sr2`TiUe(EZ8Go8Sr1lm]XA&Pf8Go8S -r1lm]XA&Pf8Go8Sr2`TiXA&Pn9`1tcr2`TiXA&Pf8GoP_r1lm]XA&Pf8GoP_r1lm]Ue(Eb9`1\W -r2`TiUe(Eb9`1\Wr2`TiUe(EZ8GoP_r1lm]Ue(Eb9`1\Wr2`TiXA&Pf8GoP_r1lm]Ue(EZ8GnuE -r1lm]S3m.TB)ho2s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W"f9`0i4r/NuM`1Hc3qJ7fo8>NuM`10b2Y2hbqh.$%M`1Hc3qJ7f -o8>NuM`1Kl4oC7%r/^2# -r1lm]Ue(EZ8Go8Sr1-OZUe(ES9`1DIr1lm]S3m.L8Go8Sr1lm]Ue(EZ8GnuEr1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8GnuEqh.#sF=QX!.dV7,qg:C$N'74@s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-ilnkN:RTg"bH4eCN=.hYX[#r1$+OS3m.L8Go8Sr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8Sr1lm]XA&Pf8Go8Sqg:BiF=QX!.f6Sns8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+QpA*Y-kMYFag"bH^[>t0\8Go8Sr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8GoP_r1n3-XA&Pn9`1tcr2aN.Zr$\%B)K#4r2`ThHoU_U2V>[NfZ_O^bg")F`QQKM -`5T^=bg#@gYl(Rrr2aN.XA&Pn9`1tcr2`TiXA&Pn9`1\Wr2`TiUe(Eb9`1\Wr1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8Go8Sr1lm]XChM4s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2g"bH4eCN'tf#5PH`5T^6`Pod7`TE.\ -r1lm]XA&Pn9`1tcr2aN.XA&PnB)J`(r3T;uXChC;;#ID,r3T;uZr$\-;#I[sr3T;tZuZ)O;#I[s -r3T;u]PRWJs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o6m-ilnkLnYIdaZk"`4bMZ.f4TQ -r/O)XA&Pf8GoP_r1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8Go8Sr1lm]Ue(ES9`1GTr1-OZSP8sW8Go#Pr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8Sr1$+OUe(ER6N!WMr1$+OUe(ER6N!WMr1lm]Ue(ER6N!WM -r1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8GnuEr1lm]S3m.D6N!??r1$+OS3m.D6N!??r1$+Om)8r(s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s800Dqh.$.N'7)t4oC7%r/NuM`1Kl4oCO1 -r/r1$+OS3m.<62[6>r1$+OS3m.D6N!??r1$+OSP8sO6N!WMr1-OZS3m.44m[8? -luX`DF=QX!.dV7,qm:DDs8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2i8j(SgtpK/f$`(! -fZ_Okbffp[D>]njr1$+OS3m.D6N!??r1$+OS3m.D6N!BJr1$+OSP8sO6N!BJr1-OZSP8sP9`1GT -r1-OZSP8sP9`1GTr1-OZUe(EB4m[8?r+n1UF=R+AdJs7Hs8W-!s8W-!s8W-!s8W-!s8VHWp#tc2 -k1nbFgtqnGXSeSTr1$+OS3m.D6N!??r1$+OS3m.D6N!WMr1$+OUe(ER6N!WMr1-OZUe(EZ8Go8S -r1lm]XA&Pn9`1\Wr2`TiUe(B13;\(_fVEc8bg">Tc-+>UbKS5L`Pp$Ec,@T?bKS6/XChC+8GoP_ -r1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8Sr1lm]S3m.L8GnuEr1$+OUe(ER6N!WMr1$+OUe(EZ8GnuE -r9VB%s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\kj7crjQG4OhU9p)`5T^=bg")F`Pfa7aK268HoV&"8GoP_r1lm]Ue(EZ8GoQ$ -r2`TiXA&Pn9`1tcr2`TiXA&PnB)J`Br2aN.XA&PnB)J`(r2`TiUi$%*8Gqhms8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_&&kLnYIg"bH4eCN9rbN=dbluX`DF=R3a8Go8Sr1lm]Ue(EZ8Go8S -r1n3-Ue(EZ8Go8Sr2`TiXA&PnB)J`(r2`TiXA&PnB)J`(r1lm]XA&Pf8GoP_r1lm]Ue(EZ8Go8S -r1lm]Ue(EZ8Go#Pr1lm]SP8sO6N!BJr1$+OS3m.D6N!??r1$+OS3m.D6N!??r1$+OS3m.D6N!?? -r1$+OS3m.D6N!WMr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8Go8Sr1lm]Ue(EZ8GoP_r1lm]XA&Pf8GoP_ -r:J#/s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp$D;Ci8j(SgtpK/f$`(!`5T^HPC`(B.dV7, -luX`DF=QX!.dV7,r/^2#r2`TiUe(Eb9`1\Wr2aN.Ue(EbB)JGqr2aN.Ue(Eb9`1tc -r2aN.XA&PnB)JGqr2`TiUe(Eb9`1]'r2`TiUi$%29`1tcr1lm]XA&Pf8Go8Sr2`TiUe(EZ8Go8S -r1lm]Ue(EZ8Go8Sr2`TiUe(Eb9`1u(`k8mi['ZX*Unji_Unsl_V50o`Us+s3luX`DF=QX!.dV7, -luX`DF=QX!.dV7,luX`DF=R0@3rGdEr1lm]Ue(EZ8Go8Sr1$+OUe(ER6N!??r1-OZS3m.E9`1GT -r1$+OS3m.D6N!'6r1$+OSP8sP9`1GTr1lm]SP8sW8GnuEr1lm]S3m.D6N!??r1$+OS3m.D6N!?? -r1$+OS3m.D6N!??r1$+OPX55;6N!??r1$+OS3m.D6N!??r1$+OS3m.D6N!??r1$+OS3m.D6N!?? -r1$+OS3m.D6N!??r00MFS3m.D6N!'6r1$+OS3m.<62JO$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -qUDbHKKB!`3r=Rkqh.$-KKB!X3;\@iqh.$-HoV"V3r=Rkqh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rk -qh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rkqh.$%M`1Hc3qJ7fo8>O)N'7)t4oC7%r/NuM`1Kl4oC7%r/O)N'6cj2Z/Lsr/r00MFPX55362Zs5 -r00MFPX55362Zs5r00MFPX55362[!Fr00MFSP8sO6N!??r1$+NHoV%F3UCi;luX`DF=QX!.f%lI -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o.jQG[\gsX^'daZjreCMgec.L7`f>PB#PX55362Zs5 -r00MFPX55362Zs5r00MFPX55362Zs5r00MFPX55362Zs5r00MFPX55362Zs5r00MFPX55362Zs5 -r00MFF#iT'.-tauqg:C's8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQG4OhWE&(r1lm]PX55;6N!'6 -r00MFPX55362Zs5r1$+OPX55;6N!'6r00MFS3m.<62[6>r1$+OSP8sP9`1GTr1-OZSP8sP9`'K( -lte*4NE4]UbL4nkbKS5L`Pp$Ec.L7``5T^=bg">Tc02gEr1-OZSP8sP9`1\Wr1-OZUe(ER6N!?? -r1$+OS3m.D6N!??r1$+OUe(ER6N!??r1$+OS3m.D6N!??r1$+OS3m.TB)ho2s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n(HLQ -daZjkbg")F`Pfa7`5T^6`Ppu!^2#r1lm]Ui$%*8Go9# -r1lm]XA&Pf8Go8Sr1lm]Ue(EZ8Go8Sr2aN1s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)39i -i8j(LeCN'tf#u:^f:75gr1lm]SP8sW8Go#Pr1-OZSP8sO6N!BJr1lm]SP8sW8Go#P -r1lm]Ue(EZ8GoP_r1lm]Ue(EZ8Go8Sr1-OZUe(EZ8Go#Pr1-OZSP8sP9`1GTr1-OZPu7IL6N!*G -r1$+OS3m.<62[6>r00MFPX55362[9Ir00MFS3m.<62[6>r00MFS3m.<62[6>r1$+OS3m.D6N!?? -r1-OZSP8sP9`1GTr1-OZSP8sP9`1GTqTPi2m-"<=`qSi_r:J#$pA+ags8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\kj7crjQG4OhU9p)bKS5L`Pop"Vr00MFS3m.<62Zs5r1$+OPX55362Zs5r00MFPX55362Zs5 -r00MFS3m.<62Zs5r1$+OUi$/3s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VtUNuM`10b2Y2hbo8>O(KKB$i4o9mno8>NuM`1Kl4o9mn -r/Tc0r<*r/c\Vqh.$.AMN@k7+0T9daZjreCMgec-+>U -bKS5L`Pp$Ec-+>U`5T^I`4c)ED>]Var1-OZPX55362Zs5r00MFPX55362Zs5r00MFPX55362Zs5 -r00MFPX55362Zs5r00MFPX55;6N!'6r00MIs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(SgtpK/f#u:^bKS5L`Poj0]#V4` -qg:C$Ue(EZ8Go8Sr1lm]Ue(ES9`1GTr1$+OSP8sP9`1\Wr1-OZUe(ES9`1GTr1-OZSP8sP9`1GT -r0:.WSP8n0YlFb's8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(SgtpK/f#u:^bKS5O[B](?.dUt" -r,XmrS3m.E9`1GTr1-OZSP8sP9`1GTr1-OZSP8sP9`1GTr1-OZSP8sP9`1GTr1lm]SP8sW8Go#P -r1-OZSP8sP9`1/Qr0:.WSP8sG62Zs5r00MFN'7*'62Zs5r/s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkLnYI -daZjkbg")F`OidrkB98ZA0gMX.-kChlXV:,A0gJO,l<6Ur1$+OS3m.=;>ctYr1-OZSP8sP9`1GT -r1-OZSP8sP9`1GTr1-OZSP8sP9`1GTr1-OZPu7IL6N!*Gr00MFSP8sG62Zs5r00MFPu7IM9_kNC -f:7cYE -r00MFPX55362Z[)r00MFN'7*'62Z[)r/3W"1`r,XmqHoV"N3;\(_qg:C#HoV"N3;\(_qg:C#HoV"N3;\(_qg:C#HoV"N3;\@i -qg:C#HoV%F3W*qYr,XmrF#j,F3;\@iqh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rk -qh.$-KKB!`3r=Rkqh.$-KKB$i4oC7%qh.$-KKB$i4o9mnr/ -daZjreCMgec-k+mbKS5ZeCOGlMu8Msr/hU9p)daZjkbg">Tc-+>U`5T^=bg">Tc-+>U -m^/#PN'7)t4o:4=r/ctYs8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\kj7crjQG4OhU9p)bKS5Sbg">Tc.S&#lte*9A0h)34oCjEr1-OZSP8sP9`1/Q -r00MFSP8sG62Zs5r00MFPu7ID62[!Fr00MFPu7IE;>ctYr0:.WSP8sH;>cqNr0:.WPX55362Zs5 -r0:.WN'7)t4o:4=r/Uni7+6QlYr+n1eN'7)t4oC7%r00MFPX55362[!Fr00MFPu7ID62[!Fr0:.WPX52+ -lXV:,A0gJO,jStdlte*9A0h(o3W+h!r0:.WSP8sP9`1DIr0:.WPX554;>cYEr0:.WPX554;>cYE -r00MFPX55362Zs5r00MFPX554;>cYEr00MFPu7IM9`1,@gS9t.V50o`Unji_Unsm.Kk'FZ,jStd -lXV:(>Uo&M,jStdlXV:,A0gJO,jStdr,XmrPX55362Zs5r00MFN'7)t4oC7%qh.$.N'7)t4o9mn -r/3W*qYr,XmrF#j/>3W*qY -r,XmrF#j/>3W*qYr,XmrF#j,F3;dhXr,XmqHoV%F3W*qYr+n1TA0gJO,j/D^lXV:(>Uo&M,j/D^ -lXV:,A0gJO,lD^Dqh.$-HoV"N3;\(_qg:C#HoV"N3;\@iqg:C#KKB!`3r=Rkqg:C#KKB!`3r=:a -qh.$-HoV"V3r=Rkqg:C#KKB!X3;\@iqh.$-KKB!`3r=Rkqg:C#KKB!`3r=:aqh.$-HoV"V3r=:a -r,XmaA0g>C.dLUjlXV:,A0gJO,jStdk?KM&A0gJO,k&C+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!r1n3,HoV"N3;\(_qg:C#HoV"N3;\(_qh.$-KKB!X3;\@iqh.$-KKB!`3r=Rk -qh.$-HoV"V3r=:aqh.$-HoV"N3;\(_qg:C#HoV%F3W"1`r+n1eAMN:G+6?HDj]!>`<$14$+6QlY -lte*%S:9).^!bE]fZ_O^bg"eabNQ:2qODj.KKB!`3r=Rkqh.$-KKB!`3r=Rkqh.$.N'7&k3rFq" -qh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rkqh.$.N'7&k3rFq"qh.$.N'7)t4o9mnqh.#rA0gJO,jStd -lXV:,A0gMX.0'>Is8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(SgtpK/f$`(!daZk#bfe2Rc-+>U -fZ_P:SP8p.3;\@iqg:C#HoV"N3;\(_qg:C#HoV"N3;\(_qg:C#HoV"N3;\(_qh.$-KKB!`3r=Rk -qh.$-KKB!`3r=Rkqh.$.AMN@Q.d(%dlte*Em-"$7q<[_Gkj7crjQG4OhWVh\qh.$-KKB!`3r=Rk -r/cYE -r0:.WPu7IE;>c\Vr0:.WPX554;>cYEr00MDbbkF?s8W-!s8W-!s8W-!s8W-!o_/+IoC_&&kLnYI -daZjkbg">Tc,@T?a0i2=CaeXd./[m;r00MFPX554;>cA9r0:.WPX55+4oCO1r0:.WN'7*'62Z[) -r00MFPX55362[!Fr00MFPX554;>cYEr/UoVU0)TNAr,XmqHoV"N3;\@iqg:C#KKAsW=Smb4qg:C#KKB!X3;\@iqh.$-KKB!`3r=Rk -qh.$-NE,n84o9mnr/U`5T^-]Y1hWWp=1@j]!>`<$14$+6?HDk?KLu<$2!j3rFq" -r/C.dLUj -lXV:,A0gMX./SZYr/Uni7+6?HDlXV9o<%[HQ.,&/h -k?KM">UoYf1]31pr/Uni7+6?HDj]!>b>Uni7+6?HDj]!>`<$14$+513_k)EEo[&hlt^$MnL -qh.$-HoV"N3;\(_qg:C#HoV"N3;\(_qg:C#HoV"N3;dhXqg:C#HoV"N3;\(_qg:C#HoV"N3;\(_ -qg:C#HoV%F3W"1`r,XmqHoV"N3;\(_r,XmqHoV%F3W*qYr,XmqHoV%F3TjWsk?KM">UnoA.d(%d -j]!>b>UnoA.cjVOk?KM5`2s"=s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qe?Jjl3W"1` -r,XmrF#j/>3W"1`r,XmqHoV"N3;\(_qg:C#HoV"N3;\(_qg:C#HoV"N3;\(_qg:C#HoV"N3;\(_ -qg:C#HoV"N3;\(_r+n1TA0g89+6?HDj]!>b>UnoA.cjVOkB98GXImqjf%Jj8daZjreCN'tf$`(! -daZk#bfe2Rc03$KqODj.KKB!X3;\@iqh.$-KKB!X3;\@iqh.$-HoV"V3r=Rkqg:C#KKB!X3;\@i -qg:C#KKB!`3r=:aqh.$-HoV"V3r=Rkqg:C#KKB!X3;dhXk?KM&A0gJO,jStdlXV:;S9b/7s8W-! -s8W-!s8W-!s8W-!o_/+QpA*Y-kMYFag"bH;gtpK/f$`(!bKS5ZeCMgec.BnIqh.$-HoV"N3;\(_ -qg:C#HoV"N3;\(_r,XmqHoV%F3W"1`qg:C#HoV"N3;\(_qg:C#HoV"N3;\@iqg:C#KKB!`3rF%Z -j]!>`<$14$+6f#Unlqsi8j(LeCMgec,@T?`5T^6`Pp&`AER2I -lXV:#s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o.jQG4OhTO-f -bKS5L`PoI%]sP/RaG"-c<$14$+6?HDj]!>`<$14$+8f\)qh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rk -qi+VQKKB!`3r=Rkqh.$-KKB!`3r=Rkqg:C#KKB!X3;\@iqh.$-NE,,CS&W+P]=bhh]Y1qi]sP/R -X/rG1['Zm8XfJP*X/rG(XKAP)XfJP*Unsm.Kk'4D+6?HDj]!>`<$14$+6?HDk?KLu<$2$S1])hd -qh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rkqh.$.N'7&k3rFq"qh.$.N'7)t4o:4=r/V>qc1&PT;r+.V\AMO*o1&PT; -r+.V\Cbu!#1&PiDr+.V\Cbu!*1]2&Fr+n1eCbu!*1]2&Fr+n1eCbu!*1](E0j]!>`<$14$+6?HD -j]!>`<$14$+6?HDj]!>T<%[32+6QlYb`QGf`4aUKf$`(!bKS5Sbg"eabN,gRqh.$.F#j/>3W*qY -r,XmrF#j/>3W*qYqg:C$F#j/>3W*qYr,XmrF#j/>3W*qYr,XmrF#j/>3W*qYr+n1eF#j/71]2&F -r+n1eCbu!13W*\Lr,XmrF#j/>3W*qYr+.VE<$14$+6?HDj]!>`<$1:..cjVOj]!>b>Uni7+8<=C -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq>$7tr+n1eCbu!*1]2;Sr,XmrF#j/>3W*qY -r,XmrF#j/>3W"1`qg:C#FAD^\3;\(_qg:C$F#j,F3;\(_r,XmqHoV"N3;dhXr+n1TA0g89+6?HD -j]!>`<$1:..cjVOlXV:'Xde80kMYFai8j(ZjQG[\gtCK>g"bH4eCN'tf$`(!daZjkbg"eabLa\G -q36%"F#j,F3;\(_qg:C#HoV"N3;\(_qg:C$F#j,F3;\(_r,XmqHoV"N3;dhXqg:C#HoV%F3W"1` -qg:C$F#j,F3;\(_qg:C$F#iPs,iquIk?KM">UnoA.dLUjp[%)Cs8W-!s8W-!s8W-!s8W-!s7H$\ -kj7d%m-j)lgtCK>daZjreCMgec-+>UdaZjkbg#@aYkrf-qg:C$F#j/>3W*qYr,XmrF#j/>3W*qY -r,XmrF#j/>3W*qYr,XmrF#j,F3;[emqg:C#FAD^\3;dhXqg:C#HoV%81$)+Mj\6cW<$1>:Yi+U* -i8j(SgtqmtH2DtKr,XmqHoV%F3W"1`qg:C#HoV"N3;\(_qh.$-HoV"V3r=Rkqh.$-KKB!`3r45+ -qh.$-HoV"N3;\(_qh.$.F#iDg.d(tCp[%)0oC_JAp#tc2i8j(`gt^TTc-+>U -`5T^=bg")F`Rqi3qh.$-HoV"N3;\(_qfGU1HoV%F3W"1`r,XmqHoV"N3;\(_qg:C#HoV"N3;\(_ -qg:C#HoV"N3;\(_qKuEBKKAsW=TAF$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_&&kLnYIdaZjkbg")F`Pfa7`5T^8]XmHG./SZYqh.$.N'7&k3rFq" -qh.$-KKB!`3r=Rkqh.$-KKAm\@f(g>qh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rkr3_Rbs8W-!s8W-! -s8W-!s8W-!s6T@Mkj7crjQFt@f$`(!bKS5L`Pod7`Q,Bkk?KM">Uo&M,l<6Uqh.$-NE,k/3rFq" -qh.$-KKB$i4o9mnqh.$-KKB!`3r=Rkqh.$-KKB!`3r=Rkqh.$-KKB!`3r45+qh.$-KKAsW=Sn(X -k,k,m]Xl+q]">Vg]=bhh]Y1qi]t:qj['[3P]Y1hWWlU*Hk?KLi9-E:b)#I;\r+.V\F#j,F3;[em -qg:C#HoV%F3W"1`qg:C#FAD^\3;\(_qg:C#HoV"N3;S#)qg:C#HoV"N3;\(_qg:C#HoV"V3r=Rk -qh.$1s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_&&kLnYIdaZjkbg")F`Oidr]=bheXfC&R/`]A< -fh3IL9c_n[+QZQEj\6cnF#j,F3;\(_qg:C"Hs$8n3;\(_qKuEBHoV"N3;\(_qKuEBHoUtM=SmJ* -qKuECF#j,F3;S#)r,XmpHs$`<$14$+6?HDj]!?"AMO(83r45+qg:C#KKAsW=SmJ* -qg:C"Hs$8n3;\@iqKuEBKKB!X3;\@iqh.$-KKB!`3r=Rkr/T<%[32+6?HDj]!>T<%[32+5'UFj]!>`<$2$L1&H>Xqg:C#HoV"N3;[emr,XmrF#j/>3W*qY -r,XmrF#j/>3W!VYr+n1dCdIu81]2;Sr,XmrF#j/>3W*qYr,XmrF#j/>3W*qYr+n1eF#j/71](E0 -qc,$)7Mt2U)!".'j@1!>9-Dn\+QQ!/j@1!J<$2!;-i@d:r,XmrF#j/71]2;Sr+n1eCbu!13W*qY -r+n1eF#j/>3W*qYr,XmrF#j/>3W!nnr,XmrF#j/>3W"1`qg:C$F#j,F3;dhXqg:BqpA+ags8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,qS9b$D1&FruqckcN>V>nY0)Jm+qc,$@<@@ZD-i7.$qckcN>V>qc1&G3.r+.V\AMO'e0)T98 -r+.V\AMO*o1&PT;r+.V\AMO*o1&Fruj\6cW<$0dd+QZ<3W*\Lr,XmrCbu!*1]2;S -r+n1eF#j/71]2&Fr+n1eCbu!*1]2&Fr+.V\Cbu!#1&PT;r+n1eAMO*o1&PT;r+.V\AMO*o1&PiD -r+.V\Cbu!#1$)@Vj]!>`<$14$+5'UFj]!>`<$0dd+QZQEj]!>r\YfE,s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\prgJNCbu!#1&PiDr+.V\AMO+!1]1f=r+n1eAMO+!1]2&Fr+n1eCbu!*1]2&F -r,XmrCbu!13W*qYr+n1eF#j/>3W*\Lr+n1d>V>,;+6?3;j\6cW9c`=p+6?HDj]!>fJn4-!\a8q\ -m.9oEm-!U!n*'-,kj7crjQG4OhV$]@g"bH4eCN'tf$`(!daZjkbg"eabPA9)qg:C#CdIu?3W*qY -r,XmrF#j/>3W*qYr,XmrF#j/>3W*qYr,XmrF#j/>3W*qYr,XmrF#j/>3W*qYr,XmrF#j/>3W*qY -r+.VE<$14$+6?HDj]!>`<$1t,H2mpEs8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(Sgtp`>hU9p) -daZjreCMgec.L7`bKS6%U2p0Q3W*qYr,XmrCbu!13W*\Lr,XmrCbu!13W*\Lr+n1eCbu!*1]2&F -r+n1eCbu!*1]2&Fr+n1eF#j/71]2;Sr+n1N<$10j)!".'k?KM$e^rL0hY4RXr,XmrF#j/>3W*qY -r,XmrF#j/>3W*qYqg:C$F#j/>3W"1`r,XmqHoV%F3W!nnqg:C#HoV"N3;\(_qg:C#HoV%F3TX3^ -k?KM4gsQ0%s8W-!o_/+QpA*q=n*'-,g"bH;gtpK/f#u:^bKS5L`Pp$Ec-+>UbKS5L`Pq\DH2M_D -r,XmrF#j/>3W*qYr,XmrCbu!13W*qYr,XmrF#j/>3W*qYqg:C$F#j/>3W"1`qfGU1HoV%F3W"1` -r,Xmp`2s"=s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726 -i8j(SgtpK/f%A3i`5T^6`Pod7`RgW/r+n1dHoV"V3r=:aqh.$-HoV"N3;S#)qh.$-HoUtM=Smb4 -qh.$-HoV"N3;\(_qKuEBHoV"N3;S#)qg:C#HoUclq>^Kps8W-!s8W-!s8W-!o_/+Em-ilnkLnYI -daZjkbg")F`Q#R%`5T^:Mga\d+6?3;r+.V[HoV"N3;\(_qg:C"Hs$9!3r=RkqKuEBKKB!`3r=Rk -qh.$-HoV"V3r=:aqKuEBHoUtM=Smb4qKuEBHoV"N3;\@iq5on)bg">Tc,@T?]=bhq`PoI%]uI^r -['[3P]Y1qi]sP/R]=bhh]Y1hWWmbuefh3IK7MsfG)>dD]r+n1eF#j/>3W*qYr,XmrF#j/>3W*qY -r,XmqCdIu?3W!VYr,XmrF#j/>3W"1`r,XmrF#j,F3;[emr,XmpHs$8n3;g1Es8W-!s8W-!s8W-! -s8W-!s8VHWp#tc2i8j(LeCMgec,@T?]=bhh]Y1\Z[)m].j@1!>6Q+rS)!".'j@1!I7Mu#&-i@d: -r,XmqCdIu?3W*qYr,XmrF#j/>3W*qYqeSRrF#j/>3W*qYr,XmrF#j/>3W*qYr+n1eF#j,F3;URp -g"bH;gtpK/f#u:^bKS5L`PoI%]t:qj['[3I['[?FWiN5'X/rG(XKAP)Xe_eh\Vbdr<$0dd+QQ!/ -fh3I@9-E=q+5':0j]!>`<$2$S1])PZqg:C#HoV"N3;dhXqg:C#FAD^\3;\(_qg:C$F#j,F3;\(_ -qg:C"Hs$8n3;\(_qKuEBKKB!X3;\@iqg:C#KKB!`3ldYJUnsm.FC*Wn+PBC1fh3I@9-E=q+5':0 -j]!>T9-E=q+5':0qckcNHoV%F3W*qYr,XmrF#j/>3W*qYr,XmrF#j/>3W*\Lr+n1eCbu!*1]2&F -r+n1eCbu!*1]2&Fr+n1eCbu!*1]2&Fr+n1eCbu!*1[BX'[uH*_D,f1U);.@pfg?Y16Q+QE);.@p -j@1!>6Q+QE)<=7(j@1!I7Mu#&-i@O1r+n1eCbu!*1]2&Fr+n1eCbu!*1]2&Fr+n1eCbu!*1]2&F -r+n1eF#j/71]2;Sr+n1eCbu!*1]2;Sr+n1eF#j/>3VhIXs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vi[kPSmGqc,$@>V>nR-i6mk -qc,$@<@@ZK0)JWrqc,$@<@@ZK0)Jm+qc,$@>V>nY0)Jm+qckcN>V>nR-i7.$qckcOAMO*o1&G3. -j]!>_7Mt5]*TT[,fh3IL9c`:a)!+I4j\6cK9-E:b)!".'fi0QUXInG3kMYFakj7ckgtpuMkLnYI -g"bH;gtpK/f$`(!bKS5ZeCN9b[ek_=r+n1eAMO*o1&PiDr+.V\AMO*o1&PT;r+.V\AMO'e0)Jm+ -qckcN>V>nY0)Jm+qckcOAMO'e0)T98r+.V[>V>nY0)T98qckcOAMO*o1&PT;qckc89c`:a(thP) -fh3I@9-E=j*SF(.j\6cV7MsfO+RZUss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+TFV>qc1&G3.qckcOAMO'e0)T98r+.V\AMO*o1&PT;r+.V\Cbu!#1&PT;r+.V\Cbu!#1&PT; -r+.V\AMN:@*TT[,j@1!I7MsfO+QQ!/fg?Y19-EJ`II-Ruo_/+QpA+@Sq=OCVo_/+IoC_>6n*'-, -i8j(ZjQG[\gtCK>daZjreCN'tf%A3ibKS5Sbg"eQ[ebARr+n1eCbu!#1&PiDr+n1eAMO+!1]2&F -r+n1eCbu!*1]1f=r+n1eAMO+!1]2&Fr+n1eCbu!*1]2&Fr+n1eCbu!#1$)@Vj\6cK9-E=j*SF(. -j]!?%s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)39ik1nb?eCN'tf$`(!bKS5ZeCMgec-+>U -q36%"Cbu!*1]2&Fr+n1eCbu!#1&PT;r+.V\AMO*o1&PT;r+.V\AMO*o1&PT;r+.V\Cbu!#1&PiD -r+n1eCbu!*1]1f=j@1!>9-DnT);9aQfZ_P9HoV%?1]2&Fr+n1eF#j/>3W*qYr+n1eF#j/71]2;S -r,XmrF#j/>3W*\Lr,XmrF#j/>3W*\Lr,XmrF#j/>3W!VYqc,#s9-F)LXT/>#s8W-!s8W-!s7H$\ -o_/+Em-iW_hV$]@daZk#bfe2Rc,@T?bKS5L`Pod7`QQKMfY"ZjCbu!*1]2&Fr+n1eCbu!*1]2&F -r+n1eCbu!*1]2&Fr,XmrCbu!*1]2;Sr,XmrCbu!13W*qYr,XmrF#j/>3W*qYs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o.jQG4OhU9p)bKS5L`Pod7`Pfa7 -`k8n3W*qYr,XmqCdIu81](uS -r+n1eCbu!*1]!Ves8W-!s8W-!s8W-!s8W-!s8V`bq<726g"bH4eCMgec-+>U`5T^-]Y1qi^"QsS -fg?Y<7Mu&>1]2;Sr,XmrF#j/>3W"1`r,XmqHoV%F3W"1`qfGU1FAD^\3;\(_qfGU1HoV"N3;\(_ -qg:C#HoV"N3;\(_on[GHbfSPnhU9p)bKS5Sbg">Tc,@T?]=bhh]Y1qi]t:qj]=bhh]Y1\Z[(Eua -]=bhh]Y2CEIG$t*j@1!A4r!'I)#IPjr+n1eF#j/71](uSr+n1eCbu!*1]2&Fr+n1eCbu!*1](uS -r+n1eF#j,662YdaqeSRrF#j/>3W*\Lr,XmqFADl9s8W-!s8W-!s8W-!s7H$\m.9o.jQG4OhTO-f -`5T^-]Y1qi]sP/R\?2da9-E"R']__#gccG-4qud9']__#qckcOCbu!*1]2&Fr+n1eCbu!*1]2&F -r+n1eCbu!*1]2&Fr+n1eCbu!*1]2&Fr+n1eCbts)62YdaprgJ:m-ilnkLnYIg"bH4eCMgec,@T? -`5T^-]Y1\Z[&^:1X/rG(XKAP)XfJP*\XJc'@nPfO)!".'j@1!I7MsfO+QZ<3W*qYqg:C$F#j/>3W*qYr,XmrF#j/>3W*qYr,XmrF#j/>3W"1`r,XmqHoV"N3;dhX -qg:C#FAD^\3;\(_qg:C#KK>p*Ur[CPj@1!I7Mt2U(th7ofg?Y<7MsfG)<=7(j@1!I7Mu#&-iA$G -r+n1eF#j/71]2&Fr,XmrCbu!*1]2&Fr+n1eF#j/71]2&Fr+n1eCbu!#1&PT;r+n1eAMO*o1&PiD -r+.V\Cbu!*1](uSb`QG+St)=BS=H1@[rc*?7Mt2U(th7oj@1!I7MsoE']__#fg?Y<7MsoE']__# -j@1!`<@@]U1&PiDr+.V\AMO*o1&PT;r+.V\AMO*o1&PT;r+.V\Cbu!#1&PT;r+.V\Cbu!#1&PiD -r+.V\Cbu!*1]2&Fr+n1c`2s"=s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q5onY<@@ZD-i6mkqc,$@<@@ZD-i6mkqc,$@<@@ZD-i6mk -qc,$@<@@ZD-i6mkqc,$@<@@ZD-i6mkqc,$@<@@ZD-i6mkqc,$)7Mt2U(th7ofg?Y44r!'I(th7o -fg?Y44r!'I(th7ofg?Y2@lDu`bNS<]kj7d%m-j0)n*'-,kj7d%m-ilnkLnYIg"bH;gtpK/f$`(! -bKS5Sbg#sJFo5f*r+.V[>V>nY0)Jm+r+.V[<@@ZD-i6mkqc,$@<@@ZD-i6mkqckcN<@@ZD-i6mk -qc,$@<@@ZD-i6mkqckcN<@@ZK0)Jm+qckcN>V>nR-eUj)fg?Y<7MsfG)<=7(gccG57MsfG);.@p -gccGH\YfE,s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=rI]r+.V[<@@]U1&G3.qckcN>V>nY0)Jm+ -qckcN>V>nR-i7.$qc,$@>V>nY0)Jm+qckcOAMO'e0)Jm+r+.V\AMO'^-fd`6j@1!I7MsfG)<=7( -fg?Y44r!'I)!IfWo_/+\s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA+ILkNM:$i8j(ZjQG[\gtCK> -daZjreCN'tf$`(!bKS5_`4c"p=Su_br+.V\AMO*o1&PT;r+.V[>V>nY0)T98qckcOAMO*o1&G3. -r+.V[>V>qc1&PT;r+.V\AMO'e0)T98r+.V[<@?Qc']__#gccG57MsfG)>]kKs8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\p[%),m-ilnkLnYIg"bH4eCN'tf#u:^bKS5ZeCN6i^&*1:r+n1eCbu!#1&PT; -r+.V\AMO*o1&PT;r+.V\AMO*o1&PT;r+.V\AMO*o1&PT;r+.V[>V>qc1&PT;r+.V\AMO'^-epm" -j@1!I7Mu#E:AeZXr+.V\Cbu!#1&PiDr+.V\AMO*o1&PT;r+n1eAMO*o1&PT;r+n1eAMO+!1]1f= -r+n1eCbu!*1](uSr+n1d<@?He)>]kKs8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7ckgtpK/f#u:^ -bKS5Sbg">Tc-+>UfZ_OW`Pp$Ec1lp#r+.V\AMO*o1&PT;r+.VYANfs&1&PT;r+n1eAMO*o1&PiD -r+.V\AMO*o1&PT;r+.V\Cbu!#1&PiDr+n1eCbtk0_#OH7s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA*q=n)39ig"bH4eCMgec-+>U`5T^6`PoooSblD7r,XmrF#j/71]2;S -r,XmrCbu!*1]2&Fr+n1dCdIu81](uSr+.V[CdIu11&PiDr+.V\Cbu!#1&PiDr+.VYjPg.=s8W-! -s8W-!s8W-!s7H$\kj7crjQG4OhU9p)bKS5L`PoI%]u7n/aK25k6Q+ZC'`1lXr+n1eCbu!*1]2&F -r+n1eCbu!*1](uSr+n1dCdIu?3W*qYr,XmrF#j/>3W*qYr,XmqCdIu?3W!VYr,XmpHs$0nal)7C -i8j(Sgtp`>hU9p)bKS5Sbg")F`Pfa7]=bhs]XkJW[(Eua]=bhh]Y1\Z['[3I['[3^HtV4u'\Phk -gccG57Mu#-0)T98r+.V\Cbu!*1]2&Fr+.V\Cbu!#1&PiDr+.V\Cbu!*1]2&Fr+n1eCbu!*1]2&F -r+n1eCbu!*1]2&Fq5on]s8W-!s8W-!s8W,coC_>6n(HLQdaZjkbg")F`Oidr]=bha['[o-EnNet -gccG-4r!'I(u.:hj@1!J9ca.J1]2&Fr+n1eCbu!*1]2&Fr+.V\Cbu!*1]1f=r+.V\AMO+!1]1f= -qeSRrCbu!*1]2&Fr+.VZ`2rV)q<726kj7crjQG4OhU9p)bKS5Sbg!c4]t:qj['[3P]Y1AIXfJP* -X/rG6Km;9M/_iN(fg?Y44qu[;);.@pfg?Y44r!'I)#IPjr+n1eCbu!*1]2&Fr+n1eCbts)62YOT -r,XmrCbu!*1](uSr+n1dCdIu81]2&Fr+n1eCbts)62YOTqeSRrF#j/>3W*qYr,XmrF#j,>:?ROT -Unsm.D,f1U);ICigccG*6Q+ZC'\kkdfg?Y44qud9'\Phkqc,$AAMO+!1]2&Fr+n1eCbu!#1&PiD -r+n1eAMO+!1]1f=r+.V\Cbu!#1&PT;r+.V\AMO*o1&PT;r+.V\AMO*o1&PT;qeSR=R>m`.S=H1@ -S=Z7HV50WQS@W9-gccG57MsoE'\kkdgccG-4qud9'\kkdgccG-4qud9'\kkdqc,$AAMO*o1&PT; -r+.V\AMO+!1\kTFr+.V\AMO*o1&PT;r+.V\AMO*o1&PT;r+.V\AMO*o1&PT;r+.V[>V>qc1&7Z( -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA+Vt1&Fruqc,$@<@@ZD-i6mkqc,$@>V>nR-i7.$qc,$@>V>nR-i6mkqckcN<@@ZD-i7.$ -qc,$@<@@ZK0)JWrqc,$@<@?Qc'\kkdgccG*6Q+QE);.@pfg?Y16Q+QE);.@pgccG-4qu^\2WifM -kj7d%m-j<4p$D;Cp[%)0oC_JAp#tc2kj7d%m-ilnkLnYIg"bH;gtpK/f$`(!bKS5qP^WF/-i6mk -qc,$@<@@ZD-i7.$qckcN>V>nY0)T98qckcN>V>nY0)Jm+qckcN>V>nY0)JWrqckcN>V>nR-i6mk -qckcN<@@ZD-i7.$qc,$)7MsoE'\kkdj@1!A4qud9'\kkdj@1!A4r!'I)#::us8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!m.9oHS9b!:0)Jm+qc,$@>V>nY0)Jm+qc,$@>V>nY0)Jm+qckcOAMO'e0)Jm+ -qckcN>V>nR-i7.$qc,$@>V>nR-i6mkj@1!I7MsoE'\kkdgccG-4qud9'\kkdk_6n*'-,i8j(Sgtp`>hV$]@daZjreCN9rbKJ,S -f>PB#Cbtrn0)Jm+qckcN>V>nY0)T98qckcN>V>qc1&G3.r+.V\AMO*o1&G3.r+.V[>V>qc1&Fru -r+.V[>V>nY0)JWrgccG-4qu[;);ICifg?Y?>UodRs8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_G -kj7d#gt^TV>qc1&PT;qckc77MsoE'`1lXr+.V\AMO*o1&PT; -qckcOAMO*o1&PT;r+.V\AMO*o1&PT;r+.V\AMO*o1&G3.r+.V\AMO*o1&PT;r+.V\AMO'^-epm" -k\Nrms8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)iE\g"bH4eCMgec-+>U`5T^=bg")F`QQKM -`5T^ZZ`*b;62YOTqeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762PIar+n1dCdIu11&PT; -r+.V\AMO*o1&PT;qKuEFs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@M -kj7ckgtpK/f%A3i`5T^6`Pod7`Pfa7g1*&<>V>qj1]1f=r+.V\AMO*o1&GcQr+.V\Cbu!#1&GcQ -r+.V\Cbts)62YOTq.2_dCdIu81](uSqeSRqCdI`MD#aP8s8W-!s8W-!s8W-!s8W,coC_>6n(HLQ -daZjkbg")F`Pfa7`k8mp]Y2C>EnihmgccGL<@@]U1&PT;q.2_eAMO*o1&5BDr+n1eAMO+!1]2&F -r+.V\Cbu!*1]1f=r+n1eCbu!*1]2&Fr+n1eCbu!*1\\GWo_/+IoC_>6n)39ig"bH;gtpK/f$`(! -bKS5L`Pod7`Oidr]=bhh]Y1\Z[(Eua['[3P]Y1qi]st2Ee6YPr6Q+QE);.@pj@1!aAMO'u62YOT -qeSRqCdIr762PIaqeSRqCdIr762YOTr+.V\AMO*o1&PiDr+n1eCbu!*1]2&Fr+n1eAMO+(3WK-Z -s8W-!s8V`bq<[_Gi8j(Sgtp5uc,@T?]=bhh]Y1\Z['[3Ia]U^\4qud9'\kkdgccG-4qud9'`1lX -r+n1eCbu!#1&PT;r+n1bANfs-1]1f=q.2_eCbts)62PIar+n1dCdIu11&PT;q.2_eCbtpXH2mpE -o_/+QpA+(Hp#+ooi8j(LeCN'tf#5PH`5T^-]Y1\Z[&^:1['[39V52.A9&)TEgccG-4qud9'\kkd -fg?Y44qud9']i%0r+.V\AMO+!1]1f=r+n1eAMO+!1]1f=r+.V\AMO*o1&PiDr+n1eAMO+!1]1f= -r+n1eAMO+!1]1f=r+n1eAMO*o1&PT;r+n1eCbts)62Gt2\XJbYV50o`UpkGTgccG-4qu[;);.@p -gccG*6Q+ZC'\kkdfg?Y44r!*Q*W0J'r+.V\AMO*o1&PT;r+.V\AMO*o1&PT;r+.V\AMO'u62Y:K -qeSRrCbts)62YOTq.2_eCbu!#1&GcQr+.V\Cbt:0Cn.)eUnslWSt)=BS=H1@S=Z7LN/$"Y+PB+" -fg?Y16Q+QE);.@pfg?Y16Q+QE);.@pfg?Y44qu[;)>n&#r+n1dCdIr762>(TqeSRrCbts)62Y:K -q.2_eCbu!#1&GcQr+n1bANfs&1&5BDr+.VYANfs&1&GcQr+.VYP]d$+s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8'[8qc,$@<@@ZD-i6mk -qc,$@<@@ZK0)JWrqckcN>V>nY0)Jm+qckcN>V>nY0)Jm+qckcN>V>nY0)Jm+qckcN>V>2E.bR0, -fg?Y16Q+!7,2#=$fh3I@6Q+QM+PB+"fh3I@6Q+!7,2#pIk01s2m-j<4p%7tRo_/+QpA+ags8W-! -o_/+QpA+@Sq=j7=kj7crjQGI^kLnYIg"bH4eCN'tf#u:^pk*&Q>V>qc1&G3.r+.V[>V>nY0)Jm+ -qckcN>V>nY0)T98qckcN>V>nY0)Jm+qckcN>V>nY0)Jm+qckcOAMO'e0)Jm+qckcN<@@ZD-epm" -gccG*6Q+ZC'\kkdfg?Y44qu[;);.@pgccG9Z`*p(s8W-!s8W-!s8W-!s8W-!s8W,kpA+OFiVRFW -qckcN>V>qc1&G3.qckcOAMO'e0)T98qckcOAMO'e0)Jm+r+.V[>V>nY0)T98qckcN>V>qc1&G3. -r+.V[<@?Qc'\Phkfg?Y44qu[;);.@pfg?Y1>s%]Pq>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\o_/+Em-j0)n*'-,k1nbFgtp`>hU9p)bKS5ZeCMgec02L4qckcOAMO'e0)T98 -r+.V[>V>qc1&PT;r+.V\AMO*o1&PT;q.2_eAMO+!1]2&Fr+.V\AMO*o1&PT;r+n1eAMN:G+5'"! -fh3I@6Q+QE);.@pprgJQs8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n*'-,k1nbFgtp`>hTO-f -daZjkbg"eabKJ,SkbX@^Kps8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\kj7d%m-iW_hU9p)fZ_O^bg"eabJ_B=bKS5L`Pp$Ec-+>Upk*&QCdIr762PIa -qeSRqFADaT3W!nnr,XmqFAD^L62YdaqeSRrF#j,662PIaqeSRqCdIr762PIaqeSRoANfs&1&9nh -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYIdaZjkbg">Tc,@T? -`5T^:XJP#Q*W0J'r+n1dCdIr762PIaqeSRqCdIr762YdaqeSRqCdIr762PIaqeSRqCdIr762PIa -qeSRqCdIr762PIaq:sBts8W-!s8W-!s8W-!s8V`bq<726i8j(Sgtp5uc-+>U`5T^6`Pod7`Q#R% -e6YPr6Q+QE)>n&#qeSRrCbts)62PIaqeSRrCbts)62PIar+n1bANfs-1]1f=q.2_eAMO!l4oB+P -q.2_eAMO+!1\kTFqi+VUs8W-!s7H$\o_/+Em-j0)n)39ig"bH4eCN'tf#u:^`5T^6`Poj0]">Vg -`k8mi['[HX]sP/R]=bhh]Y1kEPhA\Pfg?Y16Q+QE)>dD]qeSRqCdIr762PIaqeSRqCdIr762PIa -qeSRqCdIr762PIaqeSRrAMO'u62Y:Kq.2_eCbtlu4oB+PqeSRnbJ=/Xs8W-!m.9o.jQG4OhU9p) -bKS5L`PoI%]sP/R['[3MPDe3['\Phkfg?Y16Q+QE);ICij@1!aCbu!#1&PT;qeSRrAMO!l4oB+P -qeSRqCdIu81](uSr+n1dCdIu81](uSqeSRrCbts)62Pb!o_/+\s8W-!s8W-!m.9o6m-ilnkLnYI -bKS5Sbg!c4]t:qj]=bha['[B$I+_INfg?Y16Q+QE);.@pfg?Y16Q+QE);.@pqckcOCbu!*1]2&F -r+n1dCdIu81](uSq.2_dCdIu81](uSr+n1bANfs-1\kTFr+n1dCdIr762PIar+n1dCdIl.4oB+P -qeSRrAMO*o1&GcQfo10OV50o`Unji_UnslqCg#FY)9G;kfg?Y16Q+QE);.@pfg?Y16Q+QE);.@p -qc,$ACbts)62PIaqeSRqCdIr762YOTqeSRqCdIr762PIar+n1dCdIr762PIar+n1bANfs-1](uS -qeSRrCbts)62Pb!Unsl_V50WQS=H1@W1'!ASt)=BS=H1@\n+[j6Q+!7,2#=$fg?Y16Q+QE);.@p -fh3I@6Q+QE);.@pfg?YS<@@Z[62YOTqeSRqCdIr762>(TqeSRrCbts)62PIaqeSRoANfs-1](uS -qeSRqCdIr762YOTqeSRrAMO*o1&?9"s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,lLhurg-i7.$qckcN>V>nY0)Jm+qckcN>V>nY0)Jm+ -qckcN>V>nY0)Jm+qckcN>V>nY0)Jm+qckcN>V>nY0)Jm+fh3I073]iB,0<7tfh3I073]iB,0<7t -a[IDq73]iB,0<7ta[IE.UQap.n+?>Lo_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2 -kj7crjQG[\gtCK>daZjreCN9rbPQ*AqckcN>V>nY0)Jm+qckcN>V>qc1&G3.qckcN>V>nY0)T98 -qckcN>V>qc1&G3.r+.V[>V>nY0)Jm+qckcOAMO'e0)Jm+qc,#s6Q+QE)9G;kfg?Y!73^DP);.@p -a[IE,6Q+!7,3H"ss8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mke+.s>V>nY0)Jm+qckcOAMO'e0)T98 -r+.V[>V>qc1&PT;r+.V\AMO*o1&PT;r+.V[>V>qc1&PT;qckcOAMO'^-eUj)fg?Y!73^DP);.@p -fg?Y!73^DP)Tc2!TH -r+.V\AMO*o1&5BDr+.V[CdIl.4o&YPqeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762>(T -r+n1dCdIl.4o9%]qeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762PIaqfGU1CdIr762PIa -qeSRqCdIr762>(Tq.2_N9c_n[+SaI.s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2 -g"bH;gtp5uc-+>UbKS5L`Pp$Ec-+>U`5T^=bg#:PS,7;&r,XmqFAD^T:A]-.qfGU1FAD^T:A]-. -qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.r,XmqFAD^L62YdaqfGU/P]d$+s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726g"bH4eCN'tf#u:^`5T^6`Pod7`Q3.-qckcNCdIr762PIa -r,XmqCdIr?:Af/nqfGU2F#j,>:Af/nqfGU2F#j,>:Af/nqfGU2F#j,>:Af/nqfGU1NE-#Ys8W-! -s8W-!s8W-!s8W-!o_/+Em-ilnkL.l2bKS5L`Pod7`Oidr]=bheXfC&I+N[%rj]!?!CdIr762PIa -r,XmqCdIu?3W!VYqeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdImPdJs7H -s8W-!s8W-!s7H$\m.9o6m-ilnkLnYIdaZjreCMRW`Pfa7`5T^-]Y1qi]t:qj]=bha['[HX]sP/R -]=bhuD,eVG,0<7ta%Io(73_VF62Ydar,XmrF#j/>3W*qYr,XmqCdIu?3W*qYqeSRqCdIr762PIa -r+n1dCdIr762PIaqeSRqCdIr762[Nqs8W,kpA+(Hp#+oog"bH-bg")F`Oidr['[3I['[3I['tEt -fg?Y16Q+QE);.@pfg?Y16Q,c$-i@d:qeSRrCbu!#1&GcQqeSRqCdIr762YOTqeSRqCdIr762PIa -qeSRqCdIu?3W!VYqeSRp`2s"=s8W-!s8W-!s8V`bq<726i8j(LeCN'tf#5PH`5T^-]Y1AIXiPTj -a%Io86Q+!7,0<7tfh3I073^DX+N[%rj]!?"Cbts)62PIaqeSRqCdIr762PIar,XmqCdIu?3W!VY -qeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762PIar+n1dCdIu81\kTFpk*%sUn+(TqeSR]MfGf!Xe_eh -UnslWSt)=BS=H1@S=Z7@St)^3I*"f$fg?Y!73]iB,0<7ta[IDq73]iB,0<7ta[IE,6Q+!7,2#=$ -qeSRqCdIr762PIaqeSRqCdIr762PIaq.2_dCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762PIa -qeSRrF#j:#s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8VoUiVQk4k?KM6<@?s7.f33nk?KM6<@?s7.d(%dk?KM">UnoA.cjVOl"!'B>UnoA.d(%d -k?KM$A3f<_.d:J/k?KLi<%Z3\,0*>+a[IDo9.ItT.`k+'a%Io&9.J%P,0*>+a%Io(73]fi<9W]; -o_/+QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n*'-,i8j(`gt^TV>h`4o8J:qckcN>V>h`4o8J:q.2_d>V>h`4o8J:r+.V[>V>h`4o8J: -r+.V\AMO'e0)Jm+r+.V[>V>2E.`k+'a[IDq73]iB,2#U3a[IDq73]iB,0<7tfg?Y@Z`*p(s8W-! -s8W-!s8W-!s8W-!o_/+Em-jb7FnoT3q.2_bANfj#4o&YPr+.VYANfj#4o&YPq.2_bANfj#4o&YP -q.2_bANfj#4o&YPq.2_bANfs&1&5BDj]!>D73]iB,2#U3a[IDq73]iB,0<7tg20[ds8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7d%m-j)lgtCK> -daZjreCMgec-k+mf>PB"CdIl.4o&YPq.2_dCdIl.4o9%]qeSRqCdIr762PIaqeSRqCdIr762PIa -qeSRqCdIr762PIaqeSRqCdIr76.nmRa%Io&9.ItT.`k+'a]U_*s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s6T@Mkj7d#gt^TUdaZk"`4bi"D#8$7qeSRqCdIr762PIa -qeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr762PIa -qeSRrF#j,>:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.r,XmqFAD^L62PIaqeSRqCdI/^+3?qq -kbX@?s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYIdaZjreCMgec-+>U -`5T^=bg")F`RrDX`5T^jK4=_":A]-.qfGU1FAD[[=Sm28qKuEAHs$5m=SdDIqKuEAHs$5m=Sm28 -qKuEBFAD^T:A]-.qfGU1FAD^T:A\ino_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -m.9o.jQG4OhU9p)bKS5L`Pod7`Pfa7a0i2*<%[u`62PIar,XmqCdIr?:Af/nqfGU1CdIr?:A]-. -qfGU1FAD^T:A]-.qfGU1FAD^T:AT??qfGU0Hs$8f:AN\ms8W-!s8W-!s8W-!s8W,kpA+(Hp#+oo -g"bH4eCMgec,@T?`k8n$`PoI%]uQP#a%Io&9.KgD0)K`cqfGU1FAD^T:A]-.qfGU2F#j,>:Af/n -r,XmrF#j/>3W!nnr,XmrF#j/>3W*qYqeSRrF#j/>3Ven^s8W-!s8W-!s8W-!s8W-!s8W-!s6T@M -kj7crjQG4OhU9p)daZjd`Pod7`Oidr]=bhh]Y1\Z[(Eua['[3P]Y1\Z[(2Wia[IE,9-D>F,2#U3 -k?KM6CdIr?:A]-.qfGU1CdIr?:Af/nqfGU1CdIr?:Af/nr,XmrF#j,662PIaqeSRqCdIr762Yda -qeSRpHs$FKs6T@Mkj7ckgtpK/f#u:^`5T^-]Y1qi]sP/R\?2dQ=Za_o,0<7tfg?Y!73]iB,0<7t -q.2_dCdIr762PIaqfGU2F#j/>3W*qYqeSRqFADaT3W!nnr,XmrF#j,>:Af/nqfGU2F#j#J@fQK. -s8W-!s8W-!s7H$\m.9o6m-ilnkLnYIdaZjd`Pod7`ODY9a]U^G9.ItT.`Y13a%Io&9.J%P,0*>+ -a%IoXANfp4:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:Af/nqfGU2F#j,>:Af/n -r,XmqCdIu?3W!VYqeSRqCdIr762PIaqfGTsV2r7$]rS6:Unsl_V50o`Unji_UnslrFCN?\,0<7t -a[IDq73]iB,0<7ta[IDq73]iB,0<7tj]!?"F#j,662YdaqeSRrF#j,662PIaqeSRqCdIr762PIa -qeSRqCdIr762PIaqeSRqCdIr762PIaqeSRqCdIr76-,jm\?2d,V50o`Un"$HW1'!ASt)=BS=H1@ -W1'!n73]iB,0<7ta[IDq73]iB,0<7ta[IDq73]iB,0<7ta[IDq73_V60)9'AqeSRqCdIr762PIa -qeSRqCdIr762YdaqeSRqFAD^L62PIaqfGU2F#j,662PIaqeSRqCdIr762PIao_/+\s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!pUR0a>UnoA.d(%d -k?KM">UnoA.d(%dk?KM6>V>2E.d:J/k?KM$A3f<_.d(%dl"!'B>UnuK5j)B%k?KM$A3f<_.`Y13 -\OIsg73]cF.`Y13\OIsg73]93-cne$a%Inm7OQ;H,0*>+fY"ZbpA+ags8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_>6n*'-,g"bH;gtpK/f$`(!l[i[1>UoP\4m?KB -k?KM$A3fBi5l4e=l"!'DA3g#s0'Qn3qckcD73]iB,0<7ta[IDo9.J%P,0<7ta[IDq73]cF.d!k&s8W-!s8W-!s8W-!s8W-!s8V`bq<$Jf -q.2_bANfj#4o&YPq.2_bANfj#4o9%]qeSRoANfp,62PIaqeSRqCdIr762>(TqeSRoANfj#4o&YP -q.2_d>V=,e,0<7ta[IDq73]iB,0<7ta[IDq73_THXT/>#s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+ILkNM:$i8j(Sgtp`>hV$]@daZjkbg">Tc/kIN -q.2_dCdIr762PIaq.2_bANfj#4o&YPqeSRoANfp,62PIaqeSRqFAD^L62PIaqeSRqCdIr762PIa -qeSR]>Umia,0*>+a%Io&9.J%P,58XFs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq<726 -k1nbFgtpK/f$`(!daZjkbg">Tc-+>Uf>PB!Hs$8^62PIaqeSRqCdIr762PIaqeSRqCdIr762Pb! -qeSRqFADaT3W!nnqfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-. -qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:?c:Sa%Io7KPphis8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mkj7ckgtp`>hUp&qbKS5Sbg")F`QQKM`5T^=bg")F`TX.Z -qfGU1FAD[[=Sm28qfGU0Hs$5m=Sm28qKuEBFAD^T:AT??qfGU0Hs$8f:AT??qKuEAHs$5m=SdDI -qfGU0Hs$3@MuWhWs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)39idaZjreCMgec,@T? -`5T^6`PooOEr0)oqfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU0Hs$8f:AT?? -qfGU0Hs$5m=Sm28on[Gas8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQFt@f#u:^bKS5L`PoI%]t:qj -`5T^;HtUJm.`Y13qeSRpHs$8f:AT??qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qeSRqFAD^T:A]-. -qeSRqFAD^T:A]-.qfGU/gsQ0%s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2i8j(SgtpK/f$`(! -`5T^-]Y28&`O*"Z]=bha['[HX]sP/R]=bhh]Y2?q9$'LGa%Io(73]cF.f4$JqfGU1FADaT3W!nn -qeSRqFAD^L62Pb!r,XmqFAD^T:A]-.r,XmqFADaT3W*qYqeSRqFAD^T:Af/nq;gMum-ilnkLnYI -bKS5L`PoI%]sP/R['[3I['[?,MoeC3a[IDq73]iB,0<7ta[IE,9-F+J62YdaqfGU1FADaT3W!nn -qeSRqFAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qS]K8s8W-!s8W-!s8W,kpA+(Hp#+oo -g"bH4eCMgec,@T?[sVr29.ItT.`Y13a%Io&9.ItT.`Y13a%Io8>s%t*3Vn,*qfGU0Hs$8n3;S#) -qfGU1HoV"F:AT??qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU2F#j,>:Af/n -qfGU/P]bTr]u7n/['[3I['ZX*Unji_Unsl_V50o`Upb)Ba[IDq73]iB,0<7ta[IDq73]iB,0<7t -a[IDq73^hm+8^.TqeSRqCdIr?:A]-.r,XmqFADaT3W!nnr,XmqFAD^L62YdaqeSRqCdIr762PIa -qeSRrF#j,662Pb!pk*%f]Y1\Z[&^:1Unsl_V50WQS=H1@S=Z7@St)=BS@Vupa[IDq73]iB,0<7t -a[IDq73]iB,0<7ta[IDq73]iB,0<7tj]!?!CdIr762PIaqeSRrF#j,662Pb!qeSRqFAD^L62Pb! -qfGU1FAD^L62Pb!qfGU1FAD^T:A]-.qeSRqCdImXiW&rXs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+!$?KYQCfj-]&>UnoA.d(%dfi0QfA3f<_.bS)h -fj-]&>UnoA.d(%dfj-](A3fBi5hTF)k?KM$A3egR46^9@a%Inm7OQ;H,.U/j\OIsW7OQ;H,.U/j -a%Inm7OP`9-b2\o\OIsfD,g0$q>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\kj7d%m-ilnkMYFag"bH4eCN9ZXQa7\k?KM6>V>8O5l4e=l"!'DA3fBi5l4e= -l"!'TANf9g5j;fEqckc(TqeSRoANfp,62>(TqeSRoANfp,62>(Tq.2_bANfj#4kWINa[IDo9.J%P,0*>+ -a%Io&9.J%P,04V#s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_>6n)39ik1nb?eCN'tf$`(!fZ_Oj`4c%a62>(TqeSRoANfp,62PIa -qeSRqCdIr762PIaqeSRqCdIr762PIaqfGU1CdIr?:A\inqeSRqFADXC4m?KBa%Io&9.J%P,0*>+ -a%Io6Ht*-Us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-j0)n)iE\g"bH4eCN'tf#u:^ -daZjkbg"eabLj2'qfGU1FAD^T:A\inqfGU1CdIr762Pb!qeSRqFAD^T:A\inqfGU1CdIr?:A]-. -qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU0Hs$8f:A]-. -qfGU1FAD^T:A]-.qeSR=9.Itl9)nqks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA+(Hp#b&bg"bH4eCMgec-+>UbKS5Sbg">Tc,@T?bKS5_`4bqu@etISqfGU0Hs$8f:AT?? -qfGU0Hs$8f:AT??qKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=Sm28qfGU5s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7ckgtpK/f%A3ibKS5L`Pod7`Q#R%a]U_&FAD^T:A]-. -qfGU1FAD^T:A]-.qfGU1FAD^T:AT??qfGU0Hs$8f:A]-.qfGU0Hs$8f:AT??qfGU0Hs$6pYlFb' -s8W-!s8W-!s8W-!s8W,coC_>6n(HLQdaZjkbg")F`Pfa7`5T^-]Y2=t]!cEX[o5?.9.Kg\:AT?? -qKuEBFAD[[=SdDIqfGU0Hs$8f:A]-.qfGU1FAD^T:A]-.qfGU1FAD[[=Sm28qfGU1FADU`@fQK. -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n)39ig"bH4eCMgec,@T?]=bhs]XkJW[(Eua -['[3P]Y1\Z['[3I\V5:<9JFL[.`Y13a[IEi8j(LeCMgec,@T?]=bha['[3I['[3I -[rc)i7OQ;H,.U/ja[IDq73]iB,3N2\qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-. -qeSRqFAD^T:A]-.qfGU0Hs$FKs8W-!s8W-!s8V`bq<[_Gi8j(ZjQG4OhTO-faK25LAP]d63k.j; -[o5>t9JEqS3k&$Ka%Ink;`a/R5l,k1qKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEBFAD[[=SdDI -qKuEAHs$5m=SdDIqKuEAHs$8f:AT??qfGU1FAD^T:A]-.qfGU+Lhu:fYh@ggbKS5L`PoI%]rS6: -Unsl_V50o`Unji_UnslrFCMdM-b2\oa[IDa7OP`9-cne$\OIsg73]93-cne$fi0R#FAD^T:A]-. -qfGU1CdIr?:A]-.qeSRqFAD^T:A\inqfGU1FAD^L62Pb!qfGU1FAD^T:A]-.qfGU1FAD(bICm/* -['[3@XKA:pUnji_S=Z7@St)aJQ(4G9S=Z7MFCi!P-b2\o\OIsW7OP`9-b2\o\OIsg73]93-b2\o -a[IDa7OQkg/c0?MqeSRqCdIr762Pb!qeSRqFAD^L62Pb!qfGU1FAD^L62Pb!qfGU1FAD^T:A\in -qfGU1CdIr?:A]-.q:sBts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7ta7fk!\,>s$_F45!n$fj-\m>s%4S.bS)hfi0Qd>UnE445!Rbfj-\m>s%4S.bS)h -fj-](A3egR45!n$fj-\m>s#Sd-b2\o\OIsW7OP`9-b2\o\OIsW7OP`9-b2\o\OIsW7OP`9-ePf- -o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_G -kj7crjQG4OhV$]@daZk3L2?*b5j;fEl"!'DA3f<_.d:J/l"!'DA3f<_.d:J/l"!'DA3fBi5j;fE -l"!'DA3fBi5j;fEl"!'DA3fBi5j;fEfi0QD9.IJA-cne$\OIse9.IJA-b2\o\OIsW7OP`9-ePf- -s8W-!s8W-!s8W-!s8W,kpA*q=n)oUKq.2_RA3fBi5j3#Xl"!'CCeX)(5j3#Xk\NrVCeX)(5j3#X -k\NrVCeX&/9^$:dl"!'VCdI;r5l5@`l"!&h9JFRW,.L<#\OIse9.IJA-b2\oa%Io7XIoOms8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -m.9o6m-iW_hV$]@g"bH4eCMgec-+>Ul'-VnCdIl.4o9%]qeSRoANfp,62>(TqeSRqCdI9$9`&Wl -qeSR^CeX_B62PIak\NriCdIr?:A\ink\NriCdH*7._&/+a%Inl9JEtM0ZdHZs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mkj7d%m-iW_hV$]@daZjreCMgec-+>UbKS5Sbg#@JO8F#o -qfGU1FAD^T:A]-.qfGU1FAD^T:A\inqfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qKuEBFAD[[=SdDI -qKuEAHs$8f:AT??qfGU0Hs$5m=Sm28qKuEAHs$5m=Sm28qKuEBFAD[[=Sm28qKuEBFAB;D3ltMd -q;gN7s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o6m-iW_hU9p) -daZjkbg">Tc,@T?`5T^6`Pp$Ec,@T?kbX@;FAD[[=SdDIqKuEBFAD[[=SdDIqKuEAHs$5m=SdDI -qKuEAHs$5m=SdDIpk*&PHs$5m=SdDIqKuEAHs$5m=SKA's8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-ilnkLnYIdaZjkbg")F`Pfa7`5T^:Mgabn.f4<_qKuEBFAD[[=Sm28qKuEAHs$5m=SdDI -qKuEBFAD[[=Sm28qKuEAHs$8n3;[emqKuEAHs$8f:ABHNs8W-!s8W-!s8W-!s8W-!s8V`bq<[_G -i8j(SgtpK/f#5PH`5T^-]Y1qi]u7n/]=bht>YV\+3ltMdpk*&PHs$5m=SdDIqKuEAHs$5m=SdDI -qfGU0Hs$5m=SdDIqKuEBFAD[[=Sm28qKuEAHs$5m=SdDIr3_Rbs8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!m.9o.jQG4OhU9p)daZjd`Pod7`Oidr]=bha['[HX]sP/R]=bha['[oMS[h3; -a%Inl9JFL[.`Y13qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-. -qfGU1FAD^T:A]-.q5on>jQG4OhU9p)`5T^-]Y1qi]sP/R['[3@XKB'>7EItB\4eTe7OP]>0Y'Y# -\4eURCdIr?:A]-.qfGU1FAD^T:AT??qKuEAHs$8f:A]-.qKuEBFAD^T:A]-.qfGU1FAD^T:AM#V -s8W-!s8W-!s6T@Mm.9o.jQGI^kL.l2bKS5?NJ4i?3k.j;\4eTs9.IGF0Xse1a%Inl9JFRk48X+p -qKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDI -qKuEAHs$5m=SdDIqKuEAHs$3HPi1Wck1nbFgtp5uc,@T?['[3@XKA:pUnji_Unsl_V50o`UpkGT -\OIsW7OP`9-b2\o\OIsW7OP`9-b2\o\OIsW7OQkg/c0WbqfGU1FAD^T:A]-.qfGU1FAD^T:A]-. -qfGU1FAD^T:A]-.qfGU1CdIr?:A\inqfGU1FAD^T:A]-.fW:^``PoI%]sP/RX/rG!V50WQS=H1@ -S=Z7@St)=BS>V$f\OIsW7OP`9-b2\o\OIsb2E86:-b2\o\OIsW7OP`9-b2\o\OItDCdIr?:A]-. -qfGU1CdIr?:A\inqfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qeSRqFADV\aoDD@ -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,_Z`)A[7+kj- -e6YPm?:s$_F45!n$fj-\m>s$_F45!n$fj-\m>s$_F45!n$fj-\m>s$_F43'uD -\OIsW7OP`9-b2\o\OIsD6n>f;-`09^\OIsD6n>f;-`09^\m7bgm-juSs8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+ILkMYFai8j(SgtpK/f%@'r -l"!'4AOkuq5h'+.l"!'DA3fBi5j;fEk\NrWA3fBi5j;fEl"!'DA3fBi5j;fEl"!'DA3fBi5j;fE -l"!'DA3egR41Is<\OIsV9JEtM0Y'Y#\4eTe7OP]>0Xse1\4eU/XIo.Yq>^Kps8W-!s8V`bq<[_G -k1nbUFB7UA9^-(Qk\NrWA3g$.60VoFk\NrVCeX)(5j3#Xk\NrVCeX&/9^$:dl"!'CCeX&/9^$:d -k\NrWA3egR41Is<\4eTd9JF"H-b)i(\4eTd9JEqS3qr"(s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vi[kNM:$kj7d#gt^ThU9p)daZjkbg"Scf%A3ibKS5qP^WFN:A]-.qfGU1FAD^T:A]-. -qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qKuEAHs$8f:AT??qfGU0Hs$8f:AT??qKuEBFAD[[=SdDI -qfGU0Hs$5m=Sm28qKuEBFAD[[=SdDIqKuEAHs$8f:<-U6\4eU?Z`*p(s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726k1nbFgtpK/f%A3i`5T^=bg">Tc-+>U -`5T^=bg"eQ[ebARqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDI -qKuE?K4=\)=SdDIqKuE1HsZjQs8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2g"bH4eCMgec-+>U -`5T^6`Pod7`Q)I\qfGU0Hs$8f:AT??qKuEAHs$5m=Sm28qKuEAHs$5m=SdDIqKuEAHs$5m=SdDI -qKuEAHs$5m=SdDIqKuE?bJ=/Xs8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkL.l2daZjd`Pod7`Q#R% -`5T^-]Y2@nZ+!Xm[o5?;?:=R@@etISqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEBFAD[[=SdDI -qKuEAHs$5m=Sm28qKuEAHs$4*iW&rXs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_G -i8j(SgtpK/f#u:^`5T^-]Y1qi]t:qj['[3P]Y1\Z[(Eua]=bht>YV_%0ZQg9\4eTs9.Kg\:AT?? -qfGU0Hs$5m=Sm28qKuEAHs$8f:AT??qKuEAHs$5m=SdDIqKuEAHs$8f:AT??qKuEBFADY.Mr<[Z -g"bH-bg")F`Oidr['[3I['[3I[(2Wi\4eTd9JEtM0Xse1\OIsV9JFL[.f4<_qKuEBFAD[[=SdDI -qKuEBFAD[[=Sm28qKuEAHs$8f:AT??qKuEAHs$8f:AT??qfGU/gsQ0%s7H$\m.9o.jQGI^kLnYI -daZjg[BZZA<4GUU\4eTd9JEtM0Xse1\4eTd9JEtM0\U"pqKuEAHs$5m=SdDIqKuEAHs$/r@etIS -pk*&PHs$/r@etISpk*&PHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$3/Fnsh? -o_/+Em-ilnkL.l2bKS5L`PoI%]rS6:Unsl_V50o`Unji_UnsldFChsU0Xse1\4eTd9JF"H-b)i( -\OIsW7OP]>0Y'Y#e6YQ?FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-.qfGU1FAD^T:A]-. -qfGU1FAD^T:A]-.qfGU1FACH+]u7n/]=bha['Zm8Xe_ehUnslWSt)=BS=H1@S=Z7LN/"2t/#G]b -`&9TP6n>f;-`09^VF2rQ2E7R%/%J+sVF2rF7OP`9-g>/,k\NriCdI9$9`&p,k\NriFAD%99`&p, -k\NriFAD%AO2e6YPm?:<:L7+kj- -e6YPr>s$_F44IS)fj-\`<*7gZ44IS)bZ%]t<%ZU+7*JV4fj-\M7OP'$/#G]bVF2r36n>-&/%J+s -VF2r36n>f;-`09^VF2r36n?KDAG#Tks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o:oC_>6n(HLQg"bH:bfeIU;qY_Pl"!'4AOkEb8(hHD -fk!\,AOkEb8(qfVfk!\;CeWMn8(qfVk\NrGAOks#9\EuIk\NrGAOkuq5hT^=fj-\L9JEtM0Xse1 -\4eTd9JEtM0Xse1\4eTd9JEtM0\EJ!s8W,kpA+@Sq=OCVo_/+IoC_4`_WYf0k\NrVCeX&/9\O>[ -k\NrHD,BG49^-(Qk\NrVCeX&/9^$:dk\NrVCeX&/9^$:dk\NrHD,BG49\O>[\4eTd9JEtM0Xse1 -W(f.Z9JEqS3k.j;aa@b$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n(HLQg"bH4eCN'tf#u:^bKS5rHsZ#Q9^$:d -k\NrVCeX&/9^$:dk\NriFAD^T:?ZLfqfGTsFB7UA9`&p,k\NriFAD%At9JEqS3k&$KgS9u4s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_>6n)iE\ -g"bH4eCN'tf$`(!bKS5Sbg">Tc.L7`kDO?VHs$5m=SdDIqKuEAHs$5m=SdDIqKuEBFAD[[=Sm28 -qKuEAHs$8f:AT??qKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDI -qKuE/FB86c=R(9?fk![_;``!XIK0?Is8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_>6n(HLQdaZjreCMgec-+>U`5T^JbfdrD`QQKM`5T^WS;6rg=SdDI -qKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuE?K4=\)=SdDIpk*&PHs$5m=SdDIqKuE?K4=\)=SdDI -prgJQs8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQG4OhU9p)fZ_OW`Pod7`Pfa7a-hq->YY'B=SdDI -qKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuE?K4=\)=SdDIpk*&PHs$/r@etISpk*&PHs$/r@fQK. -s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2g"bH;gtp5uc,@T?`5T^-]Y1qi]t:qj\?2d?;`_Bd3ne(% -pk*&NK4=V.@ebRbqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$/r@etIS -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n)39idaZjkbg")F`Oidr -]=bha['[HX]sP/R]=bha['[3I['t-d\4eTd9JEtM0XjtAk\NrhHs$5m=SdDIqKuEAHs$5m=SdDI -qKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=SdDIq36$TgtpK/f#u:^`5T^-]Y1qi]sP/R -['[3=N/"i90W7]'\4eTd9JEtM0Xse1a]U_%Hs$5m=SdDIqKuEAHs$5m=SdDIqKuEAHs$5m=Sm28 -qKuEBFAD[[=Sm28qKuEAHs$&tD"RGso_/+Em-ilnkMYFadaZjkbg!VVKr7m7\4eTT9f9FS0W7]' -\4eTd9JEtM0XjtAk]Bl%Hs$5m=SdDIqKuEAHs$5m=SRMXqKuE?K4=V.@d8>Ipk*&NK4=\)=SRMX -pk*&NK4=\)=SRMXqKuE?K4=\)=SRMXqKuEAHs$&tD#2)Os8W-!s8V`bq<726i8j(LeCMgec,@T? -['[3I['ZX*Unji_Unsl_V50o`UoA327Z1(W(f.Z9JEtM0W7]'\4eTd9JFRk48O>, -qKuEAHs$5m=SdDIqKuEAHs$5m=SdDIqKuEBFAD%A-&/#G]bVF2r36n>-&/#G]b -VF2r36n>f;-`09^VF2rf>s%q*:?ZLfk\NrVCeX_J:?ZLfk\NrVCeX&7YW73.],TaVF2r36n>-&/#G]bVF2r36n>-&/#G]bVF2r36n>-&/#G]b -daZkJs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq=OCVkj7crjQG4OhU9p)ert[[g20[MCeVlZ9"7PK\4eTT9f9CY3iGb1[o5>s;`^jO27HLF -Vc5n5XInkNp%7tRo_/+QpA+(Hp#tc2kbX?oD,Ar':tfb_g20[?D,Ar':tfb_g20[?D,Ar':tfb_ -g20[>AOkHk:tfb_g20[?D,Ar';!;^hg20[>AOj7(0W.l7W(f.J9f9CY3iGb1W(f.J9f:S9[f?C- -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\kj7d%m-iW_hV$]@daZjreCMgec.f"Wk]BkhFB7UITc,@T?bKS5L`Pp$Ec,RE-pk*&NK4=\)=SRMXpk*&NK4=\)=SRMX -pk*&NK4=V.@ebRbpk*&NK4=\)=SRMXpk*&NK4=V.@ebRbpk*&PHs#TeD#aP8s8W-!s8W-!s8W-! -s8W,coC_>6n(HLQdaZjreCMRW`Pfa7`5T^6`Po<.@d%o7pk*&NK4=V.@ebRbpk*&NK4=V.@ebRb -pk*&NK4=V.@ebRbpk*&NK4=V.@ebRbpk*&NK4=V.@ebRbqS]K8s8W-!s8W-!s8W-!s8W-!s8W-! -kj7d%m-iW_hU9p)bKS5N]Xl&#`Oidr`5T^-]Y2@nZ+!Xm[o5?AD,C"[@ebRbpk*&PHs$/r@ebRb -pk*&NK4=V.@etISpk*&NK4=\)=SRMXpk*&NK4=V.@ebRbpk*&KLi!+ks8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o.jQG4OhU9p)`5T^6`Poj0]">Vg['[3P]Y1\Z[(Eua -['[3LHtp/b0XjtA[o5>t9JG.28,@U8qKuEAHs$5m=SdDIqKuEAHs$5m=SRMXqKuE?K4=V.@ebRb -pk*&NK4=V.@ebRbpk*&PHs$&tCt[V#daZjd`PoI%]sP/R['[3I['[3I['t-dW(f.Z9JED>27Q=6 -W(f.J9f:U88,.^GqKuEAHs$5m=SdDIl?lq7Hs$5m=SdDIpk*&PHs$5m=SdDIqKuEAHs$5m=SdDI -q5'#9oC_>6n)39ig"bH4eCM[JZ*nIOW(f.J9f9FS0W%5gW(f.Z9JED>27Q=6a(%aIl?lq5K4=+n?MK.^ -l[i[5Jn4Y/@eljYo_/+\s8W-!s8W-!o_/+Em-ilnkLnYIdaZj[]Y1qi]rS6:Unsl_V50o`Unji_ -UnsldFChsU0W7]'W(f.J9f9FS0W7]'W(f.Z9JED>25j5,a';@&FB7UI-&/#G]bVF2r36n>-&/#G]bVF2r36n>-&/&tmh -k\NrVCeX&7YW7D:!$O"a';?\=ZaZ/:!$O"a]U^I=Za`.43:Vea]U^G>YW=C43:Ve -\4eTR6n>-&/#G]bVF2r36n>-&/#G]bVF2r36n>-&/#G]bVF2rGAP_slq>^Kps8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2 -k1nbFgtp\r[b54^g20[?D,Ar':tfb_g20[?D,Ar':tfb_g20[?D,Ar':t'G`g20[?D,Ar':tfb_ -drJC@D,Ar':t'G`aDFnc;`^gU5IXQPVc5mi;`^gU5GqIF[o5>c<'Rij3nUg@m.9oBpA+(Hp$D;C -m.9o6m-iVdGhR"2g20[?D,Ar':tfb_g20[?D,Ar':tfb_g20[AE`Cb0:tfb_g20[?D,Ar':tfb_ -g20[?D,Ar':qBq$W(f.J9f9FS0W7]'W(f.J9f8kD25j5,q;gN7s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq<726 -k1nbFgtpK/f$`(!bKS5`]XHU9<7l=uk]BkXF^4-PqAVc5n\s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7ckgtp`>hU9p)daZjreCN9rbKJ,SbKS5`XIng1AEnPK -qKuE1HsZYs=R(9?l?lq'HsZ)c?KuoEl?lq'HsZ)c?KuoEl?lq'HsZ)c?KuoEl?lq'HsZ)c?KuoE -l[i[5Jn42!AGCddl?lq(Jn4Y/@dAVVl[i[4HsZ#YU -bKS5L`Pp$Ec,@T?bKS5L`Ppr/L\QL2k_Il[i[DHs#Z]?M]%OqKuEAHs$5m=SdDIqKuEAHs#UFYi+U*i8j(SgtpK/f!pp% -Vc5mZ9f8kD25j5,W(f.J9f8kD25j5,[o5?AD,C(V=R(9?qKuE1HsZ)c?MK.^l?lq(Jn4.o?MK.^ -l[i[5Jn42!AF"hXl[i[5Jn42!AEnPKl[i[5Jn42!AF"hXl[i[5Jn42!AG(appsdFcs8W-!s8W-! -s8W-!s8VHWp#tc2i8j(LeCMgec,@T?['[3I['ZX*Unji_Unsl_V50o`UoAHIW(f.J9f8kD25j5, -W(f.J9f8kD25j5,W(f.Z9JFRk46h3"pk*&@HsZ)c?KuoEl?lq'HsZYs=R(9?k]BkhFB7UI-&/#G]bVF2r36n>-&/#G]bVF2r36n>-&/#G]bVF2rE9JG[H9\O>[k\NrVFB7+4;!;^h -k]BkhCeWW)<9SF)gi?BXFB71;<8;Lngi?BJD,B#.<8;Lng20[MFB7YVfDkmNs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!fY"Z(>t)e=:!$O"\m7bH=ZaZ69"J:s -a]U^I=ZaZ69$(3ta]U^I=ZaZ/:!$O"a';?\=ZaZ/:!$O"a]U^:>t(VY/#G]bVF2r36n>-&/#G]b -VF2r36n>-&/#G]bVF2r36n>-&/'*p-o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYIdaZjiHtV,D8(2KW -a(%`qD,A;j<8)1caDFo1D,A;j<7>kdaDFo1D,A]%;qc(bdrJC@D,A]%;quCmfQCHSE`C+s<2W\[ -VHZKu;`^gU5GqIFVHZKu;`^gU5GhXRVHZL1XJP:Tp$D;Cm.9oBpA*q=n)39ifQCHSE`CM.;quCm -drJCBE`Ch7<7>kdgi?BCE`:G-;qQ4tdrJC>F^3RA>hF1(g20[=F^3^B<7>kdgi?B*>t(\d25aD< -Vc5mZ9f8kD25aDg.fQCHOF^3RA>j-91fQCHOF^4-PI -f6h&=>t(Yj5GqIFVc5mY<'R9[5PaC!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA*q=n)39ik1nbFgtpK/f#u:^daZjkbg">Tc-+>Ujd_+kHsZ)c?KuoEl?lq'HsZ)c?KuoE -qKuE1HsZ)c?KuoEqKuE1HsZ)c?KuoEl?lq'HsZT#@dAVVpk*&AJn42!AF"hXl?lq(Jn42!AF"hX -l[i[5Jn42!AF"hXa(%`=>=IbgYlFb's8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-j)lgtCK>daZjkbg">Tc-+>U`5T^=bg")F`QQKM -fX.aDL2?X;@d&P_k_jHuP -on[GWLhuj=@d&P_pk*&KLhuj=@eGOnpk*&KLhua?D"rWlon[GWLhua?D"WU#on[GWLhua?D"kK; -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQG4OhTO-f`5T^6`Pod7`Oidr`5T^-]Y2=t\u91> -[o5?/D,g1aD"rWlon[GZK4=V.@eGOnpk*&NK4=V.@eGOnpk*&KLhuj=@eGOnpk*&KLhua?D"WU# -on[G[P]d$+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYI -bKS5L`PoI%]t:qj['[3P]Y1\Z[(Eua['[3LFCM.I5GqIFVc5mY<'SE59'_(>l[i[5Jn42!AF"hX -l[i[5Jn42!AF"hXpk*&AJn42!AF"hXl[i[5Jn42!AF"hXl[i[4HsZK%CsphabKS5L`PoI%]sP/R -['[3I['[?FWi&f\W(f.J9f8hJ5H%:6W(f.I<'TYq?L*2Rl[i[5Jn42!AF"hXl[i[5Jn4Y/@dAVV -pk*&AJn42!AF"hXl[i[4HsZ)c?L*2Rk01s#gtpK/f#P2'WGQ"@9f8kD25j5,W(f.J9f8kD25j5, -W(f.i@nQ$6?KuoEl?lq'HsZ)c?L*2Rl[i[4HsZ,jAF"hXl[i[5Jn4.o?L*2Rl[i[5Jn4)"D!Q[` -k_

Jn42!AF"hXl[i[5Jn42!AF"hXq5'#Ls8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkL.l2 -bKS5L`PoI%]rS6:Unsl_V50o`Unji_UnsldFChCF25j5,W(f.J9f8kD25j5,W(f.J9f8kD25j5, -a(%a,HsZ)c?KuoEl?lq'HsZ)c?KcK3k]BkhFB7[S?KcK3k]BkhFB7UIhF1( -fQCHO[&hs9hU9p)bKS5L`Po3k[&^:1UnslWSt)=BS=H1@S=Z7@St)0N8Z"m+VF2r36n>-&/#G]b -VF2r36n>-&/#G]bVF2r36n>-&/%8Gt)k<41\]d\m7bH=Za3#7Clbna]U^:>t)eD9$(3t -\n+[X@nOjG43(i'a(%`^@nOdO9"._[VF2r36n>-&/#G]bVF2r36n=[$4JkLsVF2r36n=[$4JkLs -R85rt]XIk?s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7ckgtp`>hU[mAaDFntD,eu);oifTg20[-D,eSn<7>kd -g20[*DI1e4;q#bcdrJC9E`:V5>hF1(aE1b@F^3RA>hF1(`GT"[<'R6a7Aj*LVHZKd>=GGh5GhXR -VHZKe<'R9[5KKq&p[%)0oC_>6n*'-,kj7d&e^rGr>hF1(fQCHOF^3RA>hF1(fQCHOF^3RA>hF1( -fQCHOF^3RA>hF1(fQCHOF^3RA>hF1(fQCHOF^3C9;lhU9p)bKS5Sbg"_-OP"\\fQCHOF^43Z?J'C* -fQCHOF^3RA>j-91fQCHOF^4-Ph=@4k]BkWHt(`N>fU>HVc5mY<'R9[5GqIF -Vc5nE]WhG9s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o6m-j)lgtCK> -g"bH4eCN'tf#u:^fZ_O^bg">Tc0:I@l?lq(Jn4.o?L*2Rl[i[5Jn42!AF"hXl?lq(Jn42!AF"hX -l[i[5Jn42!AF"hXk_Jn42!AF"hXl[iZk@V)E@7EC[G -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<[_Gi8j(SgtpK/f%A3ibKS5L`Pp$Ec,@T?`5T^=bg")F`TU`5T^6`Pom*Z+=LBk_7E8n1on[GWLhua?D"WU# -k_Jn42!AF"hXl[i[5Jn42!AF"hX -l[i[5Jn3NXbL4nk\XJb[>=GJb2476&W(f.I<'R74K(t3W(f.J9f8kD25j5,W(f.J9f9Ln:[3=6l?lq%FB7UIhF1(fQCHOF^3RA>iio@i8j(LeCMgec,@T? -['[3I['ZX*Un"$HS=Z7LR['D7S=H1@Qs!"K:HYLB/#G]bR85rB6n>-&.ssB?VF2r36n>-&/#G]b -VF2rG>t*Oh<7l=uk]Bk\E`C\6>hj@!gi?BLE`Ch7<8;LnfQCHSE`C\6>gm^lgi?BLE`Ch7<7l=u -gi?BHF^41]fDkmNs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -aFnTF>t)>17Clbn\m7b9AP^EN41\]d\n+[Z=Za3+:WHs;\n+[K>t)eD9"JS0a(%`QAP^?V9"JS0 -a(%`><'R:]aE1b0FC*%1?J'C*aE1b?Ht(3FB@q?3f6h&KFC*RH@b>g.f6h&LHtUQKB@hN? -aa@aQHt(0=?IsR6`GT"[<'R9[5GqIFVc5mY<'R6a7Aj*LVHZLAXIoOms8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA*q=n*'-,g"bH4eCN'tf#u:^fW:^tF^3OG@b>g.f6h&[F^3OG@b>g.fQCHOF^3OG@b>g. -f6h&ZHt(`N>h=@4f6h&[F^3OG@b6!:f6h&HDI05?5GqIFVc5mY<'QdH4P6a-s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7d#gt^TJn3MeDX)UUfS"/.Jn4)"CtF&Dk_Ih@d&P_ -fS"/.Jn3MeDWlgkfS"/+L2?(.CtODYk_6n)iE\ -daZjreCMgec-+>UbKS5Sbg")F`QQKM`5T^9[B\nQETi-nkDO?CMfIs8D!-^rkDO?DL2?%2ET`7" -k_Jn4)"D!6Uies_^#s8W-!s7H$\kj7crjQFt@f$`(! -bKS5L`Pod7`Pfa7VhBHHE`;1VD!6UikDO?CMfIpt*q7ETi-nk_^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_&&kLnYIdaZjd`Poj0]">Vg]=bha['[HX]sP/R\XJb[>=FrU4Jl=O -Vc5mY<'Su^@d&P_k_Jn4)"D!Q[`k_

Jn4P1D!6Uik_74IJu-W(f.;:HY%@4IJu-\m7bVHt(]T@dAVVf6h&ZHt(`N>j?]CfQCHOF^3RA>hF1( -fQCHOF^3RA>hF1(fQCHOF^3RA>hF1(fQCHN`4ajZhV$]@bKS5L`Po3k['[3IUnslWSt)=BS=H1@ -S=Z7@St)0N8Z"m+MGZ^;6n=-l6Dd.$R85rB6n=[$4JkLsHoaBX:HY%@4M"fefQCH_FB7%:>hF1( -fQCHOF^3RA>hF1(fQCHOF^3RA>hF1(fQCHOF^3RA>fCSefQCHOF^3"0?J'C*q:sBts8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC]S?C:[\>\m7b9>t)>17Clbn -\n+[KAP^?V9"JS0\n+[KAP^?V9"JS0aDFnfAP]mK:V(+5a(%`QAP]mK:T%/VR85r5:HYLB/"'0q -R85r5:HY%@4IJu-R85r5:HY%@4IJu-Qs!#QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7d%m-j)lgt0KX -`GT#'FC*%1?H@4paE1b0FC*%1?H@4paE1b0FC*%1?H@4paE1b1HtUNB?H@4paE1b1HtUNB?HIS- -[VT*6=\4u`8XNXPR85r4=\4u`8XW@:Qs!"J=\4u`8]\!0kj7d%m-j0)n*'-,kj7cj[&h>j?H@4p -fQCH@HtUNB?IsR6aE1b?Ht(3FB@hN?aa@aCHtV&Y@`WXtf6h&LHtV&Y@`a"1f6h&LHtTm(=f54` -VHZKd>=GDn7Aj*LVHZKd>=GGh5M*ies8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o.jQG[\gsX^' -daZjkbg"eIXOhi/f6h&ZHt(`N>h=@4fQCHNHt(]T@b6!:fQCHNHt(]T@b6!:f6h&[F^3OG@b6!: -f6h&ZHt(]T@`WXtR85rC<'QaQ8Z,NPQs!#$R>q7Hs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2g"bH;gtpK/f$`(!bKS5Sbg"eabKJ,SfX.a4KPp".CtODY -k_LqDV'8FVHZKfAQ8EjkPtS^s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o.jQG4OhU9p)daZjd`Pod7`Pfa7 -bKS5L`Pod7`Pfa7l'-VLN-O!.DWcptfo11=MfIpL2>P%Gj'lu -k_Ih@d2Fpm.9o6m-ilnkLnYIdaZjkbg">Tc,@T?`5T^8]Xk[c:YLJ2 -k_LqDWlgkes_]Dbg")F`Oidr -['[3I['[3I['[3IW/QJ/<'QaQ8Z,NPQs!"J=\5Mj5IPB2kDO?5N-OQ@D!-^rfo11>L2>LqDWlgk -fS".pKPp".CtODYk_s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2 -i8j(Sgtp5uc,@T?['[3@XKA:pUnji_Unsl_V50o`UmH1=R85r5:HY%@4IJu-R85r5:HY%@4IJu- -Vc5mK:HZ4":[3=6fS".oHt(]T@d8>If6h&[F^3OG@d8>If6h&[F^3OG@d8>If6h&[F^3OG@d8>I -fQCHNHt(`N>iio@i8j(Sgtp5uc,@T?]=bhXXKAP)XdkuQS=Z7@St)=BS=H1@Q=Ep_:HYLB.uI1j -VF2ql;*q-J/"'0qR85r5:HYLB/#G]bR85rS;``NX@b6!:f6h&mHsYEP@b6!:f6h&ZHt(`N>h=@4 -fQCH@HtV)S>hF1(aE1b@F^3RA>f_"nfQCH?FC+4^fDkmNs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq=OCV[VT*XAP]mK:V(+5\n+[KAP]mK:V(+5\n+[KAP]mK:V(+5 -[VT*XAP]mK:V(+5\n+[KAP]mK:UY(B\n+[*:HY%@4IJu-R85r5:HY%@4IJu-R85r5:HY%@4IJu- -R85r5:HYP&E:il"s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#+ooi8j(LeCM]_?FP#c[VT*UFCM_$@^gGg -[rc)gFCM_$@^gGg[rc)tH[WAF@`WXt[rc)tH[WtW?FP;saE1atHtp*+=dW>`Qs!"J=\4u`8XNXP -Qs!"J=\4u`8XNXPQs!#%Un-`9n*'-,kj7d%m-ilnkLcl.aE1b1HtUNB?HIS-aa@aBFC*(:B?>O6 -aE1b1HtV)S>fhA+aa@aCHtUQKB?>O6aE1b1HtUNB?IsR6\n+[)=\5Mj5F>SFVc5mJ=\4u`8XNXP -Qs!#CbfTnbs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vi[kNM:$g"bH;gtpK/f%A3i`5T^IHt(]T@`a"1 -f6h&ZHt(]T@b6!:f6h&ZHt(]T@b6!:f6h&ZHt(]T@b6!:aa@aRF^3%9B@hN?aa@aBFC(hK7@74L -Vc5mJ=\4u`8][*Ks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -p[%),m-ilnkN:RTg"bH4eCN9rbL4nkbKS5Sbg">Tc.K+ifS".pKPoFqDV0V[fS".pKPoFqDV'8F -fS".oHt(`]DV0V[fS".oHt(`]DV0V[fS".pKPoFqDV0V[fo11.KPoFqDV0V[fS".@AQ5O27G#Jk -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2g"bH4eCN'tf#u:^fZ_OW`Pp$Ec,@T?bKS5L`PpK:XOr2D -fo11/N-O!.DV9tnfo11.KPoJ%Gh@[efo11.KPoJ%Gh@[ekDO?4KPoJ%Gh@[efo11.KPoFqDV0V[ -k_pFsn*'-,i8j(SgtpK/f#u:^`5T^6`Pod7`OM+i[VT+1L2?%2ES6:qkDO?5N-ONDES,q^ -fo11=MfIF/GhJ%#fo11/N-O$7GhJ%#fo11/N-O$7Gh@[efo11>V2tZVs8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\kj7crjQFt@f$`(!`5T^-]Y28&`Oidr`k8mp]Y28&`ODY9Qs!"X>=HY]BBY(d -fo11=MfIF/Git!)fo11>L2>P%Gh@[efo11=MfIC&DV9tnk_=Fo^8Z#]\Qs!"iFCNp^Git!)fo11/N-OQ@CtXblkDO?4KPoJ%Gj'lu -fo11=MfIC&DV9tnkDO?5N-ONDES6:qfo11/N-O!^XNSi4`5T^&['[3I['[3I['[3I['ZcjL6u+8 -Qs!"J=\5Mj5F>SFQs!#%FC+-gES6:qfo11/N-O!.DV9tnfo11/N-O!.DV9tnfS".pKPoFqDV0V[ -fS"/+L2>LqDV0V[Qs!"K:HY"I8XW@:Qs!"Y<'QaQ8\/J/fS".rKOX,&ES,q^kDO?4KPp".D!-^r -fS"/+L2>P%Git!)fo11=MfIph=@4f6h&ZHt(]T@b6!:f6h&[KPoCh@b>g.aa@aQHt(`N>fhA+ -fQCH@HtV&Y@`WXtq:sBts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-hMs:V(+5\n+[KAP]mK:V(+5\n+[KAP]aN=h80?[VT*XAP]aN=gi-L[VT*TCg"2_=gi-L -[VT*TCg"2_=d`&JR85r5:HXM36CCV3R85r5:HXM36C:nIMGZ^-=\4KJ6C:nIVgNI`s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!m.9o6m-ilnkLnYI[sVr"FCM_$@`WXt[rc)gFCM_$@`WXt[rc)gFCM_$@^gGg -aa@a1FCM_,C:A:o[sVr"FCM_,C<1L'WGQ"0=\5#W4IB8CQs!"J=\4KJ6C:nIMGZ]t;*p.;6Fa.t -kj7d%m-ilnkNM:$i8j(UUQ`07C<1L'aa@aCHtUQKB?>O6`-ZpSHtUQKB?>O6`-ZpSHtUQKB?>O6 -aa@aQHt(3FB?>O6aa@aCHtTBh<2W\[Qs!"J=\4u`8XNXPVc5mJ=\4u`8`n7=s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!m.9o6m-ilnkLnYIdaZjkbg")F`RfKHf6h&ZHt(3FB@hN?aa@aQHt(]T@b??O -f6h&[KPoCh@`3VAfS".\H[XP"DV0V[`-ZpbKPoFqDTR9=Qs!"J=\4u`8Z#]\Qs!"jPDfJ@s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mkj7crjQG4OhV$]@ -daZjreCMgec-+>UbKS5Sbg"_-OP#5(fS".pKPoFqDV0V[fS".\H[XP"DV0V[aFnTdKPn_TIFs3j -fS".pKPnkaEnH%_fS".qN-O!.DV9tnfo11/N-MdI=dW>`Q=EqepA+ags8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-ilnkLnYIdaZk#bfe2Rc-+>U`5T^6`Pp$Ec,@T?`5T^HPC_DGGhJ%#fo11/N-O!.DV9tn -fo11/N-O!.DV9tnfS".qN-O!.DV9tnfo11>L2>P%GhJ%#k_=Fo^8_A]6fo11=MfIF/Git!)fo11/N-ONDES6:qfo11/N-O$7GhJ%#kDO?5N-O$7GhJ%# -kDO?5N-ONDES6:qfY"Z2`PoI%]t:qj['[3I['[3I[&^:1W/QIu=\4u`8XNXPQs!"J=\4u`8[ieN -fo11/N-O!.DV9tnfo11.KPoFqDV9tnfS".qN-O$7Gh@[efo11/N-O!.DV0V[fS".pKPm/[8XNXP -Qs!"J=\5#W4IB8CaE1bAN-O!.DV9tnfS"/*MfIF/GhJ%#kDO?4KPoJ%Git!)fS".qN-ONDES6:q -fo11/N-O$7GhJ%#fo11/N-O$7GhJ%#fS".qN-OHSL\^#is8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(Sgtp5uc,@T?]=bhXXKA:pUnji_Unsl_V50o`UmQOP -MGZ^.:HXM36CCV3Qs!"K:HY%@4IJu-R85r5:HYRe<7cM,f6h&[KPoCh@b??Of6h&ZHt(`]DV'8F -f6h&ZHt(`]DV0V[fS".pKPoCh@b??O`-ZpbKPoCh@bAoJi8j(SgtpK/f#5PH]=bha['Zm8XdkuQ -S=Z7@St)=BS=H1@Q=Ep_:HY%@4IJu-MGZ^.:HY%@4IJu-MGZ^.:HY%@4Gm!&R85rB>=I.k@b6!: -f6h&[KPoFb>f:u;f6h&LHtV&Y@`a"1aa@aRKPn_TIFijUaa@aQHt($@IFijUaa@aCHtVTsh#IES -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s5;u$W+Ar>AP]79<4ZX: -W+Ar:Cg"2_=gi-L[VT*TCg"2_=gi-L[VT*TCg"2_=gi-L\n+[HFCM[p=gi-L[VT*6=\4KJ6CCV3 -Qs!"<;*pXQ8W$A3Qs!"K:HXM36C:nIR85r5:HYP.I.[..s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq<726 -i8j(SgtoSqGd_Ek[rc)fCg"5h@^gGg[rc)gFCM_$@^gGg[rc)gFCM_$@^g`"[rc)gFCM_$@^g`" -[rc)gHtoWt?]%]IQs!"<;*p.;6AeW,Lg!Q2;*p(B:7,0ULg!QpUn-H)kNM:$k1nbUm-ilnkK'Hi -aa@aBFC*(:B=E8'aa@a1HtpcNB?>O6aa@aBKQ>1^B?5aHf6h&KKQ>.eEl<H[X"`B?>O6 -W+Aqq=\4u`8Z#]\Qs!"J=\4u`8XNXPQs!#4`4c3Ns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726 -i8j(SgtpK/f#u:^f>PAEHtUQKB@hN?`-ZpaHt($@IFijU`-ZpSHtUQKB>f.Ff6h&KKQ>^uDV0V[ -aa@aRKPnkaEn>\JaFnTTKQ^uDTIKOaFnTPH[WtgEnH%_aFnTdKPn_TIFs3jaFnTdKPnkaEl`oSfS".`KQ>b)GfYPY -fo10sMga62DT$mMW+Aqo@o\n!8\'P"s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7d#gt^?-f#u:^ -bKS5Sbg")F`RrDX`5T^6`Pp$Ec,cu_fo11/N-O$7GfYekfo10sMga9;GfYekfo10sMga9;GhJ%# -fo11/N-O$7GhJ%#fo11/N-O$7GhJ%#fo11/N-NF>S`\__g"bH4eCMgec,@T?`5T^6`PoBVPdYC2 -fo11=MfIF/GhJ%#kDO?5N-O$7GhJ%#fo11.KPoJ%GhJ%#fo11/N-O$7Gh@[efo11/N-O$7GhJ%# -kbX@?s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQFt@f$`(!`5T^-]Y28&`Oidr -`5T^-]Y2=t]">VgVgNHN=\6&<=kSaYfo11/N-O$7GhJ%#fo11/N-O$7GhJ%#fo11.KPoJ%Gh@[e -fo11/N-O$7GhJ%#fS".nPC_DGGj)K4s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+IoC_&&kLnYIdaZjd`Pod7`Oidr['[3P]Y1\Z[&J.YQs!"H@o\n!8XNXPW+Ar]N-Np;J_?!, -fo11,PC_DGGhJ%#fo11/N-ONDES6:qkDO?5N-O$7GhJ%#kDO?5N-O$7GhJ%#fo11/N-NOic-+>U -]=bha['[3I['[3I['[3I['Z`aI$e&.Qs!"J=\4u`8XNXPQs!"iHtq>nGhJ%#fo10sMga62DTI`a -fS".`Mg`["EnQCraFnTeN-NF%IFs3jaGYK"N-NF%IFs3jQ=EpP;*pXQ8XW@:WGQ"`KQ>b)GhJ%# -fo11/N-O$7GhJ%#fS".qN-O$7GhJ%#fo11/N-O$7GhJ%#fo11/N-OTOIFaU5fo11?P^V5DGhJ%# -fo11/N-Np;Jbm^uDT$mMf6h&GH[XP"DV'8F`-ZpbKPnkaEn>\J`-ZpaHt(]T@`3VA -fS".`KQ>^uDTIKOfS".pbff5:n(HLQdaZjkbg!c4]sP/RUnsl_V50WQS>_mAS=Z7@St)*VO6q:sBts8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+=jQEsf=fH7F[VT*FAQ6-\@]3j;[VT*GD-s8Z?`@mL -[VT*GFChFg?aacRWGQ"NCg"5h@^^)U[rc)fCg!`S?^OtfQs!"<;*pXQ8W$A3Qs!"<;*pXQ8W$A3 -Qs!"<;*p.;6C:nIQu-=4s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_>6n)iE\\V5::Cg"5h@]=H\ -[rc)YD-sbo@]=H\[rc)YFChq'@]+Tm[rc)WHuQQ:@^g`"[sVr"FCM_,C:A:oWGQ!u>#'lW:7,0U -Qs!":>#(Gf8VgPFQs!":>#(Gf8[kLgi8j(ZjQGI^kMYFai8j(BUn,VTB=E8'[rc*$HtUQKB?>O6 -[sVr/H[WtgEli]AaFnTPH[WtgEl`oSaa@aBKQ>.eEl`oSaFnTUHtTEq?^OtfQs!"J=\4u`8XNXP -Q=Ep^=\4u`8]\!0s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_&&kN:RTdaZjreCMXP]#f>4 -aFnTTKQ>.eEli]AaFnTTKQ>1^B?5aHaFnTdKPnkaEl`oSaFnTTKQ>.eEl`oSfS".`KQ>.eEl`oS -Qs!"H@o\h)UbKS5Sbg"1rNQ?cn`-ZpRKQ>.eEl`oS -aFnTUHtUNREli]AaFnTTKQ>.eEl`oSaFnTTMg`["Ela/eaGYJfKQ>.lIFs3jaGYJfKQ>1^B:)gn -Qs!"H@o^UGScA`is8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n(HLQg"bH4eCMgec-+>U`5T^=bg")F`QQKM -`5T^6`PpDlJ]NataGYJfMg`[)IG'R(aGYJfMga9;GfYekfo10sMg`[)IG'R(aGYK"N-NF%IG'R( -aGYJfMga9;GfYek[sVrCbfeGaf#u:^bKS5L`Pod7`Pfa7Qu-b)GhJ%#fo11/N-O$7GhJ%# -fo11/N-O$7GhJ%#fo11/N-O$7GfYekfo10sMga9;GfYekfo10sMgbE^iW&rXs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+(Hp#+oog"bH4eCMRW`Pfa7]=bhs]Xk_f]u7n/]=bhh]Y18.OI00B -Q=EqJN-Np;J_?!,fo11/N-O$7GhJ%#aGYK!KPoJ%GfYekaGYK"N-NEsEnQCraGYK!KPnkhIG'R( -fo11/N-PC&s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gi8j(Sgtp5uc,@T? -]=bhh]Y1qi]sP/RW0EC2=\4u`8XNXPQs!"H@o^WuB@`8tfo11,PC_;KJ_$$9ert[9PC_DGGh/(0 -fo11,PC_DGGh/(0l'-VLN-O$7GhJ%#fo11/N-O$7Gh/=FdaZjd`PoI%]sP/R['[3I['[3I['[3I -R?Nhl;*p.;6AeW,Lg!Q@=\4KJ6FV&Gert[+Mga9;GfYPYaFnTeN-NEsEl`oSfS".`Mg`["Ela/e -fS".`Mg`[)IE7(^fo10sMg_O8.eEl`oSaa@aBKQ>.eEli]A`-ZpRKQ>.eEl`oSaa@aBKQ>1^B?5aHaFnTTKQ>.eEotTf -i8j(SgtpK/f#5PH]=bhh]Y1AIXdkuQS=Z7@St)=BS=H1@Q=Ep_:HXM36CCV3MGZ]t;*p[H4Gm!& -MGZ^.:HXM36AeW,R85rDAQ6a(EnH%_aFnTcHt(0MEnH%_aFnTTKQ>.eEl`oSaFnTTKQ>.eEl`oS -aFnTTKQ>1^B?5aH`-ZpSHtVTsh#IESs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<726[rc)YD-s8Z?`A-YWGQ"OFCM4kAZ9NR[rc)YD-s8aA[ZDXWGQ"NCg!`ZA[ZDX -WGQ"OFCM4d?ak,d[VT*(;*pXQ8W$A3Qs!"<;*pXQ8W$A3MGZ]t;*p.;6C:nILg!Q2;*pXQ8a,O0 -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gi8j(SgtoMfC8l;dWGQ"OFCM_$@]=H\[rc)gFCM4kA[cbj -[rc)YFChFnA[cbjWH;^LHuQQ:@]+Tm[sVr"HtoWt?\hl\Qs!":>#'lW:5E(KLg!Q@=\4EQ:5E(K -Lg!QpXJOk9kMYFakj7crjQGI^kLcl.[sVr"FCN@>B=E8'[sVr4HtU!DGfb>G\V5:LKQ>.eEl`oS -aFnTTKQ>.eEl`oSaa@aBKQ=PLC<2'KWH;^;@o\n!8W%"[Qs!"H@o\n!8W%"[Qs!"iNJ7E4s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7ckgtpK/f%A3i`k8n)HtUNREl<1^B?5aH -aFnTTKQ>.eEl`oSaFnTTKQ>.eEl`oSaGYJfMg`[)IE7=paFnTEKm8tf8Xf.FaFnTPH[WtgEli]A -aFnTdKPnkhIE7(^fS".`Mg`["EnQCraGYJfMg`[)IG'R(aGYJUFCLPGBJMg`[)IE7=p -aGYJfKQ>.lIE7=paFnTTMg`[)IE7(^fo10sKQ>.lIE7(^aGYJfMga62DTI`aaFnTeN-NEsEjqj; -daZjkbg">Tc,@T?`5T^)UnFYt<8!4TfS".pKPoFqDV9tnfo10sKQ>b)GfYPYfo10sKQ>b)GfYek -aFnTdKPnkhIE7(^aFnTTKQ>.lIFaU5s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -m.9o.jQG4OhU9p)`5T^6`Pod7`Oidr]=bhq`PoI%]u7n/\?2cg@p#+$8]ZR*aGYJtPC^f5IFaU5 -aGYK"N-NF%IFaU5aGYJfMga62DTI`aaGYJfKQ>.lIE7=paFnTTMg`["Ela/eke+/"s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkL.l2daZjd`PoI%]sP/R]=bheXf@b*@Ye2_ -Qs!":>#(Gf8Z63"aHM;1N-NpBOOfVHert[9PC_;KJ_$$9es_]OPC_;KJ_$$9ert[9PC_DGGh/(0 -ert[9PC_DGGhJ%#ert[;[&hHpc-+>U]=bha['[3I[&^:1['[3I['Zd#Q&&U=Qs!":>#'rP6C:nI -Lg!Q_FCN=LIG'R(aFnTeN-NF%IE7(^aFnTTKQ>.lIE7(^fo10sMg`[)IE7(^fo10sMg`[)IE7=p -WGQ"@AQ6a(Ela/efo10sMga9;GfYekfo10sMga0?J]NataGYJtPC^f5IG'R(ert[.eEl`oSaFnTPH[WtgEl`oS -aa@aBKQ>.eEli]AaFnTPH[WtgEl`oSaFnTTKQ>.eEl`oSaFnTdbff5:n(HLQdaZjkbg!c4]sP/R -X/rG!V50WQS>_mAS=Z7@St([J=GU-UMGZ]t;*p.;6AeW,MGZ^-=\4KJ6AeW,R85r&;*p[H4K)gj -aFnTTKQ>^uDTIKOaFnTTKQ>.eEl`oSaFnTdKPnkaEl`oSaFnTTKQ>1^B?5aHaFnTTKQ>.eEl`oS -k1nbls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o:oC]YJGc>Oe -WH;^ND-s8aAZ9NRWGQ"AFChFg?`A-YWGQ"AFChFnAZ9c_WGQ"OFCM4kA[ZDXWH;^[Cg!`ZAXHUl -MGZ]r>#'rP6ASf?MGZ]r>#'lW:7,0UMGZ]r>#'rP6ASf?Lg!R+bfg%ds8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+IoC_>6n(>k-WH;^\FCM4kA[cbjWH;^NFChq'@]+Tm[rc)WHuQ',AZ9c_WH;^NFChFnA[cbj -VgNHmHtoX&A[d&%WH;^->#(Gf8VgPFQs!":>#(Gf8VgPFLg!Q@=\4EQ::RF+i8j(ZjQGI^kMYFa -i8j(A[B[2_@`a"1[sVr"HtpTHICFT=aa@a3Km:^eB=W_@aFnTEKm:[lEk-mKaFnTEKm:.^GfYPY -\V5:;Htp-#(An6n(HLQdaZjreCM^:S]HJ)aFnTTKQ=VWGfYPYaFnTTKQ>.eEl`oSaGYJWMLU -a0i1nKQ=PLC<2'K[sVr"Htp`UEk-mK[sVr3KQ=VWGfYPYaa@aBKQ>.eEl`oSaFnTTKQ>.lIE7(^ -aGYJfKQ>.lIE7(^aGYJfKQ>.lIE7(^W+Aqq=\4u`8X.eEl`oSaFnTCHtpjKc-+>U`5T^6`Pod7`Kt[^ -[rc*#KQ>.eEla/eaFnTTKQ>.eEnH%_aFnTTMg`["Ela/eaFnTTMg`[)IE7=paFnTTMg`[)IE7(^ -aGYKAeB.ajs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2g"bH4eCMgec,@T? -]=bhq`PoI%]u7n/]=bhs]Xk_f]pNYGQs!"[FCj-aGfYekert[+Mga0?J]NataGYJfKQ>.lIE7=p -aGYJfMg`["Ela/eaFnTTMg`[)IE7(^aGYJfMg`["EqK)$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8VHWp#+oog"bH4eCMRW`Pfa7]=bhh]Y1\Z[$Z5`Lg!Q>@o\Cr=GU-UQ=Eq*Km;14J]O%. -ert[+PD%MUOOfVHes_]OPC_;KJ_$$9es_]OPC_;KJ_$$9aHM;.PC_;KJ]O%.ert[+PD%VJGhC6` -daZjd`PoI%]sP/R['[3I['[3I['[3IUnslC>#'lW:5E(KLg!Q2;*p(B:8r);aGYJfMg`[)IE7=p -aFnTTMg`[)IE7(^aFnTTKQ>.lIE7(^aGYJfMg`[)IE7=paGYJfMg`["Ela/eaGYJfMg`[1KZK(" -ert[+Mga0?J]Natfo10sMga0?J_$$9aGYJtPC^f=K[u?#'6=8r?J4 -G#Cqi;*oG(8r?J4MGZ]t;*pRY.eEl`oS\V5:LKQ>.eEk-mKaFnTEKm:[lEk-mK -`-ZpCKm:[lEl<#'rP6ASf?Lg!Q2;*p(B:5Vn8MGZ]t;*p.;6AeW,MGZ^>D-tA;El`oSaFnTTKQ>.eEl`oS -aFnTTKQ>.eEl`oSaFnTTKQ>.eEl`oSaFnTTKQ>.eEl`oSaFnTTKQ?51h#IESs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726\#'lW:5Vn8 -Lg!Q2;*p(B:5E(KLg!Q0>#'lW:<9N5s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7bmCkj7cV`Po<.@]=H\ -WH;^NFChFnA[cbjVgNH_FCh@tE49puVgNHmFCM.qE4:40VgNH]HuQQ:@]+Tm[sVr"HtoX&AXHUl -Lg!Q2@p#+$8VgPFMITbG@p#+$8W%"[Lg!QpXJOk9kMYFai8j(ZjQGI^kL[Yc[sVr"Htp-,^\VbdUMg`'oKuf1#\VbdUMg`-nI)q4oaGYJUNJ5H3ICG2i -aGYJGFCg>>=I*GsMITbS@o\Cr=TAF$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq=OCVi8j(ZjQFt@f$`(!fZ_OY]XkY-Ge&NQ[sVr$Km:(SC:AS* -[sVr"Htp-6n(HLQdaZjkbg">Tc-+>U -`5T^=bg")F`QQKM`5T^9R>nb2Ge&NQ\V5:LMg`-iGe&NQaFnTEKm:[sIE7(^\V5:LKQ>.eEl`oS -aGYJfKQ=VWGfYekaFnTTMg`[)ICFT=\"o\8`Pod7`Pfa7\?2cu=\6\fEl`oSaFnTTKQ>.eEla/e -aFnTTMg`["El`oSaFnTTMg`[)IE7(^aGYJfKQ>.lIE7=paFnTTMg`[1K`D)Ps8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkL.l2bKS5L`Pod7`Oidr`k8mp]Y28&`Oidr -]=bhUP`V2@#(uCE7U5(aHM:uPD%MUON3cKert[*R>o7TNRjP[ -a-hqB[gtp5uc,@T?]=bha['[3I['[3I -X/rG1['[?FWet:gQs!":>#'lW:7,0ULg!QQD-tABIE7V*aGYJfMg`[)IE7(^aGYJfMg`[)IE7=p -aGYJfMg`[)IE7=p\VbdUMg`[)IE7=paGYJfMg`[1KZK@1ert[+PD%#@KZK@1aHM;.PC^cBNRj;E -a-hqLg!Q2;*p(B:5Vn8Lg!Q0>#'6=8r-YG -Qu-#'lW:5Vn8 -Lg!Q2;*p(B:5E(KLg!Q0>#'rP6C;V!aFnTTMg`[)IE7(^aGYJfKQ>.eEl`oSaFnTEKm:[lEk-mK -aFnTTKQ=VWGfYPY\V5:LKQ=VWGfYPYk1nbls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!m.9o:oC]SgTW)d8Qu-<3FCghV@]=3OWH;^ND-s8Z?`@mLWH;^ND-s8Z?`A-Y -WH;^NFChFg?`A-YWH;^NFChFnAX6h+MGZ]r>#'lW:5E(KMGZ]r>#'lW:5E(KLg!Q0>#'lW:5E(K -Lg!QPN/%B4s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_>6n&V;qWH;^NFChq/C8ZGuWH;^LHuQ',AZ'op -VgNH]HuQ!2E2S)&WH;^LHuQQ:@]+TmVgNHmHtoR,E4:40QZR#!>#'rb=GU-UMITbE>#'lW:5E(K -MITbE>#'rb=LbK5q;gMmjQGI^kMYFai8j(RbfdPNGdi'8\V5:=Km:.^Gdi'8\V5:=Km:.^Ge&NQ -\V5:=Km:.^Ge&NQ\V5:=Km:.^Ge&NQaFnTEKm:.^Ga;i>Q=EpP@p#%,,^aGYJUNJ5H3ICG2i[uH*_Mg`+!Mo^g)[uH*_Mg`'oKrK0*MITbG@p"Uu=GgTj -VgNI`s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,_m-j0)n)iE\daZjreCMRW`Q3sc\V5:;Htp-hU9p)bKS5Sbg")F`Pfa7`5T^6`Pp$Ec,[5s -\V5:=Km:.^Ge&NQ\VbdUMg`-iGe&NQ\V5:=Km:[sICY&V\V5:LMg`-iGfYPYaGYJWKm:.^GfYPY -aFnTTKQ.lIE7(^aGYJfMg`[)IE7=p -aFnTTMg`-nI)q4o[uH*_Mg`-iGfYekk01sIs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8VHWp#tc2i8j(Sgtp5uc,@T?`5T^-]Y1qi]u7n/]=bhq`PoI%]sP/RQ=Ep\@o^U'ElXT- -aHM:uPD%#8IE7V*aGYJfMg`[)ICG2iaGYJWKm:.cI(>,^\VbdFMLC,s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_&&kLnYIdaZjkbg")F`OidrUnslSD.8B4=GgTj -MITbG@p"Uu=JpOca-hq=S:8MHNQ7HHa-hq-R>o7TNQ7HHes_]@R>o:OKZBL?es_]APD%MUON#'lW:6oBiaHM:uMg`[1KZK("aGYJfPD%#8IE7=paGYJfMg`[)ICG2iaGYJfMg`[1KXZqp -aGYJUNJ5H;KZK@1aHM:uPD%#@KZBL?aHM;.RZPUSKZBL?es_]@R>oddONod]J]O%. -ert[*R>oddON#'6=8r-YGH!=7(>#'6=8r-YGLg!Q2;*pXe@`XIU\VbdFML;slI(>,^ -\V5:=Km:.^Ge&NQ\V5:=Km:.^Ge&NQ[sVr$Km:(SC8Z`4[sVqgKRC=aGhC6`i8j(SgtpK/f#u:^ -]=bhh]Y1AIXdkuQS=Z7@St)=BS=H1@LM^[[>#'lW:5E(KLg!Q0>#'lW:5E(KG#Cqg>#'lW:5Vn8 -Lg!Q@D.:SEICY5_\V5:=ML;sgGfYek\V5:=Km:.^GfYPY\V5:=Km:.^GfYek\V5:=Km:.^Ge&NQ -\V5:=Km;b8h#IESs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726 -a0i1>D.9J]?^P\>Qu-<3FCghV@]=H\Qu-<"D.9JdAXI=DWH;^ND-s8aAZ9c_WH;^NFChFnAZ9c_ -WH;^NFCghB8VgPFLg!Q0>#'lW:5E(KLg!Q0>#'lW:5E(KLg!Q0>#'lW:6oBikj7ddE2dqjVgNH_FCh@tE2S)&VgNH]HuQ!2E2dqjVgNH]HuQ!2E2S)& -VgNHmHtoR,E2SA:[sVqgKRBb@AVsu"Lg!Q2@p"Oj:5WO`MITbG@p"Uu=GgTjLg!Q`XfC=?kNM:$ -i8j(ZjQGI^kLnYI\>=I*GsMITbE>#(An#(uKI/j6Hs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<726kj7d#gt^T\V5:=Km:.cI(=rU[uH*PML;sgGe&]Z\VbdDNJ4j$Kt!%q -\)aGYJUNJ4j$Kuf1#[uH*/D.8B4=GgTjQ=EpP@p$49T`>&ls8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726kj7ckgtp`>hUp&q -a-hptKm:(SC:T%C\V5:;Htp3GGdi'8\V5:;Htp3GGe&NQ[sVr$Km:.^Ge&NQ\V5:LMg`-iGfYek -\VbdUMg`[)IE7=paGYJfPD%#8IE7=paGYJfMg`[)IE7=p[sVqH>#'lW:5E(KfY"Zms8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA+ILkMYFag"bH4eCN9rbKJ,S`5T^JbfdrD`QQKM`5T^6`PoBVPduKm\V5:=Km:.^Ge&NQ -\V5:LMg`-nI(>,^\V5:LMg`-iGe&NQ\V5:=Km:.^Ge&NQaFnTEML;slI(=rU[sVr"UnGZF`Oidr -Lg!Q_Htp-q7Hs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_&&kLnYI -daZjd`Pod7`Pfa7`5T^-]Y28&`Oidr`k8n$`Pn1&MMbnGWH;^mPD%#@KZK@1a-hq.PD$uENQ@$+ -\o7TNRjP[a-hq-R>o7TNQ7HHes_]@R>o7TNQ7HHa-hqo7TNQ7HH -g"bH;gtpK/f#5PH]=bha['[3I['[3I['[3I['[3I[$QGsLg!Q0>#'lW:5E(KLg!Q0>#*.sIE7V* -aGYJfPD%#@KZK("aHM:dNJ5H;KXZqpaHM:uPD%#@KXZqpaGYJfPD%#@KZK@1aGYJUNJ5H;KZK@1 -aHM:uPD$uENQ@<:a-hq-R>o:OKZBL?a-hq-R>o:OKZBL?a-hq-R>o7TNRj;Ea-hq,^aGYJWML;sgGdiZd\V5:=Km:.^Ge&NQ -\V5:;Htp3GGc,q.\V5:=Km9MCE4L[I[sVr6bg#),kMYFadaZjkbg!c4]sP/RX/rG!V50WQS=H1@ -S=Z7@St(RQB8B_dLg!Q!>?$D^:5E(KH!=7(>#'lW:5E(KLg!Q0>#'lW:7,m-aGYJUNJ5H3ICY5_ -aGYJWML;slI(=rU\V5:=Km:.^GfYPY\V5:=Km:.^Ge&NQ\V5:HH[WGYGe&NQk1nbls8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o:oC^b[bF!-UQu-<"D.9JdAXI=D -Qu-<3FCge\CT2DeQu-<3FCghV@]=H\WH;^NFChFnAZ'opVgNH_FCh@tE2dqjMITbE>#'lW:5E(K -Q=EpN>#'lW:5E(KLg!Q0>#'lW:5E(KLg!Q0>#*)M])Vg1s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC^elhPkU. -WH;^LHuQ',AZ'opVgNH]HuQ!2E2S)&VgNH]HuQ!2E4:40VgNH]HuQ!:I&D@2[sVqgKRB\FE4L[I -QZR##@p"Uu=GgTjLg!Q2@p"Oj:5E(KLg!Q!>?$Ji=LbK5i8j(ZjQGann)39ii8j(LeCM^:SYq-g -\V5:;HtoR4I(+K,^\VbdFML;sgGdiZd\VbdDNJ4p#I(,)h[uH*NNJ4j$Kt!%q\#'rb=Q\Dos8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-iW_hU9p) -daZjkbg">Tc,@T?bKS5L`Pp$Ec,@T?a0i1_Km:.^GdiZd\VbdDNJ4p#I(>,^\VbdFML;slI(>,^ -[uH*_Mg`'oKuf1#\VbdFML;slI(=rU\VbdUMg`-nI&DXF`5T]oN/!^:@_%2;\V5:=Km:.^Ge&]Z -\VbdFMLVg -]=bhq`PoI%]t:qj['[3-D.8B4=NH\Za-hq-R>o7TNQ7HH\)\n\o_/+\s8V`bq<[_Gkj7ckgtp`>hTO-f -UnslSI!(6K:5WO`Lg!Q2@p"Oj:5WO`QZR#RMLo7TNQ7HHa-hq-R>o7TNQ7HH -a-hq-R>o7TNQ7HHa-hq-R>o7TNQ@<:a-hq-R>o:OKZBL?es_]Q]XHbZkLnYIbKS5L`PoI%]sP/R -['[3@XKAk:['[3IX/rG%R[&\4:3U5VLg!Q2@p"Oj:5E(KVhBH=PD$E)KufI2[uH*_PD$E)KufI2 -aHM:uPD$E)KufI2aHM:uPD$E)KufI2[uH*_PD%#@KZBL?aHM:ePDdJLNQ@<:a-hq-R>o7TNQ7HH -a-hq-R>o7TNQ7HHa-hq.PD$uENQ@<:a-hq-R>ok+XT/>#s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726 -i8j(Sgtp5uc,@T?]=bhXXKAP)XdkuQUnsl_V50o`UkX8DG#CqU;G)4=G#CqU;G)gD6?Z7! -G#Cqi;*pXe@_%2;\VbdFKm:.cI(=rU\V5:=Km:.cI(>,^VhBH.Km9MKI(=rUVhBGqHuQ!:I&D@2 -\V5:+HuQ!:I+ZZdi8j(SgtpK/f#u:^]=bhh]Y1AIXe_ehS=Z7@St)44PGG%NLM^[L>?$D^:3g&C -Lg!Q!>?$D^:5WO`H!=7(>#'9P@#.u]MITbUD.:#=Mo^g)[uH*_Mg`'oKt3(gaGYJWKm:.^Ge&NQ -\V5:=Km:.^Ge&NQ\V5:=Km:.^Ge&NQVgNHoKm;b8h#IESs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gk1naYFDI7\@[M"AQu-<"D.8lL@[D1PWGQ"/FDI7\@]=H\ -QZR#BFCge\CSuQ!VgNH_FCh@tE2S)&WH;^LHuPHi@Ye2_Lg!Q0>#'lW:5E(KLg!Q0>#'lW:5E(K -Lg!Q!>?$D^:3g&CVhBHts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726a0i1=FDI4bCR9-YR!a%CFDI4bCSuQ! -QZR#@HuQ!2E2S)&VgNH]KRB\FE2S)&VgNH]KRB\FE2SA:VgNH]KRB,.CPZ.hLg!Q!>?$Ji=F"+M -Lg!PtA71:)=F"+MLg!Q_UnHr#'rb=F"+M -Lg!PtA713s::RF+s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(SgtpK/f!pp%\VbdFKm:(dKt2n^ -W/QJAKm:(dKt!%q[uH*NNJ4j$Kt!%q\,^\VbdDNJ4osGdiZd[uH*NNJ4j$Kt!%q -[uH*NNJ4j$Kt!%q[uH*NNJ4j$Kt!%q[uH+As8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA*q=n)39ig"bH-bg")F`Pfa7`5T^-]Y28&`Oidr`k8n$`PoI%]r7Bb -MITbTFDJpbNQ7HHa-hq-R>o7TNQ7HHa-hpsPDdJLNOY11\)\?#lPo7TNQ7HHa-hq-R>o7TNQ7HHa-hq-R>o7TNQ7HHa-hq-R>o7TNQ7HH -a-hq-R>o7TNQ7HHa-hq-R>o:`S`&Slkj7ckgtpK/f#u:^]=bha['[3I['[3I['[3I['[3I[%sOo -MITb6>?$Ji=GU-UH!=7*@p#^PA]U'g\o:OKZBL?\o7TNQ7HHaHM:tR>o:OKZK@1 -a-hq-R>o:`Sb_@*s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkLnYIbKS5L`Po3k['[3I -Unsl_V50o`Unji_UnslSI!'U18p4*)G#CqU;G)+18pOW?G#CqU;G)+18p4*)MITbtNJ4osGdiZd -\V5:;NJ49`I(=rUVhBH.Km9MKI(>,^\V5:+HuQWMGc,q.VgNHoKm9MCE2SA:VgNI9bfer*kMYFa -daZjkbg!c4]sP/RX/rG!V50NCPGG%NS=Z7@St(RQB6d]\Lg!Q!>?#lP?$D^:3g&C -Lg!Q!>?$D^:7$'<[uH*OPDcr7Mn"t/[uH*NNJ4j$Kt3(g[uH*PKm:.^Ge&NQ\V5:=Km:.^Ge&NQ -\V5:+KRC=aGc,q.k1nbls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+IoC_>6n#22"Qu-<"D.8lL@[D1PQu-<"D.8iRCRAsJQZR#1D.8iRCSuQ!VgNH_FCgheFf0V+ -WH;^LHuQ',AZ'opQu-;g>#'?I?$D^:3g&CH!=6n>?#lP?#lP<4K'1 -kj7crjQGann)39ii8j(`gt^)sc)65BVgNH]HuQ!2E2S)&VgNH]KRB\FE2S)&VgNH]KRB\FE2S)& -\V5:+HuQWMGc-4BVhBGqKRB\NI&DXFQZR#!>#'9P@#.u]H!=7*@p""\a0i1MKRC=aGc6RUVhBH.ML;sgGc6RU[uH*NNJ4j$Kt!%q -\,^W/QJ?NJ49`I(,)h\V5:;NJ4)[uH*OPDdMGKXZqp -aHM:dNJ4j$KufI2[uH*_PD$E)KufI2[uH*_PD$E)Kuf1#\6n(HLQdaZjreCMgec-+>U`5T^6`PpKRbJ_B=bKS5PXJMhJI(>,^ -VhBH.ML;@]L:N1hW/QJ?NJ4p#I(,)h[uH*NNJ4j$KufI2[uH*PML;mmKt3(g[uH*PKm:(dKt2n^ -LM^[ZD.gD5Ge&NQVhBH,NJ4osGdiZd\VbdFML;slI(,)h[uH*PML;mmKt!%q[uH*OPDco0Kt!%q -[uH*NNJ6#t[f?C-s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -m.9o.jQG4OhU9p)bKS5L`PoI%]u7n/]=bhh]Y1qi]u7n/]=bhq`Pn0sJVmr>[uH*^R>n_?MoV6F -\XJbmPDdJLNObLBa-hpsPDdJLNOY11\XJbmPDcr7Mn"t/[uH*OPDcr7Mn"t/\?$Ji=InbGPfK2Oa-hq-R>o7TNQ7HHa-hq-R>o7TNQ7HHa-hq-R>o7TNQ7HH -k1nbapA*Y-kLnYIdaZjd`PoI%]sP/R['[3I['[3I['[3I['[3I['YU1E-YYeH!=7(>#'9P@#.u] -LM^\ER>n_?Mn"t/aHM:ePDdMGKXd5(aHM:fRZtj\NObLBa-hq-R>o7TNQ7HHa-hq-R>o7TNQ7HH -a-hq-R>n_?MoV6Fa-hptRZtmWKXd5(aHM:ePDdMGKXd5(\?#lP<-_\IH!=6n>?$D^:3g&CH!=77FDJFEI(5Au -\VbdEPDco0Kuf1#[uH*PKm9MKI(=rUVhBGqKRB\NI&DXFVgNH]KRB\FE2SA:VgNH]HuS6'h#IES -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7cJXf@b*@Y\f5 -Qu-;fD.f5Q@[M"AQu-<"D.8lL@[D1PQZR#0FDI4bCSuQ!QZR#BFCgheFdI2cVgNHMFDI4bCPlV( -Lg!Q!>?$D^:3KN-H!=6n>?#lP?#cD8pOW?G#Cr2R[*pQs8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq:XQ[ -QZR#0FDI4bCR9-YQZR#1I!(ctCSuQ!QZR#1I!(ctCSuQ!R!a%DI!)?7E0u#qVgNHNI!)?7E2SA: -VgNH]HuPEoCPZ.hH!=6n>?#lP<-_\IH!=6n>?$Ji=F"+MH!=7XXfCUOn*'-,kj7d4m-!#'9P@#.u]G@Y*;>#'9P@#.u]`5T^qs8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n*'-, -g"bH;gtoT1Pc0Oq\Vbd4KRC=fI&DXFW/QJ?NJ4j$KrBrb[uH*NNJ4j$Kt!%q[uH*NNJ4j$Kt!%q -W/QJ@PDco0Kt!%qLM^[]@p!qc@#AGrMITc,`PqlWs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA*q=n)39ifZ_OKPDc>lI&N!Y\Vbd5N/"g$Kr9TO -[uH*>KRC7gKrBrb\VbdDNJ4j$Kt!%q[uH*OPDcr7Mmn\"\Tc,@T?`5T^6`Pod7`Pfa7\)[uH*NNJ4j$Kt!%q[uH*NNJ4j$Kt!%q[uH*>KRB\FE2S)&W/QJAKm9PTL:N"_ -W/QJ/KRB\NI&N!YVhBH,NJ4?$Ji=LX9DaHM:ePDdMGKXd5( -\o7TNQ7HH\XJc'R>nbGPfT&A\XJc'R>nbGPfK2Oa-hptRZtj\NQ7HH -\nbGPfT&A\XJbmPDdMGKZKs[p[%)Cs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -m.9o6m-ilnkLnYIbKS5L`PoI%]sP/RUnsl_V50o`Unji_UnslAI!^$78p4*)BMV3C;G)+18p4*) -G#CqU;G)+18p4*)MITbdKRB\NI&DXF\V5:+KRB\FE2SA:VhBGqKRB\FE2SA:VgNH]KRB\FE2S)& -VhBGqHuQ!:I&DXFVgNI,bg#A?#cD8pOW?G#CqX>?#lP<-_\IH!=6n>?#lP<1%N3[uH*NNJ4m+Mmn\"\6n&32aQu-;fD.f5Q@Z"YtQZR"uD.f2WCRAsJ -QZR#0FDI4bCR9-YQZR#0FDI4bCR9-YQZR#0FDI4bCR9-YQZR#1D.7Zd8pOW?H!=6n>?#cD8pOW? -G#CqX>?#lP<-D/3H!=6n>?#cD8p=fRkj7d?#lP<-_\I -H!=6n>?#lP<-_\IH!=6n>?#lP<4K'1kj7d%m-j0)n*'-,kj7ckgtp`>hRB;RR!a%SHuPI#Ff0V+ -R!a%SHuPEoCRBKlR!a%DI!)?7E0u#qR!a%SHuQ!:I&D@2VhBGqKRB\NI&DXFVhBGQD.eZ.:3U5V -H!=6n>?#fW@#.u]G@Y*,>?$r2C]FG7s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o.jQG[\grmpdW/QJAML;@]L8^&c -W/QJAML;@]L:<.rW/QJ?NJ4j$KrC5t[uH*?N/"j+Ml;Sh[uH*?N/"g$KrBrb\si8j(SgtoN9TXTo7W/QJAML;@]L:N"_W/QJAML;@]L:N1hW/QJ/KRC7gKrBrb -[uH*OPDcr7Mn"t/\?'4m^&S-4s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2g"bH4eCN9rbKJ,S -`5T^=bg")F`QQKM`5T^=bg!Z"WjdtA[uH*?N/"g$KrBrb[uH*?N/"j+Mmn\"\) -\nbGPe!6I\XJbnRZt@OPdlp8\nbGPfK2O\XJbnRZuFB^&S-4s8W,coC_>6n)39idaZjkbg")F`O*"Z['[3I['[3I['[3I -['[3@XKA:pUj60DH!=6lA713s:3g&CH!=7GKRC:nMn,:@\nbGPfK2O -\XJbnRZtj\NObLBa-hptRZtj\NObLBa-hptRZt=GMoV6F\XJc'R>n_?Mo_*8\PB&s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gi8j(Sgtp5uc,@T? -]=bhXXKAP)XdkuQUnsl_V50o`Uka&2BMV35:J#_-8n_!lG#CqG:J#_-8p4*)G#CqU;G)gV=Lj<: -VhBGqKRB\NI&DXFVhBGqKRB\FE2S)&R!a%SHuPF*JZ!m7VhBGqKRB\NI&DXFVhBGqKRB\NI*9aY -i8j(SgtpK/f#5PH]=bha['Zm8Xe_ehS=Z7@St)=BS>_mAG@Y*);G(Uu8U4N>BMV3C;G)+18p4*) -G#CqU;G)4=<-D/3G#CqfD.ff+L8^&cW/QJ?NJ4?#cD8p4*)H!=6k;G)4=<-D/3BMV3F>?#938Tn!( -BMV3C;G*mPOT5@\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA*k+gmEJ3LM^[jFDHYRE0kZ^QZR#0FDI4bCR9-YQZR#1I!(g(Ff0V+ -R!a%DI!)?7E0u#qR!a%DI!)?7E0u#qVgNHNI!(ctCO',`H!=6n>?#lP<-_\IH!=6n>?#lP<-_\I -H!=7XXfD-^kNM:$kj7d%m-j0)n)iE\g"bH(]XjJXFdI2cQZR#1I!(ctCRBKlQZR#0FDI4bCR9-Y -QZR#0FDI4bCRBKlR!a%DI!)?7E0u#qVhBGqKRB\NI$f;(H!=6lA70[e)W/QJ@PDcAuL:EG*W/QJ@PDcr7Ml;l%\?#fW@$btN\n_?MoV6F\C!pA+ags8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!kj7bnD.eTNH`3Bu -a0i2#eCO9cq>^Kps8W-!s8W-!s8W-!m.9o6m-ilnkL.l2daZjd`PoI%]sP/RUnsl_V50o`Unji_ -UnslBFDuD$8n_!lBMV35:J#4q8Tn!(BMV35:J#4q8SCmkMITbdKRB\NI&DXFVhBGqKRB\NI$f;( -VgNHNI!)?7E2S)&R!a%SKRB\NI$f;(VhBGqKRB\NI&DXFVhBH@bg#),kLnYIdaZjkbg!c4]sP/R -X/rFnSt)=BS=H1@S=Z7@St("8?t`>-BMV35:J#h9<+o'!BMV3F>?#938SCmkG#CqF>Zu;K8r@+\ -W/QJ0N/"6`I&N!YW/QJ/KRC7gKr9TOW/QJ/KRC7gKr9TOVhBGqKRB\NI&DXFVhBGqKRB\NI&DXF -k1nbls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2 -\XJbMD.89;B:*OFLM^[ZD.f2WCPQb>QZR"uD.f2WCPQb>QZR"uFE!RgCPR"NQu-;fFE!Ua@Y]&E -QZR"uFE!+I=D1K%H!=6]:J#4q8SCmkBMV35:J#h9<+o'!BMV3F>?#938SCmkH!=8$gtr)2s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@M -\?2cdD.eW@B8:>:QZR"uFE!"WE//OSQZR#1I!(g(FdRQ!R!a%DI!(g(Ff0n?R!a%CFDI7kFdRQ! -R!a%DI!(g(FdRQ!QZR"g>?#lP<-_\IH!=6k;G)4=<-_\IH!=6]:J#h9<4K'1m.9o:oC_kEkNqg5 -kj7crjQG4OhU9p)VhBGaFDI4bCR9-YQZR#0FDI4bCR9-YQZR"uD.f2WCR9-YQZR#1I!(ctCRBKl -R!a%DI!)??I$]M;VhBGqKRAPlB8U2$G@Y*,>?#fW@!PsUG@Y*;>#'?I<-N1po_/+\s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_G -kj7d#gt^)sc)?SUW/QJ/KRB_WL8^&cW/QJ0N/"9iL8^>uW/QJ0P`Vi&L8^&cW/QJ0N/"9iL:EG* -W/QJ0N/"9iL:<.rW/QIg@p""\<-Mk\H!=6lA74'6bQ%VBs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkMYFa`k8m\KRB\NI&DXFW/QJ/KRB_WL8T]P -VhBGrN/"6`I&N!YVhBGrN/"6`I&N!YW/QJ?NJ4u[uH*?P`WD=Ml;l%W0ECBP`Vi.OLUL4 -W0ECBN/"9qOLL4'W0ECBN/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cMITb6>?#lPC,s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#+oo -k1nb?eCMgec,@T?`5T^6`PoI%]uI^r]=bhh]Y28&`Oidr]=bhQV5/l`B;^E1\XJbnRZt@OPe!6I -\XJbmPDcB.Q+3$9W0ECBP`Vi.OLUL4W0ECRPDcB(OJn+mW0ECQNJ4PB&s8W-!s8W-!s8W,kpA+(Hp#+oo -daZjreCMRW`Oidr['[3I['[3I['[3IX/rG1['[3I[$Q`/H!=6lA70[e<-Mk\H!=7*@p#[oOL^gE -\XJbnRZt=GMn,:@\XJbnRZt@OPe!6I\XJbnRZt=GMoV6F\XJbnRZtj\NObLBa-hptRZt@OPe!6I -\XJbmPDcu?Pdlp8a-hqOe^sj$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,]gt[*a@!PsUBMV3F>?#6?>'?$u;Ff:ao -['[4(m-jT?q<[_Gi8j(Sgtp5uc,@T?]=bhXXKAP)Xe_ehUnsl_V50o`Uka&2BMV35:J#4q8SCmk -BMV35:J#4q8SCmkG#CqG:J$FR=Jph"VhBGbI!)?7E0u#qVgNHNI!)?7E0u#qVhBGbI!)?7E0u#q -VhBGqKRB\NI$f;(VhBGqKRB\NI*9aYi8j(SgtpK/f#5PH]=bha['Zm8XdkuQS=Z7@St)=BS=H1@ -G@Y)p:J#_-8n_!lBMV35:J#4q8SCmkBMV3F>?#938Tn!(BMV3TD.ff+L8T]PVhBGqKRB_WL8T]P -W/QJ/KRB\NI&DXFW/QJ/KRB\NI&DXFR!a%SKRB\NI&DXFVhBGbI!+,thZ*WUs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o6m-hm3`J8PSLM^[ZD.eW@B8:>: -QZR"uFE!"WE0tKOLM^[ZD.eWGE//:CQu-;fD.eW@B8:>:LM^[kD.89;B8:>:LM^[L>?#938SCmk -H!=6]:J#h9<+o'!BMV3F>?#938SCmkB3\VR:J#4q8V_D,o_/+\s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+=jQDkOCPQb>Qu-;fD.eW@B8:>: -QZR#0FDHYRE0u#qR!a%DI!(g(FdRQ!R!a%DI!(g(FdRQ!R!a%DI!(ctCRBKlR!a%DI!(3dE->,O -H!=6n>?#cD8nVC4H!=6]:J#2(>'X=OBMV4,[']2kp$D;Cm.9oBpA*q=n)39ig"bH4eCM+)TSIAs -LNIL%FDHYKB:!^ULM^[jFDHYKB8:SJLNIL%FDHYRE0kZ^R!a%DI!(g(FdRQ!R!a%CKRp%SI&DXF -R!a%#A70Ul@!PsUH!=6lA70[e<-Mk\G@Y*,>?$rBJcGcMs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYI\XJb]N/"6`I&DXF -W/QJ/KRB_WL8^&cW/QJ?NJ4`Pnd7L8T]PQ\9pfKRB\NI&N!YVhBGqKRB\NI&DXFVhBGaKRp%SI&N!Y -VhBGrN/"9iL8^&cW/QJ0N/"9iL8^>uW0ECBP`WD=Ml;l%\U`5T^6`Pod7`QQKM`5T^8]Xk&+OJnD*W/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&c -W/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW0ECBP`WD=Ml;l%W0ECRPDcB(OLUL4W0ECRPDcB(OJn+m -W/QJ@PDcAuL8^&cW/QJ0N/"9iL8^&cVhBGrN/%)nkPtS^s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYIdaZjkbg")F`Pfa7 -`5T^-]Y28&`Oidr]=bhq`PoI%]uI^rW1&uqD/6)/L:Nb;\XJb]P`WGEPc0h.\?#lP<-_\IW/QJ@PDcu?Pe!6I\XJbnRZt@OPe!6I -\XJbnRZtj\NObLB\XJbnRZt@OPdlp8\XJbmPDcu?Pe!6I\nbGPdlp8\XJc(XJPsss8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8U$V`FiFZBMV35:J#4q8SCmkBMV3F>?#938S;:3B3\V`;G)^dE5oQ%m.9o6m-ilnkLnYI -daZjd`PoI%]sP/RUnsl_V50o`Unji_UnslBFDtnh8QA2FBMV3I3]q(O8SCmkBMV35:J#4q8SCmk -G@Y*JKRp%SI$f;(VhBGqKRB/7Ff0n?R!a%CKRp%KE0u#qR!a%SKRB/7Ff0n?Q\9pfKRB\NI$]M; -VhBH@bg#),kLnYIdaZjd`PoI%]sP/RX/rFnSt)=BS=H1@S=Z7@St("8?t`>-BMV35:J#4q8SCmk -BMV35:J#4q8SCmkBMV35:J#4q8W%"[VhBGaKRp%SI&DXFVhBGqKRB\NI&DXFW/QJ/KRB\NI&DXF -Q\9pfKRB,>JZ"0KQ\9pfKRB,>JZ"0Kk1nbls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+@Sq<726i8j'gI!(3]B8:>:LM^[ZD.eW@B8:>:LM^[ZD.eWGE0tKO -LM^[ZD.eW@B8U2$LM^[ZD.eW@B8:>:LNIL%FDHYKB8:>:BMV34>Ztf:8SCmkB3\VR:J#4q8SCmk -BMV35:J#4q8SCmkBMV35:J$t:LM^[jFDHYRE//OSQZR"uFE!RgCPR"N -QZR"uFE!RgCPR"NQZR#0FDHYRE0u#qQZR#1I!(ctCRBKlLM^[I;G(S,>%g]'B3\V`;G(Uu8S;:3 -BMV35:J#4q8[Pk3o_/+QpA+@Sq<[_Gm.9o6m-ilnkLnYI`5T]^FDHYKB8:>:LM^[ZFE!RgCPQb> -LNIL&D.89BE//OSQZR#1I!(ctCRBKlR!a%DI!(d/JX;%@VhBGaN/FNdI$f;(H!=6lA70Ul@!PsU -G@Y*,>?#fW@!?-hG@Y*[R[*pQs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+@Sq<726i8j(A[BZ'WMPl,TQ]-g"KRB_WL8^&cW/QJ0N/"9iL8^&c -W/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cQZR"eA70[e<-Mk\G@Y*kXfDF$s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mkj7d#gt^?-eu4gp -VhBGaKRoJCJZ"0KQ\9pVKRoJCJZ"0KQ]-fgKRp%SI$]M;Q\9pVKRoJCJZ"0KQ]-g"KRB_WL8^&c -W/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"6`I$]eLW/QItKRp(\L8^&c -W/QJ0N/"9qOJn+mW0EC2I!'XD@!PsUH!=7XXfDF$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQG4OhU9p)fZ_O^bg")F`RrDX -`5T^6`Pp$Ec,@T?\"o[qP`Vi&L8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&c -W/QJ@PDcAuL:<.rW0ECBN/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8T]P -W/QJ/KRB_WL:Nb;s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mkj7ckgtp`>hU9p)bKS5L`Pod7`Oidr`5T^-]Y28&`Oidr -]=bhh]Y1qi]qhL#G@Y*[N/"9qOJnD*W0ECBP`Vi.OJn+mW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&c -W/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^>uW/QJ0P`Vi.OJnD*\?$B"E4D*i\:LM^[ZD.eW@B8:>:LM^[JD/5#==GLa+ -LM^[ZD.eW@B8:>:LM^[ZD.e''?t`>-BMV35:J#4q8SCmkBMV35:J#4q8SCmkBMV35:J"Y^88(dj -BMV3uR[*pQs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -fZ_NoD.eW@B8:>:LM^[ZD.eW@B8:>:LM^[ZFE!RgCPR"NLNIL&I!(3dE0kZ^L4"?7FDHVYH^Ahi -L4"?7FDHVYH\Z]^LNIL%FDHYKB4kIQBMV35:J#4q8S;:3BMV35:J#4q8SCmkBMV40XfD$eq=OCV -o_/+QpA+@Sq<726i8j(SgtpK/esV_cQu-;fD.eW@B8:>:LM^[ZD.eW@B8:>:LM^[jFDHYRE//OS -R!a%2I!_6.FdIc4R!a%CKRoJCJZ"0KQ\9pVKRnnqB6d]\G@Y**A70Ul@!?-hG@Y)o>ZuDW<-Mk\ -Q]-h%s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -kj7crjQF_1c'OBHVhBGaKRoJCJZ+N^Q]-g"KRB,FMPuJgW/QJ0P`Vi&L8^&cW0ECBN/"9iL8^&c -W/QJ0N/"9iL8^&cW/QJ/KR@uS@!?-hG@Y**A70Ul@/p9,s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!kj7d%m-ilnkLnYIW1'!u -W/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ/KRB,>JZ+N^Q\9pgN/"9iL8^&cW/QJ0N/"9iL8^>u -LNIKZA70%T>'X=Og"bHas8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+@Sq<726i8j(LeCN'tf#u:^bKS5L`Pp$Ec,@T?`5T^6`Poj0\u:jT -W/QJ0N/"9iL8^&cVhBGaN/FNdI&N!YW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cW/QJ0P`Vi&L8^&c -W0ECBP`Vi&L8^>uW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&cQ]-g#N/![PJZ+N^Q\9qRm-juSs8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA+@Sq;C>sg"bH4eCMgec-+>U`5T^6`Pod7`Oidr]=bhs]Xk_f]u7n/]=bhs]Xjo8Uk`f" -Q]-g3PDcAuL8^>uW/QJ0N/"9qOJn+mW/QJ0N/"9iL6mjVW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&c -W/QJ0N/"9iL8^>uW/QJ0N/"9iL8^&cW/QJ0P`Vi.OJnD*W0ECBP`Vi4Q+3$9W0ECBP`Vi4Q+&ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+IoC_&&kLnYIbKS5L`PoI%]sP/R['[3I['[3I['[3I['[3@XK@nSPBgA3G@Y)o>ZuDW<-_\I -G@Y*[P`WGEPdlp8\XJbmPDcu?Pe!6I\XJbnRZt=GMn,:@\XJbnRZt@OPdlp8\6n*'-,kj7d%m-j<4p#+ooL4">J76spB5ug?>JX;%@VhBGaKRp(\L8^&cQ]-gFbg#),kLnYIdaZjd`PoI%]sP/RX/rFnSt)44PFS57 -S=Z7@St'Fu>#e!WBMV35:J#4q8SCmkBMV35:J#4q8W%"[Q\9pWI!(g(FdRQ! -VgNHMKRp%SI$]eLVhBGaKRoJCJX;%@Q\9pWI!)??I$]M;Q\9pVKRoJCJZ"0Kg"bHas8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7c]bfto[B8:>: -GAV,Q@p"M'B8:>:LM^[ZD.eW@B8:>:G@Y*=@p!qlCNj;sGAV,Q@p!qlCPQb>LM^[ZD.eWGE//:C -LM^[;:J#4q8SCmkBMV35:J"Y^88(dj=A28!:J"Y^88(djBMV3%9Lr8Z88(djL4"@3m-juSs8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,Pgtmg.E//:CLM^[ZD.eW@B6S3. -LM^[ZD.eW@B8:>:LNIKjFE!"WE//OSLNIL%FDHYRE/&aeLNIKjFE!RgCPR"NLNIKjFE!RgCPI4` -LM^[;:J#4q8SCmkBMV35:J#4q8SCmkBMV3%9Lrhm8[Pk3o_/+\s8V`bq=OCVo_/+Em-ilnkN:RT -daZjT['YU*B8:SJLM^[ZD.eW@B8:>:LM^[ZD.eW@B8:SJLNIL%FDHVYH^AhiL4"?8I!(d/JX;%@ -VhBGaKRoJCJZ+N^Q\9p6D/4?+@!PsUB3\Vc>?#fW@!PsUB3\VaA70[e?#fW@!PsUUnsmes8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA*q=n)39ik1nb%Xf@_@JXCh-Q\9pWI!(d/JX;%@Q\9pVKRoJCJXCh-Q\9pWI!(d/JX;%@ -R!a%CKRoJCJX;%@Q]-g"KRB,>JZ+N^Q\9p6A70%T>*k2*W/QItN/FQmL6mjVQ]-g#N/![XMO09Z -W/QItN/Es\MPuJgQ]-g"KRB,FMPuJgQ]-g#N/"9iL8^>uW0ECBN/"9iL3IKMH!=6\>Zu>^@/p9, -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-ilnkLnYIdaZjkbg")F`QQKM`5T^6`Pp$Ec,@T?`5T]oR['h1L6mjVVhBGaN/EsTJZ+N^ -Q\9pgN/![XMPl,TQ]-fgKRp(\L6mjVW/QItN/FQmL8^&cW/QJ0N/"9iL8^&cW/QJ0N/"9iL8^&c -Q]-g#N/![PJX;=QVhBGaN/FNdI$]M;Q]-fgKRp(dOT5@\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-j0)n(HLQ -daZjreCMgec,@T?`5T^-]Y28&`Oidr]=bhs]Xk_f]t:qj]=bhQV5/lgE0l6/W0ECBN/"9iL8^&c -W/QItN/Es\MPuJgQ\9pfKRB,FMO0!IQ]-g#N/![XMPuJgQ]-g#N/![XMPuJgQ]-g#N/"9iL8^&c -W0ECBN/"9qOLUL4W0ECRPDcB(OJnD*\Q+Q,LY\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gi8j(SgtpK/f#5PH -]=bhh]Y1\Z['[3I['[3@XKAk:['[3IX/rFIA70%T>'X=OB3\VaA70[e<2bb1W1'!^RZsb>Q+Zt,r5ug?>BMV3SI!_35JX;%@Q\9pVKRp(dOPo3_ -i8j(Sgtp5uc,@T?]=bha['ZX*Unji_Unsl_V50o`Uka&2BMV3%9Lr/P6"j%c -BMV3"76spB5ug?>6n)39iQ]-fGA7110B6RloGAV,>A70Ul@!?I' -G@Y**D/4?+@!?I'MITb4A70Ul@!?I'G@Y**A70Ul@!?I'LM^[JA70Ul@#&T3B3\VB9Lrhm8Q\YW -BMV3%9Lrhm8Q\YWBMV3%9Lr8Z86APVBMV3%9Lr8Z89\TP]=biWs8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8Ud-hM-E)LM^[ZD.e'0CPQb>GAV,ND.eW@B6S3.LM^[ZFE!"PB8:SJ -LNIKjFE!"WE//OSLNIL%FDHYRE//OSLNIKjFE!"PB8:>:LNIKjFDuG7?t`>-BMV35:J"Y^88(dj -=A27f9Lr8Z86APV=A28m[']l5s8W-!s8W-!s8V`bq=OCVi8j(ZjQG4OhUp&qQ\9pFD.eW@B8:>: -LM^[ZD.eW@B8:>:LM^[ZFE!"WE//OSLNIKjFDut^H^K2'R!a%DI!(g(FdIc4Q\9pVKRoJCJX;%@ -LM^[:>ZuDW<-Mk\B3\VaA70%T>'FLbB3\VQ>ZuDW<1/r6o_/+\s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+@Sq<726`5T]^KRoJCJXCh-Q\9pWI!(d/JX;%@Q\9pfKRB,>JX;%@ -W/QItN/FQmL6mjVW/QItN/FQmL8^&cR?Ni5N/"9iL7+6hW/QITA70Ul@!?-hG@Y**A75''q>^Kp -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(Sgtp&`\sJ)$ -Q\9pVKRoJCJX;%@Q\9pVKRoJCJX;%@L4"?8I!(0kH^K2'L4"?8I!(d/JXCh-Q\9pVKRp%SI$]eL -Q]-g#N.uOnCN`TJL4"?d`PndEQ'[/TQ]-fgKRp(\L6mjVW/QItN/FQmL6mjVW/QItN/FQmL6mjV -W/QItKRoJKMO09ZW/QJ!PEVr(L8^>uW/QItN/Dgi?t`>-B3\VpI!bnns8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6/hJX;%@ -Q\9pfKRB,>JX;%@Q\9pgN/![XMPuJgQ]-g#N/"9iL6mjVW/QItN/FQmL8^>uW/QJ0P`Vi.OJnV5 -\XJb]R['h?Q+PB&s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n(HLQdaZjd`Pod7`Oidr['[3I['[3I['[3I -['[3@XKAk:["sBgH!=6\>Zu>^@!PsUB3\VqD.ff3OJnD*\XJb]R['h9OL^gEW0ECBR[(FPPe!6I -W1'!MP`WGEPc1%9\XJb]P`WGEPe!6IW0ECBR[(FPPigcVs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,coC_JAp#+ooi8j(SgtpK/f$`(!bKS4iMi:Y)5ug?> - -?#fW@!?-hG@Y**A70Ul@!?I'G@Y**A70Ul@!PsU=A28!:J"Y^88(dj=A27f9Lrhm8Q\YW -BMV3"76t$L86&)E=A27c76spB6&0Q$bKS62s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s2;mq -LNIKjD.e''@#&T3GAV,>A7110B6S3.LM^[ZD.e'7FGF^GLNIKjD.eWGE//OSLNIKjFDut^H\Z]^ -LNIKjFE!"WE//:CGB@q^D.eW@B8:SJG@Y)`9Lr8Z86APV=A27f9Lrhm8Q\YW=A28!:J"Y^8@5b2 -s8W-!s8W-!s8W-!o_/+IoC_>6n)39ig"bH4eCM.3Wcqu]LM^[JD/4oDB6S3.LM^[ZD.e'0CPQb> -LNIKjFE!"WE//OSR!a%3FDut^H\d?.R!a%4KS5_?FdRQ!Q\9pVKRoJKMO8d6G@Y)o>ZuDW<+fH> -H!=6\>Zu>^@!?-hB3\VaA70%T>+D1Sp[%)Cs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCV -i8j(1UnF'-JX;%@L4"?7KRoJCJX;%@Q\9pWI!(d7MO0!IQ]-g#N/![XMPuJgQ]-g#N/"9qOI(o` -W/QItN/FQmL7+6hQ]-g#N/!+0E-Gi#G@Y)o>Zu>^@&TNZs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7d%m-ilnkKD)oQ]-fgKRoJCJX;%@Q\9pVKRoJCJX;%@ -Q\9pWI!(0kH^K2'L4"?8I!(0kH^BD:Q\9pGKS5_?FdIc4Q\9pVKRp%SI"uf_BMV34>[#(b`RrDX -`k8m]N/![XMO0!IQ]-fgKRp(\L6mjVQ]-g#N/![XMPuJgQ]-fgN/FQmL6mjVW/QJ0N/![XMPuJg -W0EC3PEVr(L6mjVQ\9p&>Ztf:8SCmkR?Nj7s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)39ig"bH4eCMgec-+>U`5T^=bg")F`Pfa7 -f>PA@`Pnd?OI(WOQ\9pVKRoJCJX;%@Q]-g"KRB,FMO09ZQ\9pVKRoJKMPl,TQ\9pVN/EsTJX;%@ -Q\9pVKRp%SI$]eLQ]-g#N/![XMO0!IQ\9pVKRoJCJX;%@Q\9pVKRp%SI$]M;Q\9pgP`YqFs8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(Sgtp`>hTO-fbKS5L`Pod7`Oidr]=bhq`PoI%]t:qj -]=bhh]Y1\ZZtN6,BMV3TFE!S*MO09ZVhBGaN/EsTJX;%@Q]-fgKRoJCJX;%@Q\9pfKRB,FMO09Z -W/QItN/FQmL6mjVW/QItN/FQmL8^>uW0EC3PEVr0OJnD*W0ECBP`Vi4Q)Kq/W1'!MP`Vi4Q+Q)L.:W1'!MR['h9OQP?Rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s6T@Mkj7crjQG4OhTO-f`5T^-]Y1\Z['[3IX/rG1['[3I['[3I['[39V5.a/>%_)D -BMV34>ZuDW<+fH>W/QJ0P`Vi.OJnD*W0ECBP`WGEPc0h.W1'!MP`WGEPc1%9W0ECBR['h9OJnV5 -\XJb]R['h9OL^gEW0ECBR[)glkPtS^s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_JAp#tc2 -i8j(SgtpK/f$`(!bKS53XK>uCAQ;/b*jnnR!a%DI!(d/JVJQ!Q\9pWI!(6uKU7@C -R!a%CKRoJCJX;%@Q\9pVKRoJCJX;%@Q]-fgKRoJKMTa5gi8j(Sgtp5uc,@T?]=bha['ZX*Un"$H -S=Z7@St)=BS=,S)B3\V?76spB5ug?>?#fW@!?-hG@Y*,>?#fW@!?-hG@Y**A70Ul@!?-h -G@Y**A70Ul@!?-hG@Y**A70Ul?t`>-=A27f9Lr8Z86APV=A27c76spB6!-fOA7110B6S3. -G@Y**D/4?4CPQb>GAV,ND.e'0CPR"NLM^[ZFE!"WE//OSLNIKjFE!"WE//OSLNIKjFE!"WE-HDG -LNIKZD/4?+?t`>-=A27f9Lrhm8Q\YW=A27f9Lr8Z86APV=A28m[']l5s8W-!s8W-!s8W-!s7H$\ -kj7crjQGI^kL.l2bKS4cI!^WcB6RloLM^[ZD.e'0CPQb>LM^[JD/4oKE//:CLNIKjD.eWGE/&ae -LNIKiI!_6.FbY9jL4"?(KS5\FJX;%@Q\9pGKS5_?Fbb'XB3\VaA70%T>'FLbB3\VQ>ZtcF>%_)D -H!=6\>ZtcF>*k2*`5T^qs8W-!s8W-!s8W-!s8W-!s7H$\m.9ni]XjGgMMQq=R!a%4KS5\FJVJQ! -Q\9pEI!_35JX;%@Q\9pVKRoJCJX;=QQ]-fgN/FQmL6mjVQ]-g#N/![XMOBZlW/QItN/FQmL6mjV -G@Y)o>Zu>^?tW_JG@Y+RpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,_m-j0)n)iE\daZjHP`V5jMO0!IQ\9pVKRoJCJX;=QQ\9pVKRoJKMO0!ILkLGKI!(6uKSFl$ -R!a%2I!_6.FdIc4Q\9pGKS5_?FdIc4L4">]:J"MblMPuJgQ]-fgN/Es\MMH:m -BMV3!<)mU-8\;XKs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\o_/+=jQG4OhU9p)bKS5Sbg"eabJ_B=`5T^=bg")F`Pfa7\?2ctKRoJCJX;=Q -Q\9pVKRoJCJX;=QQ\9pVKRp(\L6mREQ\9pVKRoJCJXCh-Q\9pVKRoMQ)L.: -W1'!MR['h9OL^gEW1'!MR[*$jh#IESs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#+oo -g"bH-bg">Tc+CX%]=bha['[3I['[3I['[3@XKAk:['[3IL4">]:J#2(>%_)DB3\VQ>Zuo)E2]"_ -W0ECBP`Vi.OJnV5W1'!MP`Vi4Q)Kq/W0ECBP`Vi.OJnD*\XJb]P`Vi4Q)Kq/W1'!MP`Vi.OJnD* -W0ECleCO["s8W-!s8W-!s8W-!s8W-!s8W,coC_JAp$D;Ci8j(ZjQG4OhU9p)bKS53XK?5RDHKS' - -#e!W -HoaAi76spB5ug?>'X=O -B3\VaA70[e<+BHMG@Y)o>Zu>^?t3_YG@Y**A70Ul@!?-hG@Y**A70Ul@!?-hG@Y**A70Ul@!?-h -G@Y**A70%T>$+Hh -LNIKjFDuGGFGFsWGB@q^FE!"WE/&aeLNIKZFEE:[E-HDGLNIKjD.e'7FGFsWG@Y)`9Lr8Z86APV -=A28!:J"Y^88(dj=A28!:J"Y^8@uOJs8W-!s8W-!s8W-!s8W,kpA+@Sq<726k1nbFgtpK/f!qi^ -LM^[JD/4oDB6S3.LM^[JD/4oDB6S3.LM^[JD/4oKE-HDGLM^[ZFE!"WE/&aeLNIKiI!_6.FdRQ! -LkLGKI!(d/JX;%@Q\9pVKRnr4KSODWB3\Vc>?#6?>'X=OB3\VaA70%T>'X=OB3\VQ>ZtcF>'FLb -LkLGkXfB=Y`S'&'daZjd`Pnd7L5:M9L4"?8I!(0kH^BD:L4"?7KRoJCJX;%@LkLGKI!(6uKU7@C -Q]-fgN/FQmL6mjVQ]-g#P`V5jMO09ZW/QItN/Es\MO09ZW/QIcI!^'J?tW_JG@Y)o>["MA[/^1+ -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2i8j(Sgtnj'Uo96, -Q]-fgN/EsTJX;=QQ\9pVKRoJKMO0!IQ\9pVKRoJCJV\u4R!a%2I!^TqH^BD:LkLGJKRoJCJX;%@ -LkLG9I!]L2>%g]'Q\9qUbKS5Sbg!)TQ'[/TQ]-fgKRoJKMPuJgQ]-fgN/FQmL6mjV -W0EC3PEV>lMPuc$R?Ni5N/!aaPF%5cW/QItN/Es\MO09ZQ\9pVKRn>aCM6L8=A27b<)r)9h#IES -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2 -i8j(SgtpK/f#u:^`5T^=bg")F`Pfa7bKS5L`Pod7`Ku7/Q\9pWI!(d/JX;=QQ\9pVKRoJCJX;%@ -Q\9pVKRoJCJV\u4L4"?8I!(0kH\QopL4"?8I!(6uKU@.0LkLGKI!(0kH\QopL4"?&I!_6.FbY9j -L4"?&I!_35JV\u4Q\9qis8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o6m-iW_hV$]@ -daZjkbg")F`Pfa7]=bhh]Y1qi]t:qj`k8mp]Y0&IHWWs4=A27f9Lsq\E0lN@Q\9pgN/![XMO0!I -Q\9pVKRoJCJX;%@Q]-g#N/![XMPuJgR?Ni5N/!aaPGjFpR?Ni5P`V;sPGj_-W0EC3PEVr0OJnV5 -W0ECBR['h?Q)L.:W1'!MR['h9OJnV5W1'!MR['h?Q)Kq/W1'!MP`Vi4Q)L.:W1'!MR['h?Q)Kq/ -W1'"0jQHRCs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkL.l2bKS5L`PoI%]sP/R -['[3I['[3I['[3I['[3I['ZX*Uh%g]'B3\W=P`Vi.OJnD*W0ECBP`Vi4Q)L.: -W1'!MP`Vi4Q)Kq/W0ECBR['h9OJnD*W0ECBR['h9OJnD*W0ECBP`Vi.OJnD*`k8nTpA+ags8W-! -o_/+IoC_JAp#tc2i8j(ZjQG4OhU9p)['[3!Mi;:R>"(hJ=A27c76spB5ug?> -*s\[ -L4"?&I!_6.FbY9jL4"?8I!(0kH\d?.R!a%2I!^TqH^BD:LkLGJKRoJCJX;%@Q\9pVKRoJCJ]l9^ -i8j(LeCN'tf#5PH]=bha['ZX*Un"$HS=Z7@St)=BS=H1@B3\V04Zl_55t4"" -'FLbB3\VQ>Zu>^?tW_J -G@Y**A70Ul@!?-hB3\VaA70%T>'X=O@q9.pA70Ul@!?-hGAV,>A70UuCNjW2G@Y**A70%T>$+Hh -=A27c76t$L86&)E779RE76s@179E5SGAV,MI!^WjE-Gi# -GAV,>A70UuCNj;sLM^[JD/4?4CNjW2G@Y*:D.e'0CNjW2GAV,>D/4oDB6SH>LNIKjFE!"WE-HDG -LNIKjFDut^H\QopLNIKiI!^WjE-HDGLNIKjFDuG7?s$)n=A27f9Lrhm8Q\YW<)ck2:J"Y^85rPg -BMV4,[']l5s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkMYFadaZjkbftliH\Z]^LNIKjD.e'7FGF^G -GAV,NFDuG@CPR"NGB@q^FE!"WE//OSLNIKiI!^TqH^K2'LkLG;KS5_?Fbk^(N/NX]KRo)?N0f3K -Q\9pVKRo)?N/)LoG@Y)kA7]CY>%_)DB3\VQ>ZtcF>%_)DB3\VQ>ZtcF>%_)D@q9/+D.eTNH^BD: -L4"?(KS5_?Fbk^(L4"?(KS5_?Fbk^(Q\9pGKS5\FJV\u4Q\9pVKRoJCJX;=QQ]-g#N/![XMO09Z -Q]-fgN/Es\MPuJgQ]-fiPEV>dJTkX4G@Y)o>ZtcF>).3=s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQG4OhRK\fQ\9pVN/FNdI$]eLQ]-fgKRoJKMO0!I -Q]-fgKRoJKMO0!IQ\9pGKS5\FJVJQ!Q\9pGKS5\FJX;%@Q\9pGKS5_?Fa%A(=A280D/7>=c-+>U -bKS5Sbg">Tc-+>U`5T]^KRoJCJX;=QQ\9pVN/Es\MO09ZQ]-fgN/Es\MO09ZQ]-fgN/Es\MO09Z -Q]-fgN/Es\MO09ZQ]-fgKRoJCJX;%@L4">\>Zt6'86APVB3\X?s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA*Y-kLnYIdaZk#bfe2Rc,@T? -bKS5L`Pod7`Pfa7`5T]kV5/inH^BD:LkLGJKRoJCJX;%@Q]-fgKRoJKMO0!IQ\9pEI!_35JVJQ! -L4"?8I!(0kH\QopR!a%2I!^TqH\QopL4"?&I!^TqH\QopL4"?&I!^TqH\QopL4"?&I!`lG])Vg1 -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(SgtpK/f#u:^`5T^6`PoI%]t:qj -`5T^-]Y1qi]t:qjB3\VB9Lr8Z88(djL4"?7KRoJKMO09ZQ]-g#N/![XMO09ZQ]-fgN/EsTJX;=Q -W/QItN/FQuOI(o`W0EC3PEVr0OI;;rW0ECBP`V;sPGj_-W1'!MP`Vi4Q)Kq/W1'!MP`Vi4Q)Kq/ -W1'!MR['h?Q)L.:W0ECBR['h?Q)L.:W1'!MR['h?Q)L.:W1'!MR['h?Q)L.:o_/+\s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gi8j(Sgtp5uc,@T?]=bhh]Y1\Z['[3IX/rG1['[3I[&^:1 -['[2pI!]L2>%_)DBMV34>ZtcF>).3=R?Ni&PEVr0OJnD*W1'!MR['h9OJnV5W0ECBR['h9OJnV5 -W0ECBR['h9OJnD*W1'!MP`Vi4Q'mi"W0EC1N/F$ePIR`pi8j(foC_JAp#tc2i8j(LeCM7E]pt[a -H[C0C>[CE!5t+11U86&)E6n)39i\?2cD>Zu>^?t3_YG@Y)o>Zu>^?t3_YG@Y)o>Zu>^?t3_YG@Y)kA7]sq?t3_Y -G@Y)kA7]sq@!?-h@q9.pA7/nXATqZmC2@d3A7/nXATqZmG@Y**A70%T>$+Hh=A27S6q(*E5t+11 -FEE:TB6S3.GAV,>D/4?+@!?I' -LM^[JD/4?4CNjW2LM^[JD/4oKE-H/7GB@q^FDuGGFGFsWGB@q^FDuGGFGFsWH[C0rFDut^H\Z]^ -L4"?&I!^WjE-lq[GAV+t9Lrhm8Q8Yh=A28!:J"MbhU9p)['[2aD/4oKE-HDGLNIKjFDuGGFGF^GGB@q^FE!"WE//OS -H[C0qI!^TqH\Z]^L4"?&I!^TqH^K2'LkLG;KS5_?FdIc4Q\9pVN/EsTJX;%@Q\9pVN/EsTJV\u4 -LNIKZD/4?+?tW_JG@Y)o>Zu>^@!?I'LNIKiI!_35JV\u4Q\9pEI!_35JV\u4L4"?&I!_6.FbY9j -LkLG9I!^[&KU@.0LkLGJKRo)?N/3.?Q]-fgN/Es\MO09ZQ]-fgN/Es\MO09ZQ]-fgN/Es\MO09Z -LNIKJ>ZtcF>%_)DB3\WgeCO["s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-ilnkN:RT`k8mLN/Es\MO09ZQ\9pVN/EsTJX;=QQ\9pVN/EsTJX;%@LkLGJKRnr4KSY;7 -R!a%4KS5_?Fbk^(Q\9pGKS5\FJX;%@GAV+t9Lrhm8\;XKdaZjreCN'tf#u:^bKS5Sbg">Tc+'mU -LkLGJKRoJCJX;%@Q]-fgN/Es\MO09ZQ]-fgN/Es\MO09ZQ]-fgN/Es\MO09ZQ]-fgN/EsTJX;=Q -LkLGJKRnr4KSOYg=A27c76t$L89]/ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mkj7crjQG4OhU9p)bKS5Sbg")F`Pfa7bKS5L`Pp$Ec,RE- -Q]-fXKS5\FJX;%@Q]-fgN/EsTJW,MGQ]-fgKRnr4KU7@CLkLG9I!^[&KSFl$L4"?(KS5)-H\d?. -R!a%2I!^TqH\Z]^LNIKjFE!"WE/&aeLNIKiI!^TqH^K2's8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,coC_>6n(HLQg"bH-bg">Tc,@T?`k8mp]Y1qi]t:qj]=bhQV5.*[5ug?> -=A28!:J$n3MO0!IQ]-fgKRoJKMO09ZQ]-fgN/EsTJX;=QQ]-fgN/Es\MOBZlQ]-g#P`V5jMPuc$ -Q]-g#P`V;sPF7VuW0EC3PEVr0OIVo4W0EC6St)aDOJnV5W0ECBR['h?Q)Kq/W1'!MR['h?Q)L.: -W1'!MR['h?Q)Kq/W1'!MR['h?Q)L.:W1'!MP`V];V#UJps8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,coC_&&kLnYIdaZjkbg")F`Oidr['[3I['[3I['[3IX/rG1['[3I[%sOoB3\VB9Lrf$>#\I$ -B3\VQ>[!JQMPuc$R?Ni5R['h9OJnV5W0ECBR[';)PGj_-R?Ni5R[';)PGjq8R?Ni5R['D7S>_[6 -R?Ni5P`V;sPGj_-Q]-fgN/FR&Q(4G9LkLG*FED86DHKS'=A27f9Lr8Z86&)E=A27c76spB5t+11 -'FLbL4"?&I!^[&KU@.0L4"?'FE!"WE/&aeLNIKjFDut^H\Z]^ -LNIKiI!^WjE/&aeQ\9pjXKBq#f#5PH]=bha['ZX*Unji_Unsl_V50o`Uj$p&=A27f9Lr8Z86&)E -=A27c76spB5ug?>=A27c76tQk>*jnnL4"?7KRnr4KSFl$Q\9pEI!^[&KU7@CL4"?(KS5\FJW,MG -Q\9pKMi=!]MO0!IQ\9pKMi=!UJ]l9^i8j(Sgtp5uc,@T?]=bha['ZX*Un"$HS=Z7@St)44PFS57 -<)cje4Zl1s4@VIr7Qik'4Zl1s4B4g97Qik676sC+4B4g9'FLb@q9.r>?#*CAS57OG@Y)o>ZtcF>'FLbB3\VaA7/nXATqZm -@q9.pA7/nXATqZmG@Y**A7/nXATr!,B3\VaA70%T>%_)DB3\VR:J"Mb[D&J>'FLb -GAV,>FED_KFG>0iLNIKZFEE:[E//:CGAV,>D/4?4CNjW2GAV,NFDuG@CNjlBLM^[JD/4?4CNjW2 -GAV,>D/4?4CNjW2LNIKZFED_KFGFsWH[C0rFDuGGFG>0iL4"?&I!^TqH\QopL4"?&I!^'SCM6L8 -<)ck2:J"Mb["(pQ2gma -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n*'-,g"bH-bfuQ>PF%5c -Q\9pVN/Es\MO0!IQ]-fgN/EsTJX;%@Q]-fgKRoJKMO0!IQ\9pGKS5\FJV\u4Q\9pGKS5\FJVJQ! -LkLG9I!]O&8Q\YWS=Z8(gtp`>hU9p)daZk#bfe2Rc-+>UbKS5L`PndEQ&(*HLkLG;KS5\FJX;=Q -Q\9pVN/Es\MO09ZQ]-fgN/Es\MO0!IQ]-fgKRoJKMMQq=Q]-fgKRnr4KU7@CLkLG9I!^'SCKO8$ -pH[UZkE-lq[ -GB@q^FDuGGFGFsWLNILFXfDF$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@M -kj7crjQFt@f$`(!bKS5L`PoI%]t:qj`5T^-]Y2=t\ql#m_[6W0EC6St)aDOIVo4W1'!>PEVr6Q'mi"W1'!>PEVr6Q'mi"W1'!MR[';)PGjq8 -W1'!>PEVr6Q)L.:W0ECRXfDF$s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@Mkj7crjQG4OhTO-f -`5T^-]Y1\Z['[3IX/rG1['[3I['[3I['[3@XK@G>N+c!Y<)ck2:J"Y^87u12LNIL%N/Es\MOBZl -R?Ni&PEVDuPF7VuR?Ni&PEVDuPF7VuW0EC3PEVr6Q'mi"W0EC6St)aJQ)Kq/R?Ni&PEVDuPF%5c -R?Ni$N/Es\MM?M*G@Y)o>Zt6'86APV=A27f9Lr8Z86APV=A27f9Lr8Z86&)EB3\VQ>Zu>gCPR"N -L4"?&I!^[&KSFl$L4"?&I!^TqH\QopL4"?'FDut^H\Z]^L4"?'FDut^H\Z]^L4"?&I!^[&KT(hJ -bKS5L`PoI%]sP/RX/rG!V50o`Unji_Unsl2FECVY86&)E=A27f9Lr8Z86APV=A27c76t$L86APV -B3\W,KRnr4KSFl$Q\9pVKRnr4KU7@CQ\9pGKS5\FJV\u4N/NX]KRoJKMO09ZQ]-fgN/EsTJW,MG -LkLH"`PpcrkLnYIdaZjd`PoI%]sP/RX/rFnSt)=BS=H1@S=Z7LR[%Mj>"1Y;7Qik'4Zl1s4@VIr -7Qik'4Zl1s4@VIr7Qik'4Zl1s4B,9[LNIKZFEE:[E-HDGLNIKjFDut^H\Z]^LNIKjFDut^H\Qop -L4"?(KS5_?FbY9jLkLG;KS5/7KU7XTg"bHas8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2i8j(.['X=RATqZm@q9.pA7/nXAS57O -B3\VQ>ZtcF>%_)DB3\VQ>ZtcF>%_)DB3\VQ>ZtcF>%;)SG@Y)o>Zu>^?tW_JG@Y)kA7]CY>%;)S -G@Y)o>Zu>gCM-mUGAV,.>Zu>^?tsLqG@Y)rCi4H-@!?I'GAV,>D/4?;FGFsWGB@q^FDuSRI>3,r -GB@qNFED_KFGF^GGB@qND/4oKE-HDGGB@q^FDuG@CNjW2GAV,>D/4?4CPR"NGAV,>FED_DCPR"N -GB@qNFED_KFGFsWL4"?&I!^'ZFG>0iL4"?&I!^WjE/&aeGAV+p<)mU-8Q]5(BMV3!<)mU-8Q]5( -BMV3!<)mU-8\;XKs8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o.jQGI^kLnYIdaZj[]Y0)BE-HDG -LNIKZFEE:[E-HDGLNIKZFEE7bH\Z]^H[C0qI!^TqH\QopR!a%4KS5/7KSY;7R!a%4KS5/7KU7@C -LkLGJKRo)?N0f3KLkLGJKRnr4KSY;7LkLGJKRnr4KSY;7LkLG;KS5)-H\d?.L4"?(KS5)-H\d?. -Q\9pGKS5)-H\d?.L4"?&I!^TqH\QopL4"?&I!^TqH^BD:LkLGJKRnr4KSY;7Q\9pVN/Es\MO09Z -Q]-fgN/Es\MO09ZQ]-fgN/Es\MK`oQB3\VQ>ZtcF>'kUEs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gi8j(ZjQFt@eu4gpQ]-fgKRoJCJX;=QQ]-fgN/Es\MO09Z -Q\9pKMi=!UJW,MGQ\9pGKS5\FJV\u4Q\9pGKS5\FJV\u4LkLG9I!^TqHY6Se=A284H[Xi5kMYFa -g"bH;gtpK/f$`(!bKS5Sbg">Tc-+>U`5T]^N/EFEKSY;7Q\9pKMi=!]MO09ZQ]-fgN/Es\MO09Z -Q]-fgN/EFEKU7@CN/NX]KRoJKMMQq=LkLG;KS5/7KSFl$L4">\>Zt6'84>p8_[6 -R?Ni5P`V;sPGjq8S=Z7LR['h?Q'mi"W1'!MR[';)PGjq8W1'!>PEVr6Q'mi"W1'!>PEVr6Q(4G9 -`5T^qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#+oog"bH4eCMgec,@T?]=bha['[3I['[3I -X/rG1['[3I['[3IX/rF)7ibR?Ni$N/Es\MOBZlW0EC3PEVDuPGj_- -R?Ni&PEVDuPF7VuR?Ni5R[';)PGjq8R?Ni&PEVDuPGj_-Q]-fiPEV>lMOBZlQ]-fgN/Es\MO09Z -LkLG9I!^'SCMI['@q9.pA70.gDKfr5GB@q]I!^TqH\QopL4"?&I!^TqH\QopL4"?&I!^TqH\Qop -L4"?'FDut^H\Z]^GB@q^FDuGGFG>0iGB@q]I!^TqH\d?.L4"?7KRpM;[)Br&]=bha['ZX*Unji_ -Unsl_V50o`Uj$p&=A27f9Lr8Z86APV8k_r]9Lr8Z86APV=A27c76tQk>)7ibL4"?7KRnr4KU7@C -Q]-f\MiZtWJAS57OB3\VQ>ZtcF>%;)S -B3\VQ>ZtcF>%;)SG@Y)kA7]CY>%_)D@q9.\A7]CY>%_)DB3\VQ>ZtcF>%;)SB3\VMA7]7]ATqZm -@q9.pA7/nXATqZmC2@d3A70UuCNjW2GAV,>FED_KFF/@_LNIK^H[UZkE-HDGLNIKZFED_KFE_hK -GB@qND/4?4CNjlBGAV,>D/4?4CNjlBGAV,>D/4?;FE_hKGAV,>FED_DCNjW2LNIKZFED_KFGFsW -L4"?&I!^TqH\QopL4">pH[U*TCM6L8<)cjs<)mU-8Q8Yh<)ck2:J"Yn?>*,+<)cl0]Y4@Fs8W-! -s8W-!s8W-!s8W-!s8W-!s8VHWp%Rh9i8j(Sgtp`>hU9p)Unsl2D/4?;FE_hKLNIKZD/4?;FG>0i -LNIK^H[UWrH\Z]^L4"?&I!^TqH\QopL4"?&I!^[&KSY;7LkLG;KS5\FJV\u4LkLG;KS5/7KSY;7 -LkLG;KS5/7KSY;7LkLG;KS5\FJVJQ!LkLG;KS5\FJVJQ!LkLG;KS5)-H\d?.L4"?(KS5)-H\Qop -L4"?&I!^TqH\QopL4"?&I!^TqH\d?.R!a%4KS5/7KT(hJLkLGJN/ERPN0f3KQ]-fgN/EsTJX;=Q -LNIKJ>ZtcF>%_)D@q907m-juSs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -kj7d%m-j0)n']_:UnslRN/Es\MN!IPQ\9pVN/Es\MO0!IQ]-fgKRo)?N0fK\Q\9pGKS5\NMMQq= -Q\9pGKS5\FJV\u4LkLGJKRnl*H\QopGAV+t9Lrf$>1q]fkj7d%m-ilnkN:RTg"bH4eCMgec.L7` -bKS5Sbg">Tc*XjbQ\9pGKS5/7KU7XTQ]-fgN/Es\MO09ZQ]-fgN/Es\MO0!IN/NX]N/EFEKT(hJ -Q\9pGKS5/7KU@.0LkLG9I!^TqHZsRRB3\VB9Lr/P5u^f`kj7dpH[UZkE/&aeGB@q^FDuGGFE_hKGB@qNFEE:[E-HDGS=Z8Ns8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!kj7d%m-iW_hU9p)bKS5L`Poj0]#;S,`5T^6`Po3kZrKO\ -7Qik'4Zl_56&'c6L4"?(KS5/7KU7@CN/NX]KRoJKMO09ZQ]-fgN/Es\MOBZlQ]-fiPEV>lMOBZl -R?Ni5R[';)PGjq8R?Ni&PEVr0OI;;rR?Ni&PEVDuPGjq8R?Ni5R[';)PFS57W1'!>PEVr6Q'mi" -R?Ni5R[';)PGj_-R?Ni&PEVDuPGjq8R?Ni5R[';)PGjq8R?Ni&PEVr0OQc'"s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!m.9o:oC_&&kL.l2bKS5L`PoI%]sP/R['[3I['[3I['[3I['[3@XKB"7WgoZN -B3\V><)lmsZtcF>%_)DB3\VQ>ZtcF>%_)DB3\VQ>ZtWJAS57OB3\VQ>ZtcF>%_)D -B3\VMA7]sq?tW_JB3\VMA7]sq?tW_J@q9.pA70%T>'FLbB3\VTCi3`nATr!,G@Y)rCi4H6CMI[' -GAV,>D/4?;FE_hKLNIKZFED_KFGFsWGB@qNFED_KFE_hKLNIKZD/4?;FE_S;GB@qND/4?4CNjW2 -GB@qND/4?4CNjlBGAV,NFDuGGFE_S;GAV,>FED_DCNjlBGB@qNFEE7bHZsRRL4"?&I!^TqH\Qop -GAV+p<)mU-8S;:3<)ck1>Ztf:8Q]5(=A27f>[D)>8\;XKs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,coC_>6n)39ig"bH4eCN9rbD:h)GB@qND/4?;FE_hKLNIKZFED_KFG>0iGB@q]I!^3eI>;o` -L4"?&I!^TqH\QopL4"?(KS5)-H\d?.LkLG;KS5/7KSY;7L4"?(KS5)-H^BD:L4"?(KS5)-H\d?. -LkLG;KS5)-H\d?.L4"?&I!^TqH\QopL4"?&I!^[&KSFl$L4"?(KS5/7KSFl$L4"?&I!^[&KSFl$ -LkLG;KS5)-H\d?.LkLGJKRoJKMMQq=Q]-f\Mi%_)DB3\VQ>[#S*f)PdM -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)39ig"bGoXf@_HMO09Z -Q]-fgN/Es\MO09ZQ]-fgN/ERPN0fK\Q\9pKMiU85rPg]=biLpA*q=n*'-,kj7crjQG4OhV$]@daZjreCMgec-+>UbKS5Sbfur[Ukj\W -LkLG;KS5\NMN!IPQ]-fgN/Es\MO09ZN/NX]N/ERPN0f3KN/NXNKS5/7KSY;7LkLG;KS5)-H\d?. -L4"?&I!^'ZFBD4-=A27c76tEoAcMf1s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,coC_>6n(HLQdaZjreCMgec,@T?`5T^=bg")F`Pfa7`5T^-]Y0,SKT(hJ -Q]-f\Mi=!]MN!IPQ]-fXKS5/7KSY;7LkLG9I!^TqH[C*fL4"?&I!^TqHZsRRH[C0bFEE:[E-HDG -GB@q^FDuG@CNjlBGB@q^FE$I1n,NFfs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8VHWp#tc2g"bH;gtp5uc,@T?`5T^6`Pp$Ec-+>US=Z6?4Zl1s4@VIrBMV3HH[UZkE/&ae -LkLG;KS5/7KU7@CN/NX]N/Es\MO09ZR?Ni5P`V];UoUT!\?2d<['[3I[(Eua]=bhh]Y1\Z['[3I -X/rG!V51&SOJnV5R?Ni)St)44PFS57R?Ni5R[';)PF7VuR?Ni5R[';)PF7VuR?Ni&PEVDuPGj_- -R?Ni&PEVDuPF7VuR?Ni&PEVDuPF7VuR?Ni5R[*pQs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@M -i8j(SgtpK/f#u:^`5T^-]Y1\Z['[3I['[3@XKAk:['[3IX/rG1['YXBKNLo==A27b<)mU-8Q]5( -LkLGJN/F$ePF7VuR?Ni$N/F$ePF%5cR?Ni$N/F$ePF7VuR?Ni&PEVDuPF7VuQ]-fiPEVDuPF%5c -Q]-fgN/ERPN0fK\N/NXRMi=!]MMQq=Q]-fXKS5;BN/3.?LkLG;KS5)-H\d?.L4"?&I!^[&KSY;7 -L4"?&I!^TqH\QopL4"?&I!^TqH\QopL4"?&I!^3eI>;o`H[C0rFDut^HZsRRL4"?&I!^TqH\d?. -LkLGJKRo)?N3ot!]=bha['Zm8Xe_ehUnsl_V50o`Uj$p&=A27X9MJV_86&)E=A27f9Lr8Z86APV -=A27f9Lrf$>)7ibLkLG9I!^[&KSY;7Q\9pGKS5\FJW,MGQ\9pKMi=!UJW,MGQ]-fgN/Es\MN!IP -Q\9pKMisi8j'sV5.a/>%_)D -B3\VB>[D&J>$,$9B3\VB>[D&J>%_)D@q9.`>ZtcF>%_)DB3\VQ>ZtcF>%_)DB3\VQ>ZtWJAS57O -@q9.`>ZtcF>%_)DB3\VMA7]7]AS57OG@Y)kA7]t%CL^mdGAV,>A70.gDKfr5GAV,>FED_KFGFsW -GB@qRH[UWrHZsRRLNIKZFED_KFGFsWGB@qNFED_DCNjW2C2@d3D/4?4CNjlBGB@qND/4?;FE_hK -GAV,>FED_KFE_S;GAV,>FED_KFGFsWGB@q]I!^TqH\QopL4"?&I!^'SCK+85B3\V><)m$o85rPg -<)ck2:J"Mb -daZjd`PmUSE-H/7GAV,>FEE:[E-HDGL4"?&I!^TqH\Z]^H[C0qI!^3eI>3,rH[C0qI!^TqH\d?. -L4"?(KS5)-H\d?.L4"?&I!^[&KSY;7LkLG;KS5/7KSY;7Q\9pGKS5)-H\d?.L4"?(KS5)-H\Qop -L4"?&I!^3eI>3,rL4"?&I!^TqH\QopL4"?(KS5/7KSFl$L4"?&I!^TqH\QopL4"?&I!^[&KSY;7 -LkLG?Mi=!UJV\u4Q]-fXKS5;BN-Af?=Bo0F>ZtcF>11pOs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq<726i8j(Sgtp&`\sJA5Q]-fgN/Es\MO09ZN/NX]N/ERPN0fK\ -N/NXNKS5\NMMQq=Q]-fXKS5/7KT(hJQ\9pGKS5/7KSY;7LkLG;KS5)-HY6Se<)ckaN/IZ8s8W-! -s8W,kpA*q=n*'-,i8j(SgtpK/f$`(!bKS5Sbg">Tc-+>U`5T]^N/EFEKU7@CLkLG?Mi=!]MOBZl -N/NX]N/EFEKU7XTLkLG?Mi=!]MO0!ILkLGJKRnr4KSFl$LkLG9I!^TqH\QopL4">lD/36I86&)E -779S!I!bnns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -kj7crjQG4OhU9p)bKS5Sbg")F`Pfa7bKS5L`Pod7`Pfa7S=Z7,KS5;BN1#lnQ]-fgN/EFEKU7XT -LkLG;KS5)-H\QopL4"?(KS5/7KSFl$H[C0qI!^TqHZsRRGB@qNFED_KFE_S;GB@qND/4?;FIA>V -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkLnYI -daZjreCN'tf#u:^daZjreCKA%HU^.\7Qik'4Zm4bATr6*k2*Q]-fgN/F$ePF7Vu -R?Ni&PEVDuPF7VuR?Ni&PEV>lMOBZlQ]-fgN/F$ePF7VuQ]-f\Mi=!]MN!IPN/NXRMi=!]MN!IP -N/NX]N/ERPN0fK\N/NX]KRnr4KSY;7LkLG;KS5)-H\QopL4"?(KS5)-H[C*fL4">pH[UWrH\Qop -L4"?&I!^TqH\QopL4"?&I!^'ZFE_hKH[C0qI!^3eI>3,rL4"?&I!^[&KSY;7N/NXjV51`9]sP/R -Unsl_V50o`Unji_Unsl2FECVY86APV=A27X9MJV_84lQM=A27X9MJV_86APVB3\VrKS5)-H\d?. -Q\9pEI!^[&KT(hJN/NXRMi=!UJW,MGN/NX]N/Es\MN!IPQ]-f\MiFED_DCNjW2GAV,>FED_DCNjlBGAV,>FED_KFE_hK -L4"?&I!^TqH\d?.g"bHas8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-j0)n(HLQLkLF\<)mR9>#\I$B3\VQ>Zt*+ZtcF>$,$9=Bo0F>Zt*+ZtcF>%_)DB3\VQ>ZtWJATqZm@q9.`>ZtWJATqZm -@q9.pA70.gDI[3gG@Y)kA7]t%CL^mdGAV,1Ci4H6CNjW2GB@qNFED_KFG>0iGB@qNFEE7bHZsRR -GB@qNFED_KFE_hKGAV,>FED_DCNjW2C2@d3D/4?;FE_hKLNIKZFEE:[E-HDGGAV,>FED_DCPR"N -GB@q]I!^TqH[C*fL4"?&I!^3eI>3,rGAV+p<)m$o88(dj=Bo079Lr,^hU9p)['[2aD/4?4CNjlB -GB@q]I!^'ZFF/@_H[C0qI!^3eI>;o`H[C0bFEE7bHZsRRL4"?&I!^TqH\QopL4"?&I!^[&KSFl$ -L4"?&I!^[&KSFl$LkLG;KS5)-H\d?.L4"?&I!^3eIpH[U*[FF/@_GB@q]I!^3eI=$pH[UWrH\QopLkLG.H[U^'KR8&oLkLG;KS5/7KSFl$LkLG;KS5/7KSY;7N/NXRMi[D&J>&%kkdaZkJs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -kj7d%m-j)lgrmpdR?NhnMiTc+CX%LkLG;KS5\NMN!IPQ]-f\Mi=!]MN!IPN/NXNKS5\FJV\u4 -LkLG;KS5/7KSFl$L4"?(KS5)-H\QopL4">lFEE7bHZsRRC2@cV6q'O477KF&S=Z8Ns8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq;C>sk1nb?eCN9rbKJ,S -`5T^6`Pod7`Pfa7f>PA@`Po3k[$Q`/N/NXRMihU9p)daZjreCN=.hV$]@ -<)cje4Zl1s4B4g9GAV,MI!^TqH\QopLkLG;KS5/7KW(?)]=bi1gtp`>hV$]@daZjreCMgec-+>U -`5T^6`Pod7`Oidr]=bhh]Y1qi]t:qj['[3I['[HX]sP/R['[2pI!^[&KUJ$fR?Ni&PEVr6Q'mi" -R?Ni&PEVDuPF%5cR?Ni$N/ERPN/W[RQ]-fiPEV>lMO09ZQ]-fgN/Es\MOBZlR?Ni&PEVDuPP"SE -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o.jQG4OhU9p)bKS5L`PoI%]sP/R['[3I['[3I['[3I -X/rG1['[3I[&^:1C2@c[9MJV_84lQM=A27qA7^^XN0fK\Q]-fgN/Es\MOBZlR?Ni$N/F$ePF%5c -Q]-fgN/F$ePF%5cN/NX]N/Es\MO09ZN/NXRMi=!UJW,MGLkLGJN/ERPN/W[RQ\9pKMi3,rH[C0qI!^3eI>3,rL4">pH[UWrH[C*fL4">pH[UWrH\Qop -L4"?&I!^[&KSY;7LkLG;KS5/7KSY;7LkLGJN/ERPN0fK\['[3I['ZX*Unji_Unsl_V50o`Uj$p& -<)ck"9Lr8Z86APV8k_r]9Lr8Z86APV8k_r]9LrZ(AVc"mLkLG;KS5/7KSY;7Q\9pKMi=!UJW,MG -N/NX]KRo)?N0fK\N/NX]N/ERPN/3.?Q\9pGKS5)-HcsXXi8j(SgtpK/f#5PH]=bha['ZX*Un"$H -S=Z7@St)=BS=H1@<)cje4Zl1s4@VIr2)I-Z4Zl1s4>erP7Qik'4Zl1s4@VIr7Qik99LsALFE_hK -GAV,>FED_KFE_S;GAV,>FED_DCNjlBGB@qND/4?;FE_hKGB@qNFEDkVI=$ZtcF>$,$9B3\VQ>ZtWJAS57O=Bo0F>ZtcF>#\I$ -B3\V><)mR9>#\I$B3\VMA7]CY>%;)S@q9.`>ZtWJARf7^B3\VQ>ZtWJARf7^G@Y)kA7]7]ATqZm -@q9.\A7]7]ARf7^GAV,>FED_DCNjlBGB@qNFEDkVI>3,rH[C0bFED_KFGFsWGB@qNFED_KFE_S; -GB@qNFED_KFE_S;GAV,>FED_KFE_hKGB@qND/4?;FE_hKGB@qNFEE7bHZsRRH[C0bFEE7bH[C*f -L4">pH[U*TCK+85<)cjs<)m$o85rPg<)ck2:J"Mb;o`H[C0qI!^3eI>3,rH[C0sKS4]!I>3,rL4"?&I!^TqH\QopL4"?&I!^[&KSFl$ -L4"?&I!^3eI=$lFEDkVI>3,rH[C0fH[UWrH[C*f -L4">pH[UWrH\QopL4"?(KS5/7KSY;7LkLG;KS5/7KU7XTLkLG*D/36Y?>!MHLkLHFm-juSs8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA*Y-kMYFadaZj9PEUfUKU7XT -Q]-fXKS5\NMN!IPQ\9pKMi=!]MMQq=N/NX]N/EFEKT(hJLkLG?MiTc-+>U -`5T^=bg!Z"Wec=]N/NXNKS5;BN0fK\LkLG?Mi=!UJW,MGLkLG;KS5/7KSY;7L4"?(KS5)-H\Qop -L4"?&I!^'ZFF/@_GB@q^FDuGGFD"i^7Qik'4ZkSY1t'n)s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkLnYIdaZk#bfdrD`RrDX`5T^6`Pp$Ec,@T? -`5T]`PEV>lMO09ZN/NX]N/ERPN/W[RLkLG;KS5/7KR8&oLkLG.H[UWrH\d?.LkLG9I!^3eI>3,r -H[C0bFED_KFGFsWGB@qNFEEk.MZ<_Vs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_>6n)39ig"bH;gtp`>hVdJXi8j(5]Y.<65t+11lMN!IPR?Ni&PEVDuPF7VuR?NiH]Y4@Fs8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<[_Gi8j(SgtpK/f#5PH]=bhh]Y1\Z['[3I['[3I['[3I['[3IX/rG1['Zm8X`nl/ -erP7Qik'4Zl1s4BP9JGB@qNFED_KFE_hKGAV,>D/4?;FE_hK -GB@qNFED_KFE_hKGB@qNFED_KFE_hKGB@qRH[UWrH[C*fg"bHas8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#+oo -i8j(Ebft?RFD"i^@q9.`>ZtWJARf7^B3\VMA7]CY>%_)D<)ck1>Zt*+ZtcF>$,$9 -B3\VMA7]CY>%;)S@q9.pA7/nXARf7^B3\VMA7]7]ARf7^@q9.\A7]CY>%;)SG@Y)kA7]t%CMI[' -GAV,>FED_KFG>0iL4">pH[U*[FG>0iH[C0fH[U*[FGFsWGB@qNFED_KFE_hKGB@qNFED_KFE_hK -LNIKZFED_KFE_hKGAV,NFDuGGFE_hKGB@qNFED_KFE_hKGB@qNFEDkVI0iGB@qRH[U*[FE_hK -H[C0fH[UWrH[C*fL4">pH[U6fI>EQ0H[C0qI!^3eI>3,rL4">pH[U6fIlFEDkVIpH[U6fI>3,rH[C0fH[U6fI>3,r -L4"?&I!^[&KSY;7N/NXNKS4PdCK+85B3\W9V54.ks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2i8j(LeCLFlUl:4jQ]-fXKS5;BN/W[RN/NXNKS5;BN/W[R -N/NXRMiTc-+>U`5T]`PEV>lMO09Z -N/NX]N/ERPN/3.?LkLG;KS5/7KSY;7L4">pH[UWrH[C*fH[C0qI!^3eIlFED_KFE_hK -GB@qND/2R.75ZnY7Qik&6q..Us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<726i8j(SgtpK/f#u:^bKS5Sbg")F`Pfa7`5T^6`Pod7`ON%MN/NXRMipH[UWrH[C*f -daZkJs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@M -m.9o6m-ilnkNM:$i8j(bm-j<4ophVD7Qik676sC+4C_o5L4"?&I!^TqH^U(]bKS6'pA+ags7H$\ -o_/+IoC_JAp#tc2kj7crjQG4OhV$]@daZjkbg">Tc,@T?`5T^-]Y1qi]t:qj]=bhh]Y1qi]sP/R -]=bhh]Y0_sP>kL]B3\VeH[V6n(HLQ -daZjkbg")F`Oidr]=bha['[3I[&^:1['[3I['Zm8XgGIBX/rG5Xf@21KM"p4lFEDkVI>3,rH[C0fH[UWrH[C*f -L4">pH[UWrH[C*fLkLG;KS5/7KSY;7LkLG;KS5/7KSY;7N/NXNKS5;BN/W[RQ]-f\MipH[UWrH\QopL4"?(KS8%6hZ*WUs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA*Y-kMYFabKS4cI!]@6ARf7^ -B3\VMA7]7]ARf7^B3\VQ>ZtcF>$,$9B3\VB>[D&J>$,$9B3\VQ>ZtWJAS57O@q9.`>ZtcF>%;)S -B3\VQ>ZtcF>%_)DB3\VQ>ZtcF>%_)DB3\VQ>ZtcF>%;)S@q9.cCi4H6CNjW2GB@qRH[UWrHZsRR -L4">lFED_KFE_hKGB@qNFED_DCNjlBGAV,>FED_KFE_S;GB@qNFED_KFE_hKGAV,>FED_KFE_hK -GB@q^FDuGGFE_hKGB@qND/4?4CNjlBGB@qNFED_DCK+85=A27b<)m$o86APV=A27b<)m$o85rPg -=A28m[']l5s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=j7=kj7crjQG4OhV$]@ -daZjT['Y%!FD>W0GAV,>FED_DCNjlBGAV,>FED_KFF/@_GB@qNFED_KFE_hKH[C0bFEDkVI=$3,rL4">pH[U6fI>EQ0LkLG;KS5/7KO\P( -<)ckPI!af4kPtS^s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -kj7crjQG4OhRK\fLkLG?MiTc+CX%R?NhnMi=!]MN!IPN/NXNKS5;BN.u_, -LkLG9I!^[&KR8&oGB@qNFEDkVI=$pH[U*[FE_hKGB@qNFED86DKfr5B3\V04ZkSY1c7*H -@q90Ns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)39i -g"bH4eCMgec,@T?`5T^=bg")F`Pfa7`5T^6`Pn7/PDkEYN/NXRMiEQ0]=biWs8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2 -i8j(Sgtp`>hV$]@bKS5Sbg")F`Pfa7]=bhs]XkJW[(Eua['[3P]Y1\Z[(Eua['[2aFECJ]pH[U6fI3,rH[C0qI!^[&KSY;7 -LkLG;KS5;BN/3.?N/NXNKS5;BN/W[RN/NXRMi"(hJ=A27T4Zl>19gqH=ZtcF>%_)DB3\VB>[CoNAS57O@q9.`>ZtWJAS57O@q9.`>Zt67?>!MH=Bo07>[D&J>#\I$ -=Bo03<)m%*?ZtWJATqZmC2@d&Ci4H6CNjlBGB@qNFED_KFE_hKGB@qND/4?4CNjlB -GAV,>FED_DCL^mdGAV,>FED_DCNjlBGB@qNFED_KFE_hKGB@qNFED_KFE_hKGB@qND/4?4CNjW2 -GB@qND/4KFID/4?4CNjlBGAV,>FED_DCNjlBGB@qNFED_KFE_hKGB@qNFED_KFGFsWGB@qND/4?;FE_S; -GB@qNFED_KFE_S;GB@qND/4?;FE_S;GB@qND/4?4CNjlBGB@qNFED_DCNjlBGB@qRH[U*[FG>0i -GB@qNFEE7bH\QopLkLG.H[U^'KR8&oLkLG.H[U^'KQhN[B3\VMA7`]u`W,uUbKS5Sbg!N%[#Bp%N/NXRMip8=A28#Ci5&^KSY;7LkLG;KS5/7KSY;7LkLG;KS5/7KSY;7 -LkLG;KS5/7KSY;7LkLG;KS5/7KSY;7L4"?&I!^TqH[C*fL4">pH[U6fIpH[UWrH[C*fL4">pH[U^'KSY;7LkLG;KS5;BN/3.?N/NXRMi)7ibLkLG;KS5/7KSY;7LkLG;KS5/7KSY;7LkLG;KS5;BN/W[R -LkLG;KS5/7KR8&oH[C0fH[U*[FMu/;i8j(SgtpK/f#5PH]=bha['ZX*Unji_S=Z7@St)44PGG%N -<)cjd6q'O477BU5[E/4H[C*fH[C0fH[U6fI=$hQ*`[GAV,*A7]sq?tsLqG@Y)rCi3lj>%;)S=Bo0BA7]CY>%;)S -B3\VQ>Zt67?>!MHB3\VQ>Zt67?>!MH=Bo0F>Zt*+#\I$<)cjs<)m%*?=RMW -@q9.\A7]7]ARf7^C2@d&Ci4H=FE_S;GAV,>FED_DCNjW2C2@d3D/3m&DKfr5=Bo03<)n-ZCNjlB -GAV,>FEDkVIlFED_KFE_hKC2@d3D/3m&DJF!*C2@d&Ci4H6CNjlBGB@qNFED86DHKS' -=A27f9LqcL9hJ)R8k_rO9MJ,Q9hJ)R779SO[']l5s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+Em-j0)n)39ii8j(SgtpK/f$`(!Unsl2D/3m&DJF!*C2@d3D/4?4CNjlB -GB@qNFED_KFE_S;GB@qND/4?;FE_S;H[C0bFED_DCO:DVGB@qNFED_KFE_S;GB@qND/4?;FE_hK -GB@qND/3m&DKg2EC2@d3D/4?4CNjlBGB@qNFED_KFE_hKGB@qNFEDkVI=$EQ0 -H[C0qI!^3eI`PmdoN/3.?LkLG;KS5/7KSY;7LkLG;KS5;BN/3.? -LkLG;KS5/7KT(hJLkLG?MiTc-+>U -`5T]cSt(atN/W[RN/NXNKS5)-H\d?.H[C0qI!^TqHZsRRH[C0bFED_KFE_hKGB@qNFED_KFE_hK -GAV,1Ci4H6CL^md@q9.\A7\_>ZsQa77BU5@q9.tH[U6fI>EQ0H[C0sKS5/7KSY;7LkLG;KS4]!I>EQ0LkLG;KS5/7KSY;7 -LkLG.H[U^'KR8&oH[C0fH[U6fI=$D/4?;FF/@_H[C0qI!^3eI>3,r -H[C0qI!^3eI>EQ0LkLG;KS5/7KSY;7N/NXRMi77BU5779RE76s@177BU5779R:9MJV_84lQM -@q9/,KS5)-H\d?.LkLG;KS5/7KR8&oLkLG;KS5/7KSY;7LkLG;KS5/7KSY;7H[C0fH[U6fI"(hJpH[U6fI=$ZtWJARf7^=Bo0F>Zt67?[CB/[D&J>%;)SGAV,*A7]sq?tsLq -C2@d&Ci3`nASQ%!GAV,1Ci4!(DJF!*C2@ce<)l@T79!5dGAV,1Ci4!(DKg2EGB@qNFED_DCNjW2 -GAV,1Ci4!(DI[3gC2@d#>ZtlYDJF!*C2@d3D/4?4CNjW2@q9.C9MJ,Q9hJ)R8k_rZ76sO>9iXVJ -9sh:7s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+Em-ilnkMYFag"bH;gtpK/f#5PHN/NX0Ci4!(DJF!*GAV,1Ci4H6CNjW2GB@qNFED_DCNjW2 -GAV,>FED_KFE_hKGB@qNFED_DCNjW2GB@qND/4?;FD>W0GB@qND/4?;FD>W0GB@qND/3m&DKg2E -C2@d3FED_DCNjlBGAV,>FED_KFF/@_GB@qRH[U6fI=$EQ0H[C0sKS5/7KSY;7 -LkLG;KS5/7KR8&oLkLG*FED_KFD>W0<)cjt76uljN;rqXs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC_>6n(HLQg"bH4eCN'tf%A3ibKS5Sbg">Tc,@T?Q]-fXKS5/7KR8&o -H[C0fH[U6fI=$bKS5Sbg")F`Pfa7bKS5L`Pod7`O*"Z=Bo0eI!^[&KSY;7LkLG;KS5;BN/3.? -LkLG;KS5/7KSY;7LkLG;KS5;BN/W[RN/NXRMiTc,@T?]=bhh]Y1qi]sP/R]=bha['[3I[(Eua -Q]-f(9Lr,^EQ0H[C0fH[U6fI=$W0GB@qRH[U6fI=$EQ0LkLG;KS5/7KT(hJ -LkLG;KS5;BN0fK\N/NXRMi'kUELkLG.H[U6fI=$EQ0LkLG.H[U6fI=$[Dc(I=$%;)S@q9.Q>[D&J>$,$9<)cjs<)lmsZsQa77BU5779RH9Lro7DJF!*C2@d&Ci4H6CMI['C2@d&Ci4!(DJF!*B3\VMA7]CY>%;)S -@q9.`>ZtWJASQ%!C2@d&Ci3`nAP,Wj8k_rO9MJMU5tXgF779R64Zl/$76_Ci4!(DJF!*C2@d&Ci4H=FD>W0GB@qNFED_KFE_hKGB@qNFED_KFE_hK -GB@qNFED86DKg2EC2@d3FED86DKg2EGB@qNFED86DKg2EGB@qACi4H=FE_hKC2@d3FED_KFE_hK -GB@qND/4?;FE_hKGB@qRH[U6fI=$N/3.? -H[C0fH[U^'KR8&oLkLG.H[U^'KR8&oH[C0fH[U6fIs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -kj7d%m-iW_hV$]@daZjkbg">Tc,@T?bKS5Sbg!2iXc/0sH[C0sKS4]!I>EQ0H[C0fH[U6fIU -`5T^6`Pod7`Pfa7`5T]BH[TXFDL6_YLkLG.H[U^'KSY;7LkLG;KS5/7KSY;7N/NXAH[U^'KSY;7 -N/NXRMiVg]=bhh]Y1\Z[(Eua]=bha['Zm8X]Sh7=A27f9Lr8j?Asf$ -N/NXRMiEQ0 -LkLG;KS4]!I>EQ0H[C0sKS4]!I>EQ0H[C0fH[U*[FF/@_GB@qRH[U*[FE_hKGB@qNFED_KFD>W0 -C2@d&Ci4H6CNjlBGB@qRH[U6fI=$_mA -S=Z7@St'Fu>"(hJ3,rGB@qRH[U6fI=$#\I$ -=Bo03<)lms!MHB3\VB>[CoNARf7^@q9.`>ZtWJARf7^@q9.\A7\_>%;)S@q9.Q>[D&J>$,$9@q9.\A7]7]ATr!, -B3\V?76s@177KF&779R64Zl1s4@MY,4$5Yq4Zm4bA^])Zs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7d%m-ilnkN:RTg"bH;gtpK/f!qi^ -H[C0UCi4H6CMI['GAV,>FED_KFD>W0GB@qACi4H=FD>W0C2@d3D/3m&DJF!*GB@qACi4H=FE_S; -GB@qNFEDkVIW0GB@qACi4!(DKg2EGB@qNFED_KFE_hK -LkLG^XKCFAkPtS^s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o6m-iW_hV$]@daZj[]Y0i,S;`AbH[C0sKS5/7KR8&o -H[C0fH[U6fIUbKS5$St(UiKR8&oH[C0bFEDkVI=$W0GB@qNFED_KFE_hK -GB@qACi4!(DMWt!]=biWs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkLnYIbKS5Sbg")F`RrDX`5T^6`Po3kZrC") -LkLG;KS5/7KSY;7H[C0sKS4]!I>EQ0LkLG;KS4]!I>EQ0LkLG;KS5;BN/W[RN/NXRMiEQ0LkLG?MifH[C0fH[U^'KSY;7LkLG.H[U^'KR8&o -LkLG.H[U6fI=$[E/4H[C*fH[C0fH[U^'KR8&oLkLG.H[U6fI=$Zt*+<)m%*?Zt67?:@7N7Qijk1c.'H1cmf_<)ckAD/36Y?>!MHB3\VQ>ZtcF>%;)S -@q9.`>ZtWJAS57O@q9.Q>[D&J>#\I$=Bo03<)lmsW0 -GB@qACi4H=FE_S;C2@d&Ci4H=FD>W0C2@d3D/3m&DKg2EC2@d3FED_KFF/@_GB@qRH[U*[FE_hK -GB@qNFED_KFD>W0GB@qACi4!(DJF!*GB@qNFED_KFF/@_R?NiXbg$1fs8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<726i8j(ZjQG4OhV$]@g"bH-bg!N%[$d,ALkLG;KS4]!I=$W0 -C2@d&Ci4!(DKg2EGB@qNFED_KFE_hK<)cje4ZoO:V#UJps8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n)iE\g"bH4eCN'tf#u:^bKS5Sbg"Scf#u:^ -N/NXAH[U6fIW0GB@qNFEDkVI@Qn!g"bHas8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<726i8j(Sgtp]-bKJ,S`5T^6`Pp$Ec,@T?L4">XA7^+7I=$EQ0LkLG?Mi<"0I>j)CH[C1"Mi6n(HLQdaZjkbg")F`Oidr]=bhh]Y1\Z['[3I -]=bha['[HX]nh>p<)ck"9Lr,^EQ0H[C0sKS4]!I=$W0GB@qACi4H=FD>W0GB@qACi4!(DJF!*C2@e"]Y37akLnYI -daZjd`PoI%]sP/RX/rFnSt)=BS=H1@S=Z7@St'Fu>"(hJ8k_rJ6q'^A9gqH=8k_rJ6q'O477BU5 -8k_rJ6q(*E6"=G:H[C0fH[U6fI=$[CN;?Zt67?Zt67?>!MH -=Bo03<)lms!MH<)cjZ4?Z;19k.^FR?NiQ`PqKCq>^Kps8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,kpA+(Hp%7tRkj7d%m-ilnkMYFag"bH;gtp`>hSdCPS=Z6tH[TXFDKg2EGB@qACi4H=FD>W0 -C2@d3FED_DCNjlBGB@qNFED_KFE_hKGB@qRH[U6fIhV$]@daZjreCMRW`MB?+N/NXAH[U*[FE_hKC2@d&Ci3`nARf7^C2@d&Ci4H=FE_hK -GB@q/>[Bl_4C_o5s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\m.9o6m-iW_hV$]@daZk$gtpK/f$`(!daZk$gtoug`Hur[H[C0fH[U6fIW0C2@d3FEE=lKXA+nm.9oMs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-iW_hV$]@ -bKS5Sbg")F`Pfa7`5T^&['WG!9m:]$H[C0fH[U6fI=$EQ0 -LkLG;KS5/7KSY;7H[C1"Mij)CLkLG.H[Uj2N-fo" -N/NXRMi@#op&G'ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+IoC_JAp#+oo -g"bH;gtpK/f$`(!bKS5L`PoI%]t:qj]=bha['[3I['[3I['[3@XKAk:[&^:1['[3@XKAP)XfJP* -X/rF^Mi<"0I=$W0 -@q9.\A7]7]ASQ%!@q9.cCi4H=FD>W0GB@qRH[U6fI=$4@MY,779RH>[Dc(I>EQ0 -H[C0sKS5/7KSY;7LkLG.H[U6fI=$hU9p)['[3!Mi;k%FE_hKC2@d3FED86DKg2EGB@qNFED_KFD>W0 -GB@qNFED_KFF/@_H[C0fH[U6fI[CN;?>=:o@q9.cCi3`nAO\gF=Bo2!oC`.`s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726 -kj7crjQG4OhWEVKg"bH;gtq2KgtCK>i8j(.['YXBKR8&oGB@qRH[U*[FD>W0C2@d&Ci52iN6BGi -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq<726g"bH;gtp5uc-+>U`5T^6`Pp$Ec%^Um -=Bo0VFED_KFE_hKGB@qNFED_KFE_hKGB@qRH[U6fI=$EQ0LkLG?Mi6n)39ig"bH;gtpK/f$`(! -bKS5L`Pod7`Oidr]=bhh]Y1\Z['[3I['[3I['Zm8XgGIBX/rG(XKAP)XfJP*X/rG!V50'.N/W[R -N/NXRMi<"0I=$W0GB@qACi4!(DI[3g@q9.\A7]7]ASQ%! -C2@d3FED_KFE_hKH[C0fH[U6fI>EQ0H[C0sKS5;BN1#ln`5T^qs8W-!s8W-!s8W-!s8W-!s8W-! -m.9o6m-iW_hU9p)bKS5L`PoI%]rS6:X/rG!V51/nXe_ehUnsl6H[S=N77KF&2)I-Z4ZkSY1c7*H -2)I-I1c.'H1bL=2779RZCi4!(DJF!*C2@d&Ci3`nASQ%!@q9.\A7]7]ASQ%!@q9.\A7]7]ARf7^ -@q9.\A7]7]ASQ%!C2@e"]Y37akLnYIdaZjkbg!c4]sP/RX/rFnSt)UQUn"$HUnslWSt'P3DFHr^ -779R56q'O477BU5779R:9MJ,Q9gqH=8k_rO9MIrD79Ef$H[C0sKS5/7KR8&oLkLG.H[U^'KT(hJ -H[C0sKS4]!I=$V]=bi1gtq8]n*'-,kj7d%m-j0)n*'-,kj7crjQGI^kI\C?=Bo07>[CB/^Kp -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq=OCVkj7d%m-j0)n*'-, -i8j(ZjQGI^kLnYIdaZjT['Z6bPC%Y)GB@qACi4H=FD>W0H[C0bFEDkVI^Kpo_/+Em-j0)n*'-,i8j(ZjQGI^kLnYIi8j(ZjQGI^kL.l2 -['[2rKS3H4?j)CLkLG;KS5;BN/3.?N/NXNKS5/7KWD2Vs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-ilnkLnYIbKS5L`PoI%]t:qj -['[3[]Xk_f]sP/R]=bhQV5-^W9it([8k_r]9LrZ(AVc"mLkLG;KS4]!I>j)CH[C0fH[U6fI=$j)CH[C0fH[WN=^&S-4s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o6m-ilnkMYFag"bH;gtpK/f$`(!bKS5Sbg")F`Pfa7 -]=bhh]Y1qi]sP/R]=bha['[3I['[3I['[3I['[3I['[3I['[3I['Zm8XdkuQLkLG.H[U6fI=$W0C2@d3FED86DJF!*@q9.\A7]7]ARf7^@q9.\A7]LlDJF!*C2@d7H[U6fI=$hTO-f`5T^-]Y1\Z[&^:1UnslfXKAP)XfJP*X/rG!V50'.N-BAc=Bo0)9MJ,Q9gqH= -[Dc(I>EQ0LkLG;KS5/7KR8&oLkLG.H[U^'KR8&oH[C0fH[U6fI;3S9 -GB@qNFED_KFD>W0GB@qACi7\Nf)PdMs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+@Sq<726kj7d%m-j0)n)39ii8j(ZjQG4OhTO-fUnsl6H[TC7AP,Wj -8k_rO9MJ,Q9iP(l8k_rY<)lms=:oLkLGOSt*F*^#7u7kj7d%m-j<4p%7tR -o_/+QpA+@Sq=OCVm.9o:oC_kEkNM:$kj7ckgto*5Xh26Z`5T^=bg"hrhVdJXi8j(bm-j0)n*'-, -kj7d%m-j0)n*'-,m.9o:oC_bLq=OCVo_/+QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCVp[%)0oC_>6n*'-,kj7d%m-ilnkMYFa -i8j(Sgtoug`MB?+S=Z7,KS4]!Ij)CS=Z7X['\92f(A\3 -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s7H$\o_/+IoC_JAp#tc2kj7d%m-j0)n*'-,i8j(foC_>6n*KZ=g"bG[V5/W0 -@q9.cCi7G?c2[hDs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA+ILkNqg5kj7d)oC_JAp%7tRo_/+QpA*Y-kBhQ( -H[C1"Mi>Tn`Urm"s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA*q=n)39i -g"bH4eCMgec-+>U`5T^6`PmXdKN(oNGB@qNFEDkVI=$Tc,@T?`5T^6`PoI%]t:qj -]=bhh]Y1qi]t:qj]=bhh]Y1qi]u7n/]=bhq`PoI%]sP/RS=Z7,KS4]!I=$6n)39ig"bH4eCMRW`Pfa7]=bha['[HX]t:qj -]=bhh]Y1qi]t:qj`5T^-]Y1,;Ul:4j@q9.>6q'R.4@VIr8k_s'FED_KFD>W0C2@d3FED86DJF!* -C2@d&Ci4THI=$hXpO;s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7ckgtpK/f$`(!bKS5L`Pod7`Q#R% -8k_roCi4!(DKg2EH[C0UCi4THI=$j)C -H[C1"Mi=0tSH&Whs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,+['WG!:"e=Y -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,coC_&&kLnYIdaZjd`Pod7`Oidr['[3I['[3I[(Eua]=bhDN/C5$9gqH=8k_rO9MJJcj)CH[C0fH[U6fI=$hU9p)daZjkbg">Tc-+>UbKS5Sbg")F`QQKM`5T^6`Pod7`Pfa7 -`5T^6`Pp$Ec,@T?daZjkbg"Scf#u:^]=bhXXKA"aS9oU2GB@qACi4!(DI[3g@q9.\A7]7]ARf7^ -@q9.pFEEJ"N2s%^bKS5toC_bLq>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq<[_Gkj7crjQG4OhV$]@bKS5Sbg")F`Pfa7`5T^6`Pod7`QQKMbKS5Sbg")F`QQKM -bKS5ZeCN'tf$`(!X/rF^Mi;CeDN'L4S=Z7OXKB+I]u7n/daZk+jQGann+?>Ls8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8VHWp$D;Cm.9o6m-ilnkLnYIdaZjd`Pod7`Oidr]=bhh]Y1qi]t:qj -`5T^-]Y28&`Oidr`5T^6`Pp$Ec-k+mdaZk$gtoug`MB?+LkLG.H[VEUS?&`n['[3Y`Pp$Ec.Un/ -i8j(bm-j<4p%7tRs8W-!s8W-!s8W-!o_/+\s8W-!s7H$\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq=OCV -m.9o:oC_>6n*'-,kj7d%m-ilnkNM:$i8j(ZjQGI^kMYFai8j(ZjQGann*'-,kj7d%m-j0)n*'-, -m.9o:oC_bLq=OCVo_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVs8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+IoC`.`s6T@Mm.9o:oC_JAp$D;Cm.9o:oC_JAp$D;Cm.9o:oC_JAp%7tR -o_/+QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+Em-ilnkLnYIdaZjkbg">Tc-+>U`5T]SMi:8%9m:]$C2@d3FED_KFE_hK -C2@d&Ci4THI;3S9H[C0UCi4!(DJF!*H[C0UCi4THI=$j)CH[C0fH[U6fI=$6n)39i -i8j(Sgtp`>hV$]@g"bH4eCN'tf#u:^daZjkbg">Tc-k+mbKS5ZeCN'tf$`(!daZjreCN'tf$`(! -g"bH;gtpuMkMYFai8j(bm-iW_hTO-f`5T^-]Y28&`OidrdaZk+jQGn$p&G'ls8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_JAp$D;C -i8j(Sgtp`>hU9p)bKS5Sbg">Tc-k+mdaZjkbg">Tc-+>UdaZjreCN'tf%Jj8i8j(ZjQGann*KZ= -o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W,coC_JAp#tc2i8j(Sgtp`>hU9p)daZjd`Pod7`Pfa7`5T^=bg")F`Pfa7bKS5Sbg">Tc-+>U -daZk$gtpuMkMYFai8j(foC_JAp$D;Co_/+QpA+@Sq=OCVo_/+QpA+@Sq>^Kps8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCVm.9oBpA*q=n*KZ= -kj7d%m-j0)n*'-,kj7d)oC_>6n*KZ=kj7d)oC_>6n+?>Lo_/+QpA+@Sq=OCVs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+ags8W-!s8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2 -g"bH;gtpK/f#u:^`5T^6`PoI%]h1sm@q9.cCi4!(DKg2EC2@d&Ci4!(DKg2EC2@d7H[TXFDJF!* -C2@d&Ci4!(DJF!*C2@d7H[U6fI=$6n(HLQdaZjkbg")F`Oidr['[3I['[HX]sP/R -['[2><)l@T77p6J779R:9MJ,Q9m_58H[C1"Mi<"0I=$hV$]@g"bH;gtp`>hV$]@g"bH;gtp`>hV$]@i8j(ZjQGI^kMYFai8j(bm-j0)n*KZ= -m.9o:oC_bLq=OCVs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o:oC_>6n*'-,g"bH;gtpK/f%Jj8 -g"bH;gtpK/f%Jj8g"bH;gtp`>hV$]@i8j(ZjQGI^kNqg5m.9oBpA+@Sq=OCVs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o:oC_JAp#+oo -i8j(SgtpK/f$`(!daZjkbg"Scf$`(!daZjreCN'tf$`(!daZjreCN=.hV$]@i8j(bm-j<4p$D;C -m.9oBpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCV -m.9oBpA+@Sq=OCVo_/+QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQG4OhU9p)bKS5Sbg")F`QQKM -N/NWe9MK8^Kpkj7b;<)l"B4Zbbh -4$5Yf4?Z;19o+IUs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s6T@Mkj7crjQFt@f#u:^`5T^-]Y1qi]sP/R]=bha['Z6bP=7l.779R56q'^A9gqH= -=Bo0kMi<"0I=$6n*'-,i8j(ZjQGI^kLnYIi8j(Sgtp`>hV$]@ -g"bHBjQG4OhVdJXi8j(ZjQGI^kMYFakj7d%m-j<4p$D;Cm.9o:oC_bLq>^Kps8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+(Hp$D;Cm.9o6m-ilnkMYFag"bH;gtp`>hV$]@g"bHBjQG4OhVdJX -i8j(ZjQGI^kMYFakj7d)oC_JAp$D;Co_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp$D;Ckj7d%m-ilnkMYFag"bH4eCN'tf$`(! -daZjreCN'tf$`(!daZk$gtp`>hV$]@i8j(ZjQGann*KZ=m.9o:oC_bLq=OCVs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+ags7H$\o_/+QpA+@Sq=OCVm.9oBpA+ags7H$\o_/+\s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA*q=n)39idaZk#bfe2Rc,@T?bKS5N]Xg^/9knK^C2@d&Ci4!(DJF!* -C2@d&Ci4!(DJF!*C2@d&Ci4!(DJF!*H[C0UCi4!(DJF!*C2@d&Ci4!(DJF!*H[C2@s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!m.9o:oC_>6n*KZ=m.9o6m-eFpAMl;$2)I-O4?Ybg4[hb-@q9.tH[WiO`W,u< -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n(HLQ -g"bH-bg")F`O*"Z]=bha['[HX]sP/R@q9.>6q'O479)cB779R56q(TrAUAcPH[C0fH[U6fI=$hV$]@i8j(ZjQGI^kMYFa -i8j(bm-j0)n*'-,kj7d)oC_JAp$D;Co_/+QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCV -m.9o:oC_>6n*'-,i8j(ZjQG4OhV$]@g"bHBjQG4OhV$]@i8j(ZjQG4OhVdJXi8j(ZjQGann*'-, -m.9o:oC_bLq=OCVo_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8VHWp$D;Cm.9o6m-j0)n)39ii8j(Sgtp`>hU9p)daZk$gtpK/f%Jj8daZk$gtp`>hU9p) -g"bH;gtpuMkMYFam.9o6m-j<4p$D;Co_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+ags7H$\ -o_/+\s8V`bq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+ags8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<726 -i8j(SgtpK/f#u:^bKS5Sbg")F`Jf_68k_rhA7]LlDJF!*C2@d&Ci4!(DJF!*C2@d&Ci4!(DJF!* -C2@d&Ci4!(DJF!*C2@d&Ci4!(DJF!*C2@d&Ci721`W,u6n*'-, -i8j(ZjQGI^kBhQ(/hAS31c.'H1cmf_4$5Z.>[Dc(I=$hVdJXg"bHBjQG4OhVdJXi8j(ZjQGann)39ikj7d%m-j0)n*KZ= -m.9oBpA+@Sq=OCVs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCVm.9o:oC_JAp#tc2kj7crjQGI^kLnYI -g"bH;gtpuMkLnYIi8j(ZjQG4OhVdJXi8j(ZjQGI^kMYFakj7d%m-j0)n*KZ=m.9o:oC_JAp$D;C -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+(Hp$D;Cm.9o6m-j0)n*'-, -i8j(ZjQG4OhV$]@g"bH4eCN'tf$`(!g"bH4eCN=.hU9p)daZk$gtp`>hVdJXi8j(ZjQGI^kNqg5 -m.9o:oC_bLq=OCVs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq>^Kpo_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-ilnkL.l2daZjkbg")F`Pfa7 -`5T\p<)mF=ARf7^@q9.\A7]LlDJF!*C2@d&Ci4!(DJF!*C2@d&Ci4!(DJF!*C2@d&Ci4!(DJF!* -C2@d&Ci4!(DJF!*o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2i8j(Sgtp`>hV$]@R?Ngl1c-g9/N#@A -/hAS31c.fu9m:]$GB@qRH[U6fI@Qn!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,coC_>6n(HLQdaZjkbg")F`Oidr['[3I['[3IZrgR>4$5Yf4?Z,$77BU5 -779R:9MKk\I=$^Kpo_/+\s8V`bq=OCVs8W,kpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+IoC_bLq<[_G -o_/+IoC_bLq<[_Gm.9o:oC_>6n*'-,i8j(bm-ilnkMYFai8j(SgtpuMkLnYIg"bH;gtp`>hVdJX -g"bHBjQG4OhVdJXi8j(ZjQGann)39ikj7d%m-j0)n*KZ=m.9o6m-j<4p$D;Cm.9o6m-j<4p#tc2 -kj7d%m-j0)n*'-,kj7d%m-j<4p#tc2kj7d%m-j0)n)39ii8j(ZjQG4OhV$]@g"bH;gtpK/f$`(! -daZjreCN'tf%Jj8g"bH;gtpK/f%Jj8daZk$gtpuMkMYFakj7d)oC_JAp$D;Co_/+QpA+ags8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCV -o_/+QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA*q=n)39ig"bH4eCMgec-+>UbKS5L`Pn7/P<1li@q9.\A7]7]ARf7^ -@q9.\A7]LlDI[3gC2@d&Ci4!(DJF!*@q9.\A7]7]ASQ%!C2@d&Ci4!(DJF!*@q9/OXKDO&s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s6T@Mkj7ckgtp`>hU9p)daZjDV5-184Z,&Q/hAS,/1i_91cmf_C2@d&Ci4!(DKg2E -H[C0fH[WiO`W,uH[C0fH[U6fI=$^Kpo_/+QpA+(Hp#tc2 -kj7d%m-j0)n)39ii8j(ZjQGI^kLnYIg"bH;gtpK/f$`(!bKS5ZeCN'tf$`(!bKS5ZeCN'tf$`(! -daZjreCN'tf$`(!daZjreCN=.hV$]@g"bH;gtpuMkLnYIg"bH;gtp`>hV$]@g"bH;gtp`>hU9p) -g"bH4eCN'tf$`(!daZjreCN'tf$`(!daZjreCMgec-k+mbKS5Sbg">Tc-+>UbKS5Sbg">Tc,@T? -`5T^6`Pod7`Pfa7]=bhh]Y1qi]t:qj]=bhh]Y1qi]t:qj]=bhh]Y1qi]t:qj['[3P]Y1qi]t:qj -]=bhh]Y1qi]t:qj]=bhh]Y1qi]sP/R]=bha['[3I[(Eua['[3I['[3I[(Eua['[3@XKAk:[&^:1 -['[3@XKAk:[&^:1X/rG(XKA:pUoUT!Unsl_V50WQS>3,rH[C0fH[U^'KR8&oH[C0qI!^3eI=$!MH=Bo0F>Zt67?=RMW=Bo0F>Zt67?>!MH=Bo07>[CB/[CB/[CB/[%1-s6T@M -kj7crjQG4OhU9p)bKS5L`Pod7`Pfa7<)cjs<)mF=ARf7^=Bo0BA7]7]AQW2D@q9.Q>[CoNAQW2D -@q9.\A7]7]AQW2D@q9.cCi3`nARf7^@q9.\A7]7]AaK$]s8W-!s8W-!s8W-!s8W-!s8W-!s+YoJ -'b1Zk)]BG$%2B?^)B0S0%Lj-_%2B?^'b1Zf%Lj-_%2B?^'b1Zf%Lj-_%2B?^$k!IP$OdFO$l'6] -$k!IY%Lj-_%2B?^'b1Zf%Lj-_%H-=1s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!m.9o6m-iW_hV$]@ -daZjkbg!N%ZpdAO2)I-I1c.'H1bL=24$5Z9A7]7]ASQ%!C2@d3FEDkVI[CoNARf7^C2@d7H[Xi5k7nI9"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-">25WH[C1abg$1fs8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VTc,@T? -`5T]cSt%Yp1h1'-@q9.Q>[CoNARf7^@q9.\A7\kJ?=RMW=Bo07>[CoNAQW2D@q9.\A7]7]ARf7^ -@q9.\A7]7]AQW2DS=Z8Ns8W-!s8W-!s8W-!s8W-!s7H$\i8j&(!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]O,:*6n(HLQg"bH4eCMgec+CX%<)cjZ4?YPY1c7*H -2)I-O4?ZeO?>=:o@q9.cCi4!(DJF!*C2@d3FEDkVI>j)CdaZkJs8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,coC_>6n)39ig"bH4eCN'tf#5PH]=bha['Y1,I5Ni<2)I-I1c.9V4Z,&Q -4$5Yf4?ZeO?@.$IC2@d7H[TXFDL6_YC2@d7H[TXFDJF!*C2@ctA7]7]ARf7^=Bo0BA7\kJ?=:o -@q9.\A7]7]ARf7^@q9.Q>[CoNARf7^@q9.\A7]7]ASQ%!@q9.Q>[CoNAQW2D@q9.Q>[H+=hZ*WU -s8W-!s8V`bq=OCVm.9o:oC[W0 -H[C0UCi4!(DJF!*C2@ctA7]7]AQW2D@q9.\A7]7]ARf7^=Bo0BA7]7]ASQ%!C2@dp['VG:/Hc+X -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/ -"9J]/!X&W-"9\c/"9J]/!X&W-"9\c/(BO^B!X&W-"9\c/(BO^B!X&W-"9\c/(BO^B!X';@"9\c/ -(BO^B!X';@"9\c/(BO^B!X';@"9\c/(BO^U!X&W-";_+B(BO^U!X&W-";_+B(BO^U!X&W-";_+B -(BO^U!X';@";_+B(BO^U!X';@";_+B(BO^U!X';@";_+B(BO^U!X';@";_+B(BO^U!X';@";_+B -(BO^U!X';@";_+B(BO^U!X';@";_+B(BO^U!X';@";_+B(BO^e!X';@"=F6R(BO^e!X';@"=F6R -(BO^U!X'kP";_+B-NXDe!X'kP";_+B-NXDe!X'kP";_+B-NXDe!X'kP"=F6R-NXDu!X'kP"=F6R --NXDu!X'kP"=F6R-NXDu!X'kP"=F6R-NXDu!X'kP"=F6R-NXDu!X'kP"=F6R-NXDu!X'kP"=F6R --NXDu!X'kP"=F6R-NXDu!X)U,"K"R;ke+/"s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W+r>=DWq"?HSe -3W]FF!X(Oc"?HSe3W]FF!X)$q"?HSe3W]FF!X(Oc"@rRs3W]FF!X)$q"?HSe3W]FT!X)$q"?HSe -8-/ob!X(Oc"@rRs8-/oT!X)$q"@rRs8-/ob!X)$q"@rRs8-/ob!X)$q"@rRs8-/ob!X)$q"@rRs -8-/ob!X)$q"@rRs8-/ob!X)$q"@rRs8-/or!X)$q"BY^.8-/ob!X)U,"@rRs=98Ur!X)U,"@rRs -=98V-!X)$q"BY^.=98V-!X)U,"BY^.=98V-!X)U,"BY^.=98V-!X)U,"BY^.=98V-!X)U,"BY^. -=98V-!X)U,"BY^.=98V=!X)U,"BY^.=98V-!X*0<"BY^.=98V=!X)U,"D@i>=98V=!X)U,"D@i> -=98V=!X)U,"D@i>BEABEABEABEA -BEABEABEAGle+^!X*cM"D@i> -Gle+o!X*0<"F1%OGle+^!X*cM"F1%OGle+o!X*cM"F1%OGle+o!X*cM"F1%OGle+o!X*cM"F1%O -Gle+o!X*cM"F1%OGle+o!X*cM"F1%OGle,)!X*cM"Gd*^Gle,)!X*cM"Gd*^Gle,)!X*cM"Gd*^ -L]R^8!X+;\"F1%OL]R^8!X+;\"Gd*^L]R^8!X+;\"Gd*^L]R^8!X+;\"Gd*^L]R^8!X+;\"Gd*^ -L]R^8!X+;\"Gd*^L]R^8!X+;\"Gd*^L]R^8!X+;\"Gd*^L]R^D!X+_h"Gd*^PQCuP!X+;\"I&rj -PQCuD!X+_h"I&rjPQCuP!X+_h"I&rjPQCuP!X+_h"I&rjPQCuP!X+_h"J>f!PQCu\!X+_h"J>f! -PQCu\!X+_h"J>f!PQCu\!X,.t"J>f!PQCu\!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X-G"3:-80 -p[%)$jQG4OhU9p)bKS5Sbg")F`Pfa7UnskK4?ZeO?[CN;?Asf$s8W-!s8W-!s7H$\m.9o6m-j0)n(HLQ -"9J]/!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X-7T)#sX9s8W-!s8W-!s6T@Mkj7crjQFt@f$`(! -bKS5SbftK]I76Om779R+4?Ybg4Z,&Q<)ck4Ci3`nASQ%!C2@d&Ci4!(DJF!*C2@d&Ci4THI;3S9 -H[C0NA7[hb4_['[4,oC`.`s8W-!s8W-!s8W-!s6T@Mm.9o.jQGI^kL.l2daZjd`PmdoN(Qc< -/hAS",:"lm/M8S+/hAS,/1iJ*/N#@A4$5Z.>[D/]DJF!*C2@d&Ci4!(DJF!*C2@d&Ci3`nARf7^ -@q9.\A7\kJ?=RMW=Bo0ICi4!(DJF!*C2@d&Ci4THIB0HO"9J]/!X&W-"9\c/"9J]/!X,h2"J>f! -ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f! -ZN:99!X,.t"LA.4ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4ZN:99!X,.t"LA.4 -ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4TE58&!X,.t"LA.4TE57h!X,h2"J>f!TE58&!X,.t"J>f! -ZN:9&!X,.t"J>f!ZN:9&!X,.t"J>f!ZN:9&!X,.t"J>f!ZN:9&!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X+_h"J>f!PQCu\!X+_h"J>f!PQCu\!X+_h"J>f! -PQCu\!X,.t"J>f!PQCu\!X,.t"I&rjTE57h!X+_h"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"O(=ds8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7ta7`&9TJ!X,h2"J>f!ZN:9&!X,.t"LA.4 -TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!TE58&!X,.t"LA.4TE58&!X,.t"J>f!ZN:9&!X,h2"J>f! -ZN:9&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,.t"LA.4ZN:99!X,h2"LA.4TE58&!X,h2"LA.4ZN:99!X,.t"LA.4ZN:99!X,.t"LA.4 -ZN:9&!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"M>*PZN:9B$P'fW%^Q3> -]F,4^$P'KE"M>*P]F,4U!X-.D%^Q3>ZN:99!X,h2"LA.4]F,4U!X,h2"LA.4ZN:99!X-.D%^Q3> -ZN:99!X,h2"LA.4]F,4U!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:9B$P'fW%^Q3>ZN:9B$P'KE"M>*PZN:99!X,h2"LA.4kbX@(m-j0)n)39ig"bH4eCMgec-+>U -`5T^6`Pkqa?:mmc@q9.\A7]7]ARf7^C2@ci>[CoNARf7^=Bo07>[CN;?=RMW=Bo0BA7]7]ASQ%! -@q9.Q>[CoNARf7^=Bo1\eCO9cq=OCVm.9o6m-ilnkMYFag"bG.FE@We"?HSeZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:9pHsZjQs8W-!o_/+IoC_&&kLnYIdaZjkbg">Tc'acZ4$5Yf4?Z,$77BU5 -4$5Yu9MK8W0C2@cL4?YPY1cmf_ -@q9/=PEWr(`S'&'m.9o6m-ilnkLnYI]=bh9Mi;.VAM,Mc,U4Q[,:"NZ,VCW"/hAS,/1iJ*/M8S+ -/hAS31c/02fC2@d&Ci4!(DJF!*C2@d&Ci4!(DJF!*@q9.Q>[CoNAQW2D=Bo07>[D/]DJF!* -C2@d&Ci4THI;3S9N/NWe9MGWk"9\c/"9J]/!X&W-"BY^.TE58&!X,h2"J>f!ZN:99!X,.t"LA.4 -TE58&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"J>f!ZN:9&!X,.t"J>f!ZN:9&!X,.t"LA.4TE57h!X,h2"J>f! -TE57h!X,h2"J>f!TE57h!X,.t"LA.4TE57h!X,h2"J>f!TE58&!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -PQCu\!X,.t"I&rjTE57h!X,.t"I&rjTE57h!X+_h"J>f!TE57\!X,.t"I&rjTE57\!X,.t"I&rj -TE57\!X,.t"I&rjTE57\!X+_h"J>f!PQCu\!X+_h"I&rjPQCuP!X+_h"I&rjTE57\!X,eG)X5f( -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq:L@f!ZN:9&!X,.t"LA.4 -TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!TE58&!X,.t"LA.4TE57h!X,h2"J>f!ZN:9&!X,h2"J>f! -TE58&!X,.t"LA.4TE58&!X,.t"J>f!ZN:9&!X,.t"LA.4TE57h!X,h2"J>f!ZN:9&!X,h2"J>f! -TE58&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:99!X,h2"J>f!ZN:99!X,.t"LA.4ZN:99!X,.t"LA.4 -TE58&!X,h2"J>f!ZN:99!X,.t"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"M>*PZN:99!X,h2"LA.4ZN:99!X-.D%^Q3> -]F,4U!X-.D%^Q3>]F,4^$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*P -]F,4U!X-.D%_N/Z]F,4U!X-.D%_N/Z]F,4^$P'fW%^Q3>]F,4^$P'fW%_N/Z]F,4^$P'KE"M>*P -]F,4^$P'fW%_N/Z]F,4^$P'fW%^Q3>]F,4^$P'KE"M>*P]F,4^$P'KE"M>*P]F,4^$P'KE"M>*P -ZN:99!X,h2"M>*P]F,4^$P'fW%_N/Z]F,4^$P'KE"M>*P]F,4^$P'KE"M>*PZN:9B$P'KE"M>*P -ZN:9B$P'KE"M>*P]F,4f,:)L>n*'-,i8j(SgtpK/f%A3ibKS5L`Pod7`MB?+4$5Z.>[CoNAQW2D -@q9.\A7]7]ARf7^@q9.Q>[CN;?[CoNAQW2D=Bo0BA7]LlDI[3g@q9.\A7^RMK^A=' -o_/+IoC_&&kMYFag"bH;gtp]-b6.kL"9J_!!X,h2"LA.4ZN:9B$P'KE"LA.4]F,4U!X-.D%^Q3> -ZN:9B$P'KE"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ji#%.pA*q=n)39ig"bH;gtp5uc-+>UUnskK4?YPY1cmf_779R+4?Z;19m_58C2@d7H[TXFDJF!* -C2@d&Ci3`nARf7^C2@d&Ci4!(DL6_YC2@d&Ci4!(DI[3g8k_r:1c.'H1aF:k/hAS",:#?54Zbbh -779Qs/1hbZ)B'P5)B0S5)]BtH,U=T[,U4Q[,:"NZ,VCW"/hAS",:#-'1fRFS@q9.\A7]7]ARf7^ -@q9.cCi3`nASQ%!@q9.\A7]7]AQW2D=Bo0BA7]7]ARf7^C2@d&Ci4!(DJF!*C2@d&Ci5c7S-/lr -"9J]/!X&W-"9\c/"9J_!!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"LA.4TE58&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE57h!X,h2"J>f!TE58&!X,.t"LA.4TE57h!X,.t"LA.4 -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,.t"LA.4 -TE57h!X,h2"J>f!TE58&!X,.t"J>f!ZN:9&!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57\!X,.t"J>f!TE57h!X+_h"J>f!PQCu\!X+_h"J>f!PQCu\!X,.t"I&rjTE57h!X+_h"J>f! -PQCu\!X,.t"I&rjTE57h!X+_h"J>f!TE57h!X+_h"J>f!TE57\!X,.t"J>f!PQCu\!X+_h"J>f! -PQCu\!X+_h"I&rjTE57\!X,.t"J>f!PQCu\!X+_h"I&rjTE57h!X.28GlRgDs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8U]h]tYC$TE57h!X,h2"J>f!TE58&!X,.t"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,.t"LA.4 -TE58&!X,.t"LA.4TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f! -ZN:99!X,.t"LA.4ZN:9&!X,h2"LA.4TE58&!X,h2"J>f!ZN:99!X,h2"J>f!ZN:99!X,.t"LA.4 -TE58&!X,h2"J>f!ZN:99!X,.t"LA.4ZN:9&!X,h2"J>f!ZN:99!X,h2"LA.4TE58&!X,h2"LA.4 -ZN:99!X,.t"LA.4TE58&!X,.t"LA.4ZN:9&!X,h2"LA.4TE58&!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:9B$P'KE"M>*PZN:9B$P'KE"LA.4 -ZN:99!X,h2"M>*PZN:99!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4^$P'fW%_N/Z]F,4^$P'fW%_N/Z -ZN:9B$P'fW%^Q3>]F,4U!X-.D%^Q3>]F,4^$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*P -ZN:9B$P'fW%^Q3>]F,4U!X-.D%^Q3>]F,4^$P'KE"M>*P]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3> -]F,4U!X-.D%^Q3>]F,4^$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*P]F,4U!X-.D%^Q3> -]F,4^$P'fW%^Q3>]F,4U!X-.D%^Q3>]F,4^$P'KE"M>*P]F,4U!X-.D%_N/Z]F,4U!X-.D%^Q3> -]F,4U!X,h2"M>*PZN:9B$P'KE"M>*P]F,4U!X-.D%_N/Z]F,4U!X-.D%^Q3>]F,4U!X,h2"Qc// -kj7d%m-ilnkLnYIdaZjkbg">Tc,@T?bKS4@A7\A,9k.^F@q9.\A7]7]AQW2D=Bo07>[CN;?[CN;?[CN;?*PZN:9B$P'KE"LA.4ZN:9B$P'KE"LA.4]F,4U!X-.D%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,_S.,!D4kj7ckgtp`>hTO-f -bKS5L`Pl=tAM,Mc/hAS31c.9V4[hb-GB@qRH[U6fI[D/]DJF!* -C2@d&Ci4!(DJF!*C2@d&Ci3`nAQW2D779R%1c-I&,VCW")B0S5)]BV6)B'P5)B0S?,:"0H)B'P5 -,U4QQ)]BV6)C-OQ,U4Q[,:#-'1eLG9=Bo07>[CN;?f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4 -TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!TE58&!X,.t"J>f!ZN:9&!X,.t"LA.4TE58&!X,.t"LA.4 -TE57h!X,h2"J>f!TE58&!X,.t"J>f!TE57h!X,h2"J>f!ZN:9&!X,.t"LA.4TE58&!X,.t"LA.4 -TE58&!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"LA.4TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X+_h"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"I&rjTE57h!X,.t"I&rjTE57h!X,.t"I&rjTE57h!X+_h"J>f! -PQCu\!X+_h"J>f!TE57\!X,.t"I&rjTE57\!X,.t"J>f!PQCu\!X,.t"I&rjTE57\!X,.t"I&rj -PQCuP!X,.t"I&rjTE57\!X,.t"I&rjTE58#-7J]NiW&rXs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+=jQFQg9sXm( -TE58&!X,.t"J>f!ZN:9&!X,h2"J>f!TE58&!X,.t"J>f!ZN:9&!X,.t"LA.4TE58&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4 -ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4TE58&!X,h2"J>f!ZN:99!X,h2"LA.4ZN:9&!X,h2"J>f! -ZN:99!X,.t"LA.4ZN:99!X,h2"LA.4TE58&!X,h2"LA.4ZN:99!X,.t"LA.4ZN:99!X,h2"LA.4 -ZN:9&!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"J>f!ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:9B$P'KE"LA.4]F,4U!X,h2"LA.4 -]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>ZN:99!X,h2"LA.4]F,4^$P'KE"M>*PZN:9B$P'KE"M>*P -ZN:9B$P'KE"LA.4]F,4U!X-.D%^Q3>ZN:99!X,h2"LA.4ZN:99!X-.D%^Q3>]F,4U!X-.D%_N/Z -ZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*P]F,4U!X-.D%^Q3>ZN:9B$P'KE"M>*P -ZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'fW%_N/ZZN:9B$P'KE"M>*P -]F,4U!X-.D%^Q3>]F,4^$P'fW%^Q3>]F,4U!X-.D%_N/Z]F,4^$P'KE"LA.4]F,4U!X-.D%_N/Z -ZN:9B$P'fW%^Q3>]F,4U!X-.D%_N/Z]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4^$P'fW%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X,h2"M>*P]F,4U!X-.D%_N/Z^DIgGjQGann)39ig"bH4eCMgec-+>U -bKS5L`PnXLUcU\%=Bo0BA7]7]ARf7^@q9.\A7\kJ?=RMW=Bo07>[CN;?[CN;?*PZN:99!X-.D%^Q3>ZN:99!X,h2"M>*P -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:9.AQ7@W0C2@d3FED86DJF!*@q9.\A7]7]AQW2D@q9.cCi4!(DJF!*C2@d&Ci4!(DHL.M -@q9.\A7]7]AQW2D8k_r:1c-g9/L2Pd)B0S5)]BV6)B'P5)B0S5)]BV6)C-OQ)B0S?,:"lm/P8]2 -<)ck">[CN;?[CN;?[CN;?[CN;?[CoNARf7^ -@q9.cCi4!(DJF!*C2@dHMi7c?"9\c/"9J]/!X&W-"9\c/L]R^c!X,h2"J>f!ZN:9&!X,h2"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"J>f!ZN:9&!X,h2"LA.4TE57h!X,h2"J>f! -TE58&!X,.t"LA.4TE58&!X,.t"J>f!ZN:9&!X,h2"J>f!TE57h!X,h2"J>f!ZN:9&!X,h2"J>f! -TE58&!X,.t"LA.4TE57h!X,.t"J>f!ZN:9&!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,h2"J>f! -TE58&!X,.t"J>f!TE58&!X,.t"J>f!ZN:9&!X,.t"LA.4TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"I&rjTE57h!X+_h"J>f!TE57h!X+_h"J>f!TE57\!X,.t"I&rj -TE57h!X,.t"I&rjTE57h!X,.t"I&rjTE57h!X,.t"I&rjTE57h!X+_h"J>f!TE57\!X,.t"I&rj -TE57\!X,.t"J>f!PQCu\!X+_h"J>f!PQCu\!X+_h"J>f!PQCu\!X,.t"I&rjTE57\!X,.t"I&rj -TE57\!X+_h"J>f!TE58NUQb`Xs8W-!s8W-!s8W-!s7H$\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7cZUn+gn"J>f!ZN:9&!X,.t"LA.4 -TE57h!X,h2"J>f!TE58&!X,.t"LA.4TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f! -ZN:9&!X,h2"J>f!ZN:9&!X,h2"LA.4TE58&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4 -TE58&!X,h2"J>f!ZN:99!X,.t"LA.4TE58&!X,.t"LA.4ZN:99!X,h2"J>f!ZN:99!X,.t"LA.4 -TE58&!X,h2"J>f!ZN:9&!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,.t"LA.4 -ZN:9&!X,h2"LA.4ZN:99!X,h2"LA.4TE58&!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4]F,4U!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"M>*PZN:99!X-.D%^Q3> -ZN:9B$P'KE"M>*PZN:9B$P'KE"LA.4]F,4U!X,h2"LA.4]F,4U!X,h2"M>*PZN:9B$P'KE"LA.4 -]F,4U!X-.D%_N/Z]F,4^$P'fW%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X,h2"M>*P]F,4U!X-.D%^Q3>]F,4U!X-.D%_N/ZZN:9B$P'fW%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4^$P'KE"M>*PZN:9B$P'KE"M>*P]F,4^$P'KE"M>*P -ZN:9B$P'fW%_N/ZZN:99!X-.D%_N/Z]F,4^$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'fW%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X-.D%_N/Z]F,4U!X-.D%^Q3>]F,4^$P'fW%^Q3>]F,4U!X-.D%_N/Z -]F,4U!X-.D%^Q3>]F,4U!X.\EETlcXi8j(`gt^T[CoNAQW2D=Bo07>[CoNAQW2D=Bo07>[CN;?[CN;?[CoNA[JhO -m.9o6m-iW_hU9p)daZjkbg")F`JB2#"9J]B!X,h2"LA.4]F,4U!X,h2"M>*PZN:9B$P'KE"M>*P -ZN:9B$P'KE"LA.4]F,4U!X,h2"M>*PZN:99!X-.D%^Q3>ZN:99!X,h2"M>*PZN:99!X-.D%^Q3> -ZN:99!X,h2"J>f!\"o\FeCMgec,@T?`5T^6`PoI%]o7l./hAS31c/02fC2@d&Ci4!(DJF!* -@q9.\A7]7]ARf7^@q9.\A7]7]ARf7^@q9.\A7]7]ARf7^=Bo0BA7\kJ?=RMW@q9.\A7]7]AQW2D -=Bo0)9MIT24YA9;)B0S5)]BtH,U=T[,U4Qe/1iqG4\ACB<)cji9MJ,Q9iP(l8k_rO9MJ,Q9iP(l -8k_rO9MJ,Q9hJ)R=Bo07>[CN;?[CN;?f!ZN:99!X,.t"LA.4TE58&!X,.t"LA.4ZN:9&!X,h2"J>f! -ZN:99!X,.t"LA.4TE58&!X,.t"LA.4TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f! -ZN:9&!X,h2"J>f!TE58&!X,.t"LA.4TE57h!X,.t"LA.4TE57h!X,h2"J>f!ZN:9&!X,.t"LA.4 -TE57h!X,.t"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!TE57h!X,.t"J>f!TE58&!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!ZN:9&!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X+_h"J>f!TE57\!X,.t"I&rjTE57h!X+_h"J>f! -PQCu\!X,.t"I&rjTE57h!X+_h"J>f!PQCu\!X+_h"J>f!PQCu\!X,.t"I&rjTE57\!X,.t"I&rj -TE57h!X+_h"J>f!PQCu\!X+_h"I&rjTE57\!X+_h"J>f!PQCuP!X+_h"J>f!PQCu\!X+_h"J>f! -cV74!m-juSs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!o_/+QpA*q=n)39ifZ_OL7OOi1"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f! -TE58&!X,.t"LA.4TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!TE58&!X,.t"LA.4TE58&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,h2"J>f!ZN:9&!X,h2"LA.4TE58&!X,.t"LA.4 -TE58&!X,h2"J>f!ZN:99!X,.t"LA.4TE58&!X,h2"J>f!ZN:99!X,h2"LA.4TE58&!X,h2"LA.4 -ZN:99!X,.t"LA.4ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4ZN:99!X,h2"LA.4ZN:99!X,.t"LA.4 -ZN:99!X,h2"LA.4TE58&!X,h2"LA.4TE58&!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:9B$P'KE"M>*PZN:99!X,h2"LA.4ZN:9B$P'KE"LA.4ZN:9B$P'KE"LA.4 -]F,4U!X,h2"LA.4]F,4^$P'KE"LA.4]F,4U!X,h2"M>*PZN:9B$P'KE"LA.4]F,4U!X,h2"LA.4 -ZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*P -]F,4U!X-.D%^Q3>]F,4U!X-.D%_N/ZZN:9B$P'KE"M>*PZN:9B$P'KE"M>*P]F,4U!X-.D%_N/Z -ZN:9B$P'KE"M>*P]F,4U!X-.D%_N/ZZN:9B$P'KE"M>*PZN:9B$P'fW%_N/ZZN:9B$P'fW%_N/Z -ZN:9B$P'KE"M>*PZN:9B$P'fW%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4^$P'fW%^Q3> -]F,4U!X-.D%_N/ZZN:9B$P'KE"M>*PZN:9B$P'fW%^Q3>]F,4U!X,h2"M>*PZN:9B$P'KE"MYcj -k1nbUm-ilnkLnYIdaZk#bfe2Rc,@T?`5T]rXK=*+/Qc7a=Bo07>[CN;?[D/]DHL.M=Bo0BA7]LlDI[3g=Bo0BA7]7]ARf7^C2@eOm-j0)n)39ig"bH;gtp5uc,@T? -`5T\6)]Ah\"Gd*^ZN:99!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X,h2"LA.4ZN:9B$P'KE"LA.4 -]F,4U!X,h2"LA.4ZN:99!X,h2"M>*PZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X+;\"N89u -`5T^6`Pod7`Oidr]=bhh]Y.EP?:@7N=Bo0BA7]7]ARf7^@q9.\A7\kJ?=RMW=Bo07>[CoNARf7^ -@q9.\A7]7]ARf7^@q9.Q>[CN;?[CoNAQW2D=Bo07>[CN;?f!ZN:99!X,.t"LA.4ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4TE58&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"J>f!ZN:9&!X,.t"LA.4TE57h!X,h2"J>f! -ZN:9&!X,h2"J>f!ZN:9&!X,.t"LA.4TE57h!X,.t"LA.4TE57h!X,.t"LA.4TE58&!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"LA.4TE58&!X,.t"J>f!TE57h!X,h2"J>f!TE57h!X,h2"J>f! -TE57h!X,.t"J>f!TE57h!X,h2"J>f!TE57h!X,.t"J>f!TE57h!X,.t"LA.4TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"I&rjTE57h!X,.t"J>f!PQCu\!X,.t"J>f! -TE57\!X,.t"J>f!TE57\!X,.t"J>f!TE57h!X,.t"I&rjTE57h!X,.t"J>f!PQCu\!X+_h"J>f! -PQCu\!X,.t"I&rjTE57h!X,.t"J>f!PQCu\!X,.t"I&rjTE57\!X,.t"I&rjTE57\!X,.t"I&rj -TE57\!X,.t"I&rjTE57\!X,.t"I&rjTE57\!X,.t"I&rjTE57\!X,.t"J>f!ke+/"s8W-!s8W-! -s8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -m.9o6m-j0)n)39iaGYJQ!X,.t"J>f!TE58&!X,.t"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f! -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f! -ZN:99!X,.t"LA.4TE58&!X,h2"LA.4TE58&!X,h2"J>f!ZN:99!X,h2"J>f!ZN:99!X,.t"LA.4 -ZN:99!X,h2"J>f!ZN:99!X,.t"LA.4TE58&!X,h2"LA.4TE58&!X,.t"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"J>f!ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"M>*PZN:99!X-.D%^Q3> -ZN:99!X,h2"LA.4]F,4U!X,h2"LA.4]F,4U!X-.D%^Q3>]F,4U!X,h2"M>*PZN:9B$P'KE"LA.4 -]F,4U!X-.D%^Q3>]F,4U!X,h2"M>*PZN:9B$P'KE"M>*P]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X,h2"M>*PZN:9B$P'fW%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3> -]F,4^$P'KE"M>*PZN:9B$P'fW%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%_N/Z -ZN:9B$P'fW%_N/ZZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"M>*PZN:9B$P'fW%^Q3> -]F,4^$P'KE"M>*PZN:9B$P'KE"M>*P]F,4U!X-.D%_N/ZZN:9^KPp#?n)39ii8j(SgtpK/f#u:^ -`5T^6`Pp$Ec!t9q4$5Z.>[CN;?[CN;?=RMW@q9.\A7]7]ARf7^C2@ctA7]LlDI[3g -@q9.\A7]7]AQW2D=Bo07>[FeE[-[DWm.9o6m-iW_hV$]@daZjreCM"6ZigF5(BO`G!X,h2"M>*P -ZN:99!X-.D%^Q3>ZN:99!X,h2"M>*PZN:9B$P'KE"LA.4]F,4U!X,h2"M>*PZN:9B$P'KE"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:8W3]t@"`Pfa7]=bhh]Y1qi]t:qj -X/rF[CN;?[CN;?[CN;?=RMW@q9.\A7]7]AQW2D=Bo07>[CB/[CN;?=RMW@q9.tH[Uj2N!'1b"9J]/!X&W-"9\c/(BO`G!X,.t"LA.4ZN:9&!X,h2"J>f! -ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f! -ZN:9&!X,h2"J>f!ZN:9&!X,.t"LA.4TE58&!X,.t"LA.4TE57h!X,.t"LA.4TE58&!X,.t"LA.4 -TE57h!X,.t"LA.4TE57h!X,h2"J>f!TE57h!X,.t"J>f!TE58&!X,.t"LA.4TE57h!X,h2"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,h2"J>f!TE57h!X,h2"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!PQCu\!X,.t"J>f!TE57\!X,.t"J>f! -TE57\!X,.t"I&rjTE57h!X+_h"J>f!PQCu\!X,.t"I&rjTE57h!X+_h"J>f!PQCu\!X+_h"I&rj -TE57\!X,.t"I&rjTE57h!X+_h"J>f!PQCu\!X+_h"I&rjTE57\!X+_h"J>f!PQCu\!X+_h"I&rj -TE57\!X+_h"I&rjTE57\!X+_h"I&rjPQCu\!X+_h"O(=ds8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq=OCVkj7d%m-ilnkLdGU -`%3U8!X,h2"J>f!TE58&!X,.t"LA.4TE57h!X,h2"J>f!TE58&!X,.t"LA.4TE57h!X,h2"J>f! -ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4TE58&!X,h2"J>f!ZN:9&!X,h2"LA.4 -TE58&!X,.t"LA.4TE58&!X,h2"J>f!ZN:99!X,.t"LA.4ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4 -ZN:9&!X,h2"LA.4TE58&!X,h2"LA.4ZN:99!X,h2"LA.4TE58&!X,h2"J>f!ZN:99!X,.t"LA.4 -ZN:99!X,h2"LA.4TE58&!X,h2"LA.4TE58&!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"M>*PZN:99!X,h2"M>*P -ZN:9B$P'KE"LA.4ZN:99!X,h2"M>*PZN:99!X-.D%^Q3>]F,4U!X,h2"M>*PZN:9B$P'KE"LA.4 -]F,4U!X-.D%^Q3>]F,4U!X,h2"M>*PZN:9B$P'KE"M>*PZN:9B$P'KE"LA.4]F,4U!X-.D%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X-.D%_N/ZZN:9B$P'KE"M>*PZN:9B$P'fW%^Q3>]F,4U!X-.D%_N/Z -ZN:9B$P'fW%^Q3>]F,4U!X-.D%^Q3>]F,4^$P'KE"M>*PZN:9B$P'fW%^Q3>]F,4^$P'KE"M>*P -ZN:9B$P'fW%^Q3>]F,4U!X-.D%_N/Z]F,4U!X-.D%_N/ZZN:9B$P'KE"M>*PZN:9B$P'fW%^Q3> -]F,4^$P'KE"M>*P]F,4^$P'KE"M>*PZN:9B$P'fW%^Q3>ZN:9B$P'fW%^Q3>]F,4U!X-.D%^Q3> -]F,4^$P'KE"M>*PZN:9B$P'fW%d)R%kj7d%m-iW_hU9p)bKS5Sbg">Tc,@T?['[1m/1jIf9iP(l -<)cji9MJJc[CN;?[CN;?>=:o -m.9oBpA+@Sq<[_Gkj7ckgtp`>hV$]@`5T[u!X*cM"LA.4ZN:99!X-.D%^Q3>ZN:9B$P'KE"M>*P -ZN:99!X-.D%^Q3>]F,4U!X,h2"M>*PZN:99!X,h2"LA.4]F,4U!X,h2"M>*PZN:99!X-.D%^Q3> -ZN:99!X,h2"LA.4ZN:99!X,h2"J>f!Q]-g?`PoI%]u7n/]=bhh]Y1qi]qhL#@q9.Q>[CN;?[CN;?;sm(<)ck">[CN;?[CoNAQW2D@q9.\A7\kJ?=RMW=Bo0BA7]7]ARf7^ -@q9.\A7\kJ?[CN;?;sm(<)cji9MJ,Q9hJ)R779R56q'1"4[hb-779R56q'O477BU5 -779R56q'O477BU5779R56q'O476f!ZN:99!X,.t"LA.4TE58&!X,h2"J>f!ZN:99!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"J>f!ZN:9&!X,h2"J>f!TE58&!X,.t"LA.4 -TE58&!X,.t"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,.t"J>f!TE57h!X,h2"J>f!ZN:9&!X,h2"J>f! -TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!TE57h!X,.t"J>f!TE57h!X,.t"LA.4TE57h!X,.t"LA.4 -TE58&!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!ZN:9&!X,.t"J>f!TE57h!X,h2"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57\!X,.t"J>f!TE57h!X,.t"J>f!TE57\!X,.t"J>f!TE57h!X+_h"J>f!TE57h!X+_h"J>f! -TE57\!X,.t"J>f!PQCu\!X,.t"I&rjTE57h!X+_h"J>f!TE57h!X+_h"J>f!PQCu\!X+_h"I&rj -TE57\!X,.t"I&rjPQCu\!X+_h"J>f!PQCu\!X+_h"I&rjTE57\!X+_h"J>f!PQCu\!X+_h"I&rj -PQCu\!X+_h"J>f!PQCuP!X,eG)Ud-ds8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VHWp$D;Ckj7d%m-iW_hT0eFZN:9&!X,h2"J>f! -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,h2"J>f!ZN:9&!X,h2"LA.4TE58&!X,.t"LA.4ZN:9&!X,h2"J>f! -ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4ZN:9&!X,h2"LA.4ZN:9&!X,h2"LA.4ZN:9&!X,h2"LA.4 -TE58&!X,.t"LA.4TE58&!X,h2"LA.4TE58&!X,h2"LA.4ZN:99!X,.t"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:9&!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -]F,4U!X,h2"LA.4]F,4U!X,h2"M>*PZN:99!X,h2"M>*PZN:99!X-.D%^Q3>ZN:9B$P'KE"M>*P -ZN:99!X-.D%^Q3>ZN:99!X,h2"M>*PZN:99!X,h2"LA.4]F,4U!X-.D%^Q3>ZN:9B$P'KE"M>*P -ZN:9B$P'KE"LA.4]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3> -]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>ZN:9B$P'KE"M>*P -ZN:9B$P'KE"M>*P]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3>]F,4U!X-.D%^Q3> -]F,4U!X-.D%_N/Z]F,4U!X-.D%_N/ZZN:9B$P'KE"M>*P]F,4^$P'fW%^Q3>]F,4U!X-.D%^Q3> -]F,4U!X-.D%^Q3>]F,4^$P'KE"M>*PZN:9B$P'fW%^Q3>]F,4^$P'KE"M>*PZN:9B$P'KE"M>*P -fQCHnm-!U`5T^6`PlS.DD!Il<)cji9MJJc^Kpo_/+IoC_>6n*'-, -i8j(SgtpuMk;iYIZN:99!X,h2"M>*PZN:99!X-.D%^Q3>ZN:9B$P'KE"M>*PZN:99!X,h2"M>*P -ZN:99!X-.D%^Q3>ZN:9B$P'KE"LA.4]F,4U!X,h2"M>*PZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,#/'ZRes]=bhh]Y1qi]t:qj]=bhh]Y0_sP?;'r<)cjs<)lms[CN;?[CN;?=RMW@q9.cCi3`nAQW2D=Bo07>[CN;?[CB/[CN;?=RMWH[C1abg"Scf$`(!g"bG2H[Q"u";_+B -ZN:99!X,.t"LA.4ZN:9&!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:99!X,.t"LA.4TE58&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE58&!X,.t"J>f!ZN:9&!X,.t"LA.4 -TE58&!X,.t"LA.4TE58&!X,.t"J>f!TE58&!X,.t"J>f!TE58&!X,.t"LA.4TE57h!X,.t"J>f! -TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!TE57h!X,.t"LA.4TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE58&!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f! -TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X,.t"J>f!TE57h!X+_h"J>f! -TE57h!X+_h"J>f!TE57\!X,.t"J>f!TE57\!X,.t"I&rjTE57h!X+_h"J>f!TE57\!X,.t"I&rj -TE57h!X+_h"J>f!TE57\!X,.t"I&rjTE57h!X+_h"J>f!PQCu\!X+_h"J>f!PQCu\!X+_h"J>f! -PQCu\!X+_h"I&rjTE57\!X+_h"J>f!PQCuP!X,.t"I&rjTE57\!X,.t"I&rjPQCuP!X,.t"I&rj -TE57h!X-GgIK0?Is8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+@Sq<726kj7crjQG1&XKiZ]TE57h!X,h2"J>f!TE57h!X,h2"J>f! -TE58&!X,.t"LA.4TE58&!X,.t"LA.4TE57h!X,h2"J>f!ZN:9&!X,h2"J>f!ZN:9&!X,h2"LA.4 -TE58&!X,.t"LA.4ZN:9&!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:9&!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4ZN:99!X,h2"LA.4 -ZN:99!X,h2"LA.4ZN:99!X-.D%^Q3>ZN:99!X,h2"LA.4ZN:9B$P'KE"LA.4ZN:9B$P'KE"LA.4 -]F,4U!X-.D%_N/Z]F,4^$P'fW%_N/Z]F,4^$P'fW%_N/Z]F,4^$P'fW%_iht]F,4^$P'fW%_N/Z -]F,4^$P'fW%_iht]F,4a(`9mn%_iht]F,4a(`:")(q^4d^DIg#$P'og(r$n)^DIg&(`:")(r$n) -^DIg&(`:")(r$n)^DIg&(`:")(r$n)^DIg+,:(#@(r$n)`$6PB(`:")(r$n)^DIg+,:(2P,fCoQ -^DIg+,:(2P,fCoQ^DIg+,:(2P,fCoQ`$6PG/25!e,fD5f`$6PG,:(2Y0Z51]`%3U\,:(2Y0Z5Lr -`%3U\/25!n0Z5Lr`%3U\/25!n0Z5Lr`%3U\2E8W535d@%`&9Tn/25"#35d@%`&9Tn/25"#35d@% -`&9Tn2E8W535d^7`&9Tn2E8W535d^7`&9Tn2E8W536XKL`&9U!4?pbB36XKL`&9Tn2E8W536XKL -`&9Tn2E8oC5Kl5SbWJ,64?q%P5Kl5SbWJ,64?q%P5Kl5SbWJ,66q#6]5KlM`bWJ,66q#6]5KlM` -bWJ,66q#6]5KlM`bX=kF9i&u$7*eS'cV73]9i')0:X;a2cV73]9i($(fBDSii8j(SgtpK/f%A3i -bKS5L`Pod7`O*"Z/hASC6q'^A9hJ)R<)ck">[CB/[CN;?[CoNAaK$]s8W-!s8W-!s7H$\m.9o6m-j0)n*'-,kj7cVH[Wq>:!?R= -bZ%]g<*7@D=Nj`HbZ%]g<*7@D=Nj`HbZ%]g<*7XV7*K+ObZ%]g<*7@RA^"+Ue6YPe<*7@RA^"+U -b[P/-@V*bmA^"Upb[P/-@V+5(8'GFRb[P/-@V*b_=Nk5cb[P/-<*6_;7Ee_5[o5>sUnG?4]u7n/ -]=bhh]Y1qi]t:qj]=bh(H[Sjm[CN;?[CN;?[CN;?[CB/hV$]@]=bhdHtpTHIE6M:`-ZpRFC)n4IDgJ\ -aa@a>H[WhZIDgJ\`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\ -`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\ -`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\`-ZpNH[WhZIDgJ\aFnTPH[WtgEl<)[uH*OPDcu?Pdlp8\V:`/VfY"ZF]XHG1^#d2L -k01s3e^s'9fD*k;l.+DMe^s'9fBLi;l.+DMe^s'9fBLi;l.+DJgt_/EfD44Ll.+DXpA+ags8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+QpA+@Sq<[_Gm.9o6m-j)\al^ghf>PATbff.mak4h\fZ_P$bfSM]bLk%^fZ_OkbfeY_bLk%^ -fZ_Okbff8$f@\i8j(`gt_&IgudDIg"bHHgt^iKkMYFai8j(ZjQG[\h!"+n -k1nbMjQGI^kN:RTi8j(bm-ilnkNM:$i8j(bm-j0)n*'-,kj7d%m-j0)n*'-,kj7d%m-j0)n*'-, -m.9o6m-j<4p#tc2m.9o6m-j<4p#tc2o_/+Em-jT?q<726o_/+Em-jT?q<726o_/+Em-j<4p#tc2 -m.9oEm-!a,p$D;Ckj7d1pA*q=n*'-,o_/+Tm-"$7q<726o_/+Tm-"$7q=j7=o_/+Tm-"$7q=j7= -o_/+Tm-"$7q=OCVo_/+Tm-"$7q=OCVp[%)8pA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=j7= -o_/+QpA+@Sq=j7=o_/+QpA+ILkOeKDp[%)8pA+@Sq=OCVo_/+QpA+ILkOeKDo_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+\s8W-!s7H$\o_/+QpA+@Sq=OCVo_/+QpA+ags7H$\ -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+\s8V`bq=OCVo_/+\s8V`bq=OCVo_/+QpA+ags7H$\ -o_/+\s8V`bq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+\s8V`bq=OCVo_/+QpA+ags7H$\s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8V`bq=OCVkj7d%m-ilnkLnYIdaZjkbg">Tc,@T?`5T]>FEB,d/P8]2 -8k_rO9MJJc[CN;?[CN;?[CN;?[CN;?[CN;?[CN;?[CN;?[CN;?[CN;?Asf$ -kj7d%m-ilnkNM:$kj7crjQGann)39ii8j(ZjQGI^kMYFai8j(ZjQGI^kN:RTi8j(SgtpuMkLnYI -i8j(SgtpuMkLnYIi8j(ZjQGI^kLnYIi8j(ZjQG4OhVdJXg"bHBjQGI^kLnYIi8j(SgtpuMkLnYI -i8j(SgtpuMkLnYIi8j(ZjQGI^kMYFai8j(SgtpuMkLnYIi8j(SgtpuMkLnYIi8j(Sgtp`>hV$]@ -g"bH;gtp`>hV$]@g"bH;gtp`>hV$]@g"bH;gtp`>hV$]@g"bH;gtp`>hV$]@g"bH;gtp`>hVdJX -g"bH;gtp`>hV$]@g"bH;gtp`>hV$]@g"bH;gtp`>hV$]@daZk$gtpK/f%Jj8daZjreCN'tf$`(! -daZjreCN'tf$`(!daZjreCN'tf$`(!daZjreCN'tf$`(!daZjreCN'tf$`(!daZjreCN'tf%Jj8 -daZk$gtpK/f%Jj8daZjreCN'tf$`(!daZjreCN'tf$`(!daZjreCN'tf#u:^daZjreCN'tf#u:^ -daZjkbg"Scf#u:^daZjkbg"Scf#u:^bKS5ZeCMgec-k+mbKS5Sbg">Tc-+>UdaZjkbg">Tc-+>U -bKS5ZeCMgec-k+mbKS5ZeCN'tf&5WPi8j(bm-j0)n*KZ=m.9oMs8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq=OCV -kj7d)oC_>6n*'-,kj7d%m-j0)n*'-,kj7d%m-j0)n*'-,kj7d%m-j0)n*'-,kj7d%m-j0)n*'-, -m.9oEm-!U!n*'-,kj7d1pA*q=n*KZ=kj7d)oC_JAp#tc2m.9oBpA*q=n*KZ=m.9o:oC_JAp$D;C -m.9oBpA+@Sq=OCVm.9o:oC_bLq=OCVm.9oBpA+@Sq=OCVo_/+IoC_JAp%Rh9m.9oBpA+(Hp%7tR -o_/+QpA+@Sq=OCVp[%)8pA+(Hp%Rh9o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCV -s8W,kpA+@Sq=OCVo_/+QpA+@Sq>^Kpo_/+QpA+@Sq>^Kpo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+\s8V`bq>^Kpo_/+\s8V`bq>^Kp -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\ -s8W-!s8V`bq>^Kps8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+QpA*q=n)39ig"bH4eCMgec-+>U`5T^6`PoI%]eqW'779R:9MJ,Q9hJ)R8k_rO9MJVo?:mmc -=Bo0)9MJJc[C#r9hJ)R8k_rO9MJ,Q9iP(l<)ck">[Hdgp&G'ls8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+ags8W-!o_/+QpA+ags7H$\o_/+QpA+@Sq=OCVo_/+QpA+ags7H$\ -o_/+\s8V`bq>^Kps8W,kpA+ags8W-!o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA+(Hp#tc2 -i8j(SgtpK/f$`(!bKS5L`Pod7`Pfa7]=bhq`PoI%]t:qj`5T^-]Y1\Z[!-V6=Bo03<)m%*?;sm( -<)cji9MJJc[C#r9iP(l<)cjs<)lms[CN;?=RMW@q9.\A7\kJ?[CN;?[CB/[CN;?hVdJXg"bH;gtp`>hV$]@ -i8j(SgtpuMkLnYIg"bH;gtp`>hV$]@g"bH;gtp`>hV$]@g"bH;gtp`>hV$]@daZk$gtp`>hV$]@ -g"bH;gtp`>hV$]@g"bH;gtp`>hV$]@g"bH;gtpK/f%Jj8g"bH;gtp`>hU9p)g"bH;gtp`>hV$]@ -i8j(ZjQGI^kNM:$m.9oBpA+@Sq=OCVs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq=OCVo_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq<[_Go_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVs8W,kpA+@Sq>^Kpo_/+\s8W-!s7H$\s8W-!s8W-!s8W-! -o_/+\s8V`bq=OCVo_/+QpA+ags7H$\s8W-!s8V`bq=OCVs8W,kpA+@Sq=OCVs8W,kpA+ags8W-! -o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gkj7crjQG4OhU9p) -fZ_O^bg")F`Pfa7H[C/n/1jIf9hJ)R8k_rO9MJ,Q9hJ)R<)cji9MJVo?6n)39ig"bH4eCN'tf#u:^ -`5T^6`PoI%]t:qj]=bhh]Y1qi]t:qj]=bha['Y1,I99`\<)cjs<)lms[C#r9iP(l -8k_rY<)lOa9itY,8k_r]>[CN;?[CN;?[CB/6n*KZ= -m.9o6m-j<4p$D;Ckj7d)oC_>6n*KZ=kj7d)oC_JAp#tc2m.9o6m-j<4p$D;Ckj7d%m-j<4p#tc2 -kj7d%m-j0)n*'-,kj7d%m-j0)n*'-,i8j(bm-j0)n*'-,kj7d%m-j0)n*'-,kj7d%m-ilnkNM:$ -kj7d%m-j0)n*'-,kj7crjQGann*'-,kj7crjQGann*'-,kj7d%m-ilnkNM:$kj7d%m-j0)n*'-, -i8j(bm-ilnkMYFai8j(ZjQGI^kLnYIi8j(ZjQGI^kMYFai8j(SgtpuMkMYFai8j(SgtpuMkMYFa -i8j(ZjQGI^kMYFai8j(ZjQGI^kMYFai8j(ZjQGI^kMYFai8j(ZjQGann*'-,kj7d%m-j<4p$D;C -o_/+QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+ags8W-!o_/+\s8V`bq>^Kp -o_/+\s8W-!s7H$\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+QpA*Y-kN:RTdaZjreCMgec-+>U`5T^-]Y-0Z1eLG9 -<)cji9MJ,Q9hJ)R8k_rO9MIrD77p6J779R:9MJ,Q9gqH=8k_r@4?Ybg4Zbbh4$5Yf4?Ybg4Zbbh -779T.m-juSs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+Em-j0)n(HLQdaZjreCMgec,@T?`5T^6`Pod7`Oidr -]=bhh]Y1qi]t:qj['[2eH[SL[9itY,<)ck">[CB/[CN;?[CN;?[CB/[CN;?;sm(<)cjs<)m%*?[CN;?[CoNA\5Ug -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8V`bq>^Kps8W-!s8W-!s8W-!o_/+\s8V`bq>^Kpo_/+\s8V`bq>^Kpo_/+\s8V`bq=OCV -o_/+QpA+@Sq<[_Go_/+QpA+@Sq=OCVo_/+QpA+(Hp%7tRo_/+QpA+@Sq=OCVo_/+QpA+@Sq<[_G -o_/+QpA+(Hp%7tRo_/+IoC_bLq=OCVm.9oBpA+@Sq=OCVo_/+IoC_bLq<[_Gm.9o:oC_JAp$D;C -m.9o:oC_JAp$D;Cm.9o:oC_JAp#tc2m.9o:oC_JAp$D;Cm.9o:oC_JAp$D;Cm.9o:oC_JAp$D;C -m.9o:oC_JAp$D;Cm.9o:oC_JAp$D;Cm.9o:oC_>6n*'-,kj7d%m-j0)n*KZ=kj7d%m-j0)n*'-, -kj7d%m-j0)n*'-,kj7d%m-j0)n*'-,kj7d%m-j0)n*'-,kj7d%m-j0)n)39ikj7d%m-ilnkNM:$ -kj7d%m-j0)n*'-,kj7crjQGann*'-,kj7d)oC_JAp$D;Co_/+QpA+@Sq=OCVs8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+\s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8VHWp#tc2i8j(SgtpK/f#u:^bKS5L`Pod7`Hur[/hASH9MJ,Q9hJ)R8k_rJ6q'O476[CN;?;sm(<)cjs<)lms[CB/[CN;?[CB/[CB/[CB/[CN;?=RMW=Bo07>[CN;?=RMW]=biLpA+ags8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+ags8W-!o_/+\s8W-!s8W-!o_/+\s8V`bq=OCVo_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+ags7H$\ -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+IoC_bLq=OCVm.9o:oC_JAp$D;Cm.9o:oC_JAp$D;C -m.9o:oC_JAp$D;Cm.9o:oC_JAp$D;Cm.9o:oC_JAp$D;Cm.9o:oC_JAp$D;Cm.9o:oC_JAp$D;C -m.9o:oC_JAp$D;Co_/+QpA+@Sq=OCVs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\m.9o6m-ilnkL.l2 -daZjkbg">Tc,@T?]=bg71c.9V4\ACB8k_rJ6q'^A9gqH=779R56q'O476hU9p)bKS5Sbg")F`Pfa7`5T^-]Y1qi]t:qj]=bhh]Y1qi]o7l.<)ck">[CB/[CN;?[CB/[CN;?[CN;?[CN;?^Kpo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCV -o_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVo_/+QpA+@Sq=OCVs8W,kpA+ags8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq>^Kp -o_/+\s8V`bq>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#+oog"bH4eCMgec-+>U`5T^6`Pm1NI3^$_ -8k_r@4?Ybg4Zbbh4$5Yf4?Ybg4Zbbh779R56q'O477BU5779R56q'O477BU5779R56q'^A9gqH= -779RZCi8n=q>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+(Hp#tc2g"bH;gtpK/f#u:^ -`5T^6`Pod7`Oidr`5T^-]Y1qi]t:qj]=bhh]Y0i,S60$&<)ck">[CB/[CB/[CB/[CB/[CN;?[CoNARf7^=Bo0BA7\kJ?=RMW=Bo0kMi@#op&G'l -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+ags8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s6T@Mkj7d#gt^?-f$`(!bKS5L`Pod7`Pfa78k_r@4?Ybg4Zbbh4$5Yf4?Z,$76[CN;?[CN;?[CB/[CoNARf7^@q9.\A7]7]ARf7^@q9.tH[X>lf)PdMs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W,kpA+ags8W-!s8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,coC_>6n)39i -g"bH4eCMgec-+>UbKS5C]Y,pK/NZ'X4$5YY/1i_91c7*H4$5Yf4?Z,$77p6J8k_rJ6q'^A9gqH= -4$5Yu9MIrD77p6J8k_rO9MJ,Q9hJ)RC2@e[pA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!m.9o6m-ilnkMYFag"bH4eCN'tf#u:^bKS5L`Pod7`Pfa7]=bhq`PoI%]t:qj -['[2rKS3H4?[CN;?[CN;?[CN;?[CN;?[CB/[CN;?^Kp -s8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\kj7crjQG4OhU9p)daZjreCMgec(q23 -/hAS31c.'H1bL=22)I-B/1iqG4Zbbh779R56q'1"4[hb-779R+4?Z;19gqH=779R:9MJ,Q9gqH= -8k_rO9MN^Sc2[hDs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s6T@M -m.9o.jQGI^kLnYIg"bH4eCN'tf#u:^bKS5Sbg")F`Pfa7`5T^6`PoI%]t:qjUnsl6H[TC7ARf7^ -=Bo07>[CN;?[CN;?[CN;?[CB/[CB/[CN;?^Kp -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8VHWp#tc2i8j(ZjQG4OhU9p)daZj(KS23>1bL=2/hAS31c-g9/N#@A -2)I-O4?Z,$77p6J8k_rO9MJ,Q9hJ)R8k_rO9MJ,Q9hJ)R8k_rO9MJ,Q9knK^o_/+\s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_Gm.9o.jQGI^kLnYI -g"bH;gtpK/f$`(!bKS5Sbg">Tc,@T?bKS5L`Pod7`OidrS=Z6tH[TC7AQW2D=Bo07>[CN;?[CN;?[C#r9iP(l<)ck">[C#r9itY,<)cjs<)m%*?:mmc<)ck">[CB/[CoNARf7^@q9/0Mi>j'c1L`*o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+QpA*q=n)39ii8j(ZjQGI^kG4rMC2@ci>[BKS4YA9;2)I-B/1iqG4Zbbh4$5Yp6q'^A9gqH= -8k_rO9MJ,Q9iP(l<)cjs<)lmshU9p) -daZjreCN'tf#u:^daZjkbg">Tc-+>U['[3!Mi;CeDHL.M=Bo07>[CN;?[C#r9iP(l<)cjs<)lms[C#r9iP(l8k_rO9MJVo?An+?>L -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+\s8W-!s7H$\s8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\o_/+Em-j0)n*'-, -kj7crjQGI^kMYFai8j(>`Po3k[%*_XN/NXAH[TC7AP,Wj4$5Yu9MJ,Q9iP(l<)cjs<)lms6n*KZ= -kj7d)oC_>6n*KZ=m.9o:oC_&&kKD)o]=bhXXK@G>N-fo"=Bo03<)lms6n*'-,i8j(ZjQGI^kLnYIi8j(ZjQG4OhVdJXg"bH;gtpuMkLnYI -g"bHBjQG4OhSdCPUnslGMi<"0I99`\<)cjs<)lOa9hJ)R8k_rO9MJ,Q9hJ)R8k_r]>[EAIN3ot! -i8j)$s8V`bq>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+ags8W-!o_/+\s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+@Sq=OCVm.9o:oC_JAp$D;Cm.9oBpA+@Sq=OCV -o_/+\s8V`bq=OCVo_/+\s8V`bq>^Kpm.9o.jQH1/q>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8V`bq<[_G -o_/+IoC_JAp$D;Ckj7d%m-j0)n)39ikj7crjQGann*'-,i8j(bm-j0)n*'-,kj7d)oC_JAp$D;C -m.9o:oC_&&kL.l2daZjd`Pp$Ec-k+mg"bHBjQGn$p&G'lo_/+QpA+ags8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -o_/+\s8W-!s8W-!s8W,kpA+ags8W-!o_/+\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\o_/+IoC_bLq<[_G -m.9o:oC_JAp$D;Cm.9o:oC_JAp$D;Cm.9o:oC_JAp$D;Co_/+QpA+ags7H$\s8W,kpA+ags7H$\ -s8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!o_/+\s8V`bq>^Kp -s8W,kpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,kpA+ags7H$\o_/+QpA+(Hp%7tR -o_/+QpA+ags8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! -s8W-!s8W-!s8W-!s8W-!s8W-!s7H$\s8W-!s8W-!s8W-!s8W,kpA+ags8W-!o_/+\s8N~> -Q -cleartomark end end pagesave restore showpage -%%PageTrailer -%%Trailer -%%Pages: 1 diff --git a/doc/doxygen_logo.gif b/doc/doxygen_logo.gif deleted file mode 100644 index 6b45597..0000000 Binary files a/doc/doxygen_logo.gif and /dev/null differ diff --git a/doc/doxygen_logo_low.gif b/doc/doxygen_logo_low.gif deleted file mode 100644 index 02e3c9a..0000000 Binary files a/doc/doxygen_logo_low.gif and /dev/null differ diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex deleted file mode 100644 index 0514222..0000000 --- a/doc/doxygen_manual.tex +++ /dev/null @@ -1,78 +0,0 @@ -% -% -% -% Copyright (C) 1997-2004 by Dimitri van Heesch. -% -% Permission to use, copy, modify, and distribute this software and its -% documentation under the terms of the GNU General Public License is hereby -% granted. No representations are made about the suitability of this software -% for any purpose. It is provided "as is" without express or implied warranty. -% See the GNU General Public License for more details. -% -% Documents produced by Doxygen are derivative works derived from the -% input used in their production; they are not affected by this license. - -\documentclass[a4paper]{article} -\usepackage{a4wide} -\usepackage{makeidx} -\usepackage{fancyhdr} -\usepackage{float} -\usepackage{graphicx} -\usepackage{epsf} -\usepackage{doxygen} -\usepackage{multicol} -\usepackage{times} -\usepackage{alltt} -\usepackage[pdftex, - pagebackref=true, - colorlinks=true, - linkcolor=blue - ]{hyperref} -\makeindex -\setcounter{tocdepth}{1} -\renewcommand{\footrulewidth}{0.4pt} -\begin{document} -\begin{titlepage} -\includegraphics[width=\textwidth]{doxygen_logo} -\begin{center} -Manual for version $VERSION\\[2ex] -Written by Dimitri van Heesch\\[2ex] -\copyright 1997-2004 -\end{center} -\end{titlepage} -\clearemptydoublepage -\tableofcontents -\clearemptydoublepage -\pagenumbering{arabic} -\include{index} -\part{User Manual} -\input{install} -\input{starting} -\input{docblocks} -\input{lists} -\input{grouping} -\input{formulas} -\input{diagrams} -\input{preprocessing} -\input{autolink} -\input{output} -\input{external} -\input{faq} -\input{trouble} -\part{Reference Manual} -\input{features} -\input{history} -\input{doxygen_usage} -\input{doxytag_usage} -\input{doxywizard_usage} -\input{installdox_usage} -\input{config} -\input{commands} -\input{htmlcmds} -\part{Developers Manual} -\input{arch} -\input{perlmod} -%\input{perlmod_tree} -\input{langhowto} -\printindex -\end{document} diff --git a/doc/doxygen_usage.doc b/doc/doxygen_usage.doc deleted file mode 100644 index 18773e5..0000000 --- a/doc/doxygen_usage.doc +++ /dev/null @@ -1,97 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page doxygen_usage Doxygen usage - -Doxygen is a command line based utility. Calling \c doxygen with the -\c --help option at the command line will give you a brief description of the -usage of the program. - -All options consist of a leading character -, -followed by one character and one or more arguments depending on the option. - -To generate a manual for your project you typically -need to follow these steps: -

    -
  1. You document your source code with - special documentation blocks (see section \ref specialblock). -
  2. You generate a configuration file (see section \ref config) by - calling doxygen with the \c -g option: -\verbatim -doxygen -g -\endverbatim -
  3. You edit the configuration file so it matches your project. - In the configuration file you can specify the input files and - a lot of optional information. -
  4. You let doxygen generate the documentation, based on the settings in the - configuration file: -\verbatim -doxygen -\endverbatim -
- -If you have a configuration file generated with an older version of -doxygen, you can upgrade it to the current version by running doxygen -with the -u option. -\verbatim -doxygen -u -\endverbatim -All configuration settings in the orginal configuration file will be copied -to the new configuration file. Any new options will have their default value. -Note that comments that you may have added in the original configuration file -will be lost. - -If you want to fine-tune the way the output looks, doxygen allows you -generate default style sheet, header, and footer files that you can edit -afterwards: -
    -
  • For HTML output, you can generate the default header file - (see \ref cfg_html_header "HTML_HEADER"), the default footer - (see \ref cfg_html_footer "HTML_FOOTER"), and the default style - sheet (see \ref cfg_html_stylesheet "HTML_STYLESHEET"), using the - following command: -\verbatim -doxygen -w html header.html footer.html stylesheet.css -\endverbatim -
  • For LaTeX output, you can generate the first part of \c refman.tex - (see \ref cfg_latex_header "LATEX_HEADER") and the style sheet included - by that header (normally doxygen.sty), using: -\verbatim -doxygen -w latex header.tex doxygen.sty -\endverbatim -If you need non-default options (for instance to use pdflatex) you need -to make a config file with those options set correctly and then specify -that config file as the forth argument. -
  • For RTF output, you can generate the default style sheet file (see - \ref cfg_rtf_stylesheet_file "RTF_STYLESHEET_FILE") using: -\verbatim -doxygen -w rtf rtfstyle.cfg -\endverbatim -
- -Note:
-
    -
  • If you do not want documentation for each item inside the configuration - file then you can use the optional \c -s option. This can use be - used in combination with the \c -u option, to add or strip the - documentation from an existing configuration file. - Please use the \c -s option if you send me a configuration file - as part of a bug report! -
  • To make doxygen read/write to standard input/output instead of from/to - a file, use \c - for the file name. -
- -*/ diff --git a/doc/doxysearch_usage.doc b/doc/doxysearch_usage.doc deleted file mode 100644 index 3310d0a..0000000 --- a/doc/doxysearch_usage.doc +++ /dev/null @@ -1,180 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2003 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page doxysearch_usage Doxysearch usage - -Doxysearch is a small, fast and highly portable search engine that allows -you to search for strings or words in the documentation generated by -doxygen or -in the Qt documentation (see below). -Doxysearch must be run as a CGI binary. This implies the following: -
    -
  • There must be a HTTP daemon running on the system where you want to - install the documentation (the target) -
  • You must have permission to install and execute a CGI binary on the - target. -
-Ask your system administrator or provider if you are unsure if this is possible. - -In order to be able to search fast and efficient, doxysearch does not -search the generated documentation directly. Instead, it uses an -index file, that should be generated with -doxytag. The index file is extracted from -the generated HTML files and contains all words and substrings of words -present in the HTML files, in a compact form, together with their -frequencies and links. Although I tried to store all information -as compactly as possible, the size of the index is still quite large. -Usually it is about the same size as the original HTML files. - -I have tried to make the search engine highly portable, because it -must run on the target system. As a result doxysearch does not require the -Qt library. All that is required to build doxysearch is a C++ compiler. -If you are using \c g++ for example, you can build the search engine manually, -by typing: -\verbatim - g++ doxysearch.cpp -o doxysearch -\endverbatim - - -

Generating the search engine

- -To include a search engine in the documentation generated by doxygen -follow these steps: -
    -
  1. Generate a configuration file with - doxygen using the - -g option, if you haven't done this already. - -
  2. Edit the search engine section (see section \ref config_search of - the configuration file). - Make sure the \c SEARCHENGINE tag is set to \c YES - and that all paths are correct. - -
  3. Use doxygen to generate the - documentation. Apart from the documentation, Doxygen will create the - following files: -
      -
    • A small shell script. The name of the script is determined by the - \c CGI_NAME tag in the configuration file. - The script is a small wrapper that calls \c doxysearch with - the correct parameters. Using this script allows multiple - search engines for different projects to be present in one directory. -
    • \c search.cfg: this file is a small configuration file - for the search engine. It contains two lines of text. The first line - should be the absolute URL to the documentation. The second line should - be the absolute URL to the CGI script. This information is taken from - the configuration file. -
    • \c search.gif: this is the image that is used for the search button. -
    - - \par Note: - On the Windows platform Unix shell scripts cannot be used. - In fact the HTTP daemon that I tried (apache for Windows) only - recognized .cgi files that were renamed - executables (so DOS batch files do not seem to work either). Therefore, - on Windows a small C program will be generated by doxygen. - You should compile and link the program with your favourite - compiler and change the extension of the executable from - .exe to .cgi. - -
  4. Copy (or move) the CGI script to the directory where the CGI binaries - are located. - This is usually a special directory on your system or in your - home directory. - Consult the manual of your HTTP daemon or your system administrator to - find out where this directory resides on your system. - -
  5. Go to the directory where the generated HTML files are located and run - doxytag as follows: -
    doxytag -s search.idx
    - This will create a search index with the name search.idx. - Currently the index file must be called like this. - -
  6. If you change the location of the search engine or the documentation - and you do not want to regenerate the HTML output, you can simply edit - the generated search.cfg file and run the generated - installdox script to correct - the links in the documentation. - -
- - -

Creating a search engine to search in the Qt documentation

-
- -Using doxytag and doxysearch it is possible to create a search engine for -the Qt documentation, without needing the sources! -This can be done by carefully following these steps: -
    -
  1. Go to the html directory of the Qt-distribution: -
    cd \$QTDIR/html
    -
  2. Generate the search index by typing: -
    doxytag -s search.idx
    - in the directory where the HTML files are located. - This will parse all files and build a search index. - Apart from the file search.idx two other files - will be generated: search.gif and search.cgi - - \par Note: - Doxytag requires quite a large amount of memory to - generate the search index (about 30 MB on my Linux box)! - The resulting index file requires about 3 MB of space on your disk. - -
  3. Edit the shell script search.cgi with a text editor. - - Fill in the absolute path to the doxysearch binary after - the DOXYSEARCH= tag. - On my system this becomes: -
    DOXYSEARCH=/usr/local/bin/doxysearch
    - - Fill in the absolute path to the qt documentation after the - DOXYPATH= tag. - On my system this becomes: -
    DOXYPATH=/usr/local/qt/html
    -
  4. - CGI binaries are usually located in a special directory. - Consult the manual of your HTTP daemon or your system administrator to - find out, where this directory resides on your system. - Copy (or move) the search.cgi script to this directory. - If needed you may change the name of the script. - On my system, this becomes: -
    cp search.cgi /usr/local/lib/httpd/cgi-bin/
    - -
  5. Create a text-file with the name search.cfg. - On the first line, you must put the absolute URL to the Qt - documentation. - Since, I only use the search engine on my own standalone system, I use - the file: protocol. - On the second line, you must put the absolute URL to the - cgi script. - On my system the resulting file looks like this: -\verbatim -file:///usr/local/qt/html -http://blizzard/cgi-bin/search.cgi -\endverbatim - -
  6. Add a link to the search engine in the Qt documentation. - On my system, I have put a line -\verbatim -
  7. Search the documentation -\endverbatim - in the additional information section of the index.html file. -
  8. Start your favourite web browser and click on the link. - If everything is OK, you should get a page where you can enter - search terms. -
- -*/ diff --git a/doc/doxytag.1 b/doc/doxytag.1 deleted file mode 100644 index fcaa84b..0000000 --- a/doc/doxytag.1 +++ /dev/null @@ -1,20 +0,0 @@ -.TH DOXYTAG "1" "DATE" "doxytag VERSION" "User Commands" -.SH NAME -doxytag \- generates a tag file and/or a search index for a set of HTML files -.SH SYNOPSIS -.B doxytag -[\fI-t tag_file\fR] [\fI-s index_file\fR] [ \fIhtml_file \fR[\fIhtml_file\fR...] ] -.SH DESCRIPTION -Generates a tag file and/or a search index for a set of HTML files. Use -doxysearch as a CGI program to search the tag file generated by doxytag. -.SH OPTIONS -.TP -\fB\-t\fR -Generate tag file . -.TP -\fB\-s\fR Generate search index . -.PP -If no HTML files are given all files in the current dir that -have a .html extension are parsed. -.SH SEE ALSO -doxygen(1), doxywizard(1). diff --git a/doc/doxytag_usage.doc b/doc/doxytag_usage.doc deleted file mode 100644 index 2d5d5ea..0000000 --- a/doc/doxytag_usage.doc +++ /dev/null @@ -1,97 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page doxytag_usage Doxytag usage - -Doxytag is a small command line based utility. -It can generate tag files. -These tag files can be used with doxygen -to generate references to external documentation -(i.e. documentation not contained in the input files that are used by -doxygen). - -A tag file contains information about files, classes and members -documented in external documentation. Doxytag extracts this information -directly from the HTML files. This has the advantage that you do not need -to have the sources from which the documentation was extracted. - -If you \e do have the sources it is better to let \c doxygen generate the -tag file by putting the name of the tag file after -\ref cfg_generate_tagfile "GENERATE_TAGFILE" in -the configuration file. - -The input of doxytag consists of a set of HTML files. - -\par Important: - If you use tag files, the links that - are generated by doxygen will contain \e dummy links. You have to run - the \c installdox script to change these dummy links into real links. - See \ref installdox_usage for more information. - The use of dummy links may seem redundant, but it is really useful, - if you want to move the external documentation to another location. - Then the documentation does not need to be regenerated by \c doxygen, - only \c installdox has to be run. - -\par Note: - Because the HTML files are expected to have a certain - structure, only HTML files generated with doxygen or with Qt's class - browser generator can be used. Doxytag only reads the HTML files, - they are not altered in any way. - -Doxytag expects a list of all HTML files that form the documentation -or a directory that contains all HTML files. If neither is present doxytag -will read all files with a .html extension from the current directory. -If doxytag is used with the -t flag it generates a tag file. - -\par Example 1: - Suppose the file \c example.cpp from the \c examples directory that is listed - below is included in some package for which you do not have the sources. - Fortunately, the distributor of the packages included the HTML documentation - that was generated by doxygen in the package. - \verbinclude example.cpp - Now you can create a tag file from the HTML files in the package by - typing: -\verbatim -doxytag -t example.tag example/html -\endverbatim - from the examples directory. - Finally you can use this tag file with your own piece of code, such - as done in the following example: - \verbinclude tag.cpp - Doxygen will now include links to the external package in your own - documentation. Because the tag file does not specify where the - documentation is located, you will have to specify that by running the - installdox script that doxygen generates - (See section \ref installdox_usage for more information). - - Note that this is actually a feature because if you (or someone else) - moves the external documentation to a different - directory or URL you can simply run the script again and all links in - the HTML files will be updated. - - \htmlonly - Click here - for the corresponding HTML documentation that is generated by Doxygen using - only the tag file and second piece of code. - \endhtmlonly - -\par Example 2: - To generate a tag file of the Qt documentation you can do the following: -\verbatim -doxytag -t qt.tag $QTDIR/doc/html -\endverbatim - -*/ diff --git a/doc/doxywizard.1 b/doc/doxywizard.1 deleted file mode 100644 index 4195cbb..0000000 --- a/doc/doxywizard.1 +++ /dev/null @@ -1,10 +0,0 @@ -.TH DOXYWIZARD "1" "DATE" "doxywizard VERSION" "User Commands" -.SH NAME -doxywizard \- a tool to configure and run doxygen on your source files -.SH SYNOPSIS -.B doxywizard -.SH DESCRIPTION -Doxywizard is an interactive frontend to the doxygen tool to configure -and run doxygen on your source files. -.SH SEE ALSO -doxygen(1), doxytag(1). diff --git a/doc/doxywizard.gif b/doc/doxywizard.gif deleted file mode 100644 index 80bb636..0000000 Binary files a/doc/doxywizard.gif and /dev/null differ diff --git a/doc/doxywizard_expert.png b/doc/doxywizard_expert.png deleted file mode 100644 index 93fd4ee..0000000 Binary files a/doc/doxywizard_expert.png and /dev/null differ diff --git a/doc/doxywizard_main.png b/doc/doxywizard_main.png deleted file mode 100644 index e57c144..0000000 Binary files a/doc/doxywizard_main.png and /dev/null differ diff --git a/doc/doxywizard_menu.png b/doc/doxywizard_menu.png deleted file mode 100644 index 37adc46..0000000 Binary files a/doc/doxywizard_menu.png and /dev/null differ diff --git a/doc/doxywizard_page1.png b/doc/doxywizard_page1.png deleted file mode 100644 index ee3181d..0000000 Binary files a/doc/doxywizard_page1.png and /dev/null differ diff --git a/doc/doxywizard_page2.png b/doc/doxywizard_page2.png deleted file mode 100644 index dc9b5a8..0000000 Binary files a/doc/doxywizard_page2.png and /dev/null differ diff --git a/doc/doxywizard_page3.png b/doc/doxywizard_page3.png deleted file mode 100644 index f75e63f..0000000 Binary files a/doc/doxywizard_page3.png and /dev/null differ diff --git a/doc/doxywizard_page4.png b/doc/doxywizard_page4.png deleted file mode 100644 index e4f4361..0000000 Binary files a/doc/doxywizard_page4.png and /dev/null differ diff --git a/doc/doxywizard_usage.doc b/doc/doxywizard_usage.doc deleted file mode 100644 index c678c81..0000000 --- a/doc/doxywizard_usage.doc +++ /dev/null @@ -1,138 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page doxywizard_usage Doxywizard usage - -Doxywizard is a GUI front-end for configuring and running doxygen. - -When you start doxywizard it will display the main window -(the actual look depends on the OS used). - -\image html doxywizard_main.png "Main window" - -The windows shows the steps to take to configure and run doxygen. -The first step is to choose one of the ways to configure doxygen. -
-
Wizard
Click this button to quickly configure the most important - settings and leave the rest of the options to their defaults. -
Expert
Click this button to to gain access to the - \ref config "full range of configuration options". -
Load
Click this button to load an existing configuration file - from disk. -
-Note that you can select multiple buttons in a row, for instance to first -configure doxygen using the Wizard and then fine tune the settings via -the Expert. - -After doxygen is configured you need to save the configuration as a file -to disk. This second step allows doxygen to use the configuration -and has the additional advantage that the configuration can be reused -to run doxygen with the same settings at a later point in time. - -Since some configuration options may use relative paths, the next step is -to select a directory from which to run doxygen. This is typically the root -of the source tree and will most of the time already be filled in correctly. - -Once the configuration file is saved and the working directory is set, you -can run doxygen based on the selected settings. Do this by pressing the -"Start" button. Once doxygen runs you can cancel it by clicking the same -button again. The output produced by doxygen is captured and shown in a log -window. Once doxygen finishes, the log can be saved as a text file. - -

The Wizard Dialog

- -If you select the Wizard button in step 1, then a dialog with -a number of tabs will appear. - -\image html doxywizard_page1.png "Wizard dialog: Project settings" - -The fields in the project tab speak for themselves. Once doxygen has finished -the Destination directory is where to look for the results. Doxygen will -put each output format in a separate sub-directory. - -\image html doxywizard_page2.png "Wizard dialog: Mode of operating" - -The mode tab allows you to select how doxygen will look at your sources. -The default is to only look for things that have been documented. - -You can also select how doxygen should present the results. -The latter does not affect the way doxygen parses your source code. - -\image html doxywizard_page3.png "Wizard dialog: Output to produce" - -You can select one or more of the output formats that doxygen should -produce. For HTML and LaTeX there are additional options. - -\image html doxywizard_page4.png "Wizard dialog: Diagrams to generate" - -Doxygen can produce a number of diagrams. Using the diagrams tab you -can select which ones to generate. For most diagrams the -dot tool of the GraphViz package -is needed (if you use the binary packages for Mac or Windows this -tool is already included). - -

Expert dialog

- -The Expert dialog has a number of tab fields, one -for each section in the configuration file. Each tab-field -contains a number of lines, one for each configuration option in -that section. - -The kind of input widget depends on the type of the configuration option. -
    -
  • For each boolean option (those options that are answered with YES or - NO in the configuration file) there is a check-box. -
  • For items taking one of a fixed set of values (like - \ref cfg_output_language "OUTPUT_LANGUAGE") a combo box is used. -
  • For items taking an integer value from a range, a spinbox is used. -
  • For free form string-type options there is a one line edit field -
  • For options taking a lists of strings, a one line edit field is - available, with a `+' button to add this string to the list and - a `-' button to remove the selected string from the list. There - is also a `*' button that, when pressed, - replaces the selected item in the list with the string entered in the - edit field. -
  • For file and folder entries, there are special buttons - that start a file selection dialog. -
- -\image html doxywizard_expert.png "Some options from the Expert dialog" - -The get additional information about the meaning of an option, click -on the "Help" button at the bottom right of the dialog and then on the -item. A tooltip with additional information will appear. - -

Menu options

- -The GUI front-end has a menu with a couple of useful items - -\image html doxywizard_menu.png "File menu" - -
-
Open...
This is the same as the "Load" button in the main window - and allows to open a configuration file from disk. -
Save as..
This is the same as the "Save" button in the main window - and can be used to save the current configuration settings to disk. -
Recent configurations
Allow to quickly load a recently saved - configuration. -
Set as default...
Stores the current configuration settings as the - default to use next time the GUI is started. You will be asked to - confirm the action. -
Reset...
Restores the factory defaults as the default settings to use. - You will be asked to confirm the action. -
- -*/ diff --git a/doc/external.doc b/doc/external.doc deleted file mode 100644 index 9e156d1..0000000 --- a/doc/external.doc +++ /dev/null @@ -1,138 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page external Linking to external documentation - -If your project depends on external libraries or tools, there are several -reasons to not include all sources for these with every run of doxygen: - -
-
Disk space:
Some documentation may be available outside of the output - directory of doxygen already, for instance somewhere on the web. - You may want to link to these pages instead of generating the documentation - in your local output directory. -
Compilation speed:
External projects typically have a different update - frequency from your own project. It does not make much sense to let doxygen - parse the sources for these external project over and over again, even if - nothing has changed. -
Memory:
For very large source trees, letting doxygen parse all sources - may simply take too much of your system's memory. By dividing the sources - into several "packages", the sources of one package can be parsed by - doxygen, while all other packages that this package depends on, are - linked in externally. This saves a lot of memory. -
Availability:
For some projects that are documented with doxygen, - the sources may just not be available. -
Copyright issues:
If the external - package and its documentation are copyright someone else, it may be - better - or even necessary - to reference it rather than include a - copy of it with your project's documentation. When the author forbids - redistribution, this is necessary. If the author requires compliance - with some license condition as a precondition of redistribution, and - you do not want to be bound by those conditions, referring to their - copy of their documentation is preferable to including a copy. - -
- -If any of the above apply, you can use doxygen's tag file mechanism. -A tag file is basically a compact representation of the entities found in the -external sources. Doxygen can both generate and read tag files. - -To generate a tag file for your project, simply put the name of the -tag file after the \ref cfg_generate_tagfile "GENERATE_TAGFILE" option in -the configuration file. - -To combine the output of one or more external projects with your own project -you should specify the name of the tag files after -the \ref cfg_tagfiles "TAGFILES" option in the configuration file. - -A tag file does not contain information about where the external documentation -is located. This could be a directory or an URL. So when you include a tag -file you have to specify where the external documentation is located. -There are two ways to do this: -
-
At configuration time:
just assign the location of the output to the - tag files specified after the \ref cfg_tagfiles "TAGFILES" configuration - option. If you use a relative path it should be relative with respect to - the directory where the HTML output of your project is generated. -
After compile time:
if you do not assign a location to a tag file, - doxygen will generate dummy links for all external HTML references. It will - also generate a perl script called \ref installdox_usage "installdox" in - the HTML output directory. This script should be run to replace the - dummy links with real links for all generated HTML files. -
- -\par Example: -Suppose you have a project \c proj that uses two external -projects called \c ext1 and \c ext2. -The directory structure looks as follows: - -\par -\verbatim - - +- proj - | +- html HTML output directory for proj - | +- src sources for proj - | |- proj.cpp - +- ext1 - | +- html HTML output directory for ext1 - | |- ext1.tag tag file for ext1 - +- ext2 - | +- html HTML output directory for ext2 - | |- ext2.tag tag file for ext2 - |- proj.cfg doxygen configuration file for proj - |- ext1.cfg doxygen configuration file for ext1 - |- ext2.cfg doxygen configuration file for ext2 -\endverbatim - -\par -Then the relevant parts of the configuration files look as follows: -\par -proj.cfg: -\verbatim -OUTPUT_DIRECTORY = proj -INPUT = proj/src -TAGFILES = ext1/ext1.tag=../../ext1/html \ - ext2/ext2.tag=../../ext2/html -\endverbatim -ext1.cfg: -\verbatim -OUTPUT_DIRECTORY = ext1 -GENERATE_TAGFILE = ext1/ext1.tag -\endverbatim -ext2.cfg: -\verbatim -OUTPUT_DIRECTORY = ext2 -GENERATE_TAGFILE = ext2/ext2.tag -\endverbatim - -In some (hopefully exceptional) cases you may have the documentation -generated by doxygen, but not the sources nor a tag file. In this case you -can use the \ref doxytag_usage "doxytag" tool to extract a tag file from -the generated HTML sources. Another case where you should use doxytag is -if you want to create a tag file for the Qt documentation. - -The tool \c doxytag depends on the particular structure -of the generated output and on some special markers that are generated by -doxygen. Since this type of extraction is brittle and error-prone I -suggest you only use this approach if there is no alternative. The -doxytag tool may even become obsolete in the future. - -\htmlonly -Go to the next section or return to the - index. -\endhtmlonly - -*/ diff --git a/doc/faq.doc b/doc/faq.doc deleted file mode 100644 index 98fe635..0000000 --- a/doc/faq.doc +++ /dev/null @@ -1,320 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page faq Frequently Asked Questions - -
    -
  1. How to get information on the index page in HTML? -

    -You should use the \\mainpage command inside a comment block like this: -\verbatim -/*! \mainpage My Personal Index Page - * - * \section intro_sec Introduction - * - * This is the introduction. - * - * \section install_sec Installation - * - * \subsection step1 Step 1: Opening the box - * - * etc... - */ -\endverbatim - -

  2. Help, some/all of the members of my class / file / namespace - are not documented? - - Check the following: -
      -
    1. Is your class / file / namespace documented? If not, it will not - be extracted from the sources unless \c EXTRACT_ALL is set to \c YES - in the config file. -
    2. Are the members private? If so, you must set \c EXTRACT_PRIVATE to \c YES - to make them appear in the documentation. -
    3. Is there a function macro in your class that does not end with a - semicolon (e.g. MY_MACRO())? If so then you have to instruct - doxygen's preprocessor to remove it. - - This typically boils down to the following settings in the config file: - - \verbatim -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -PREDEFINED = MY_MACRO()= - \endverbatim - - Please read the \ref preprocessing "preprocessing" section of the - manual for more information. -
    - -
  3. When I set EXTRACT_ALL to NO none of my functions are shown in the - documentation. - -In order for global functions, variables, enums, typedefs, and defines -to be documented you should document the file in which these commands are -located using a comment block containing a \\file (or \@file) -command. - -Alternatively, you can put all members in a group (or module) -using the \\ingroup command and then document the group using a comment -block containing the \\defgroup command. - -For member functions or functions that are part of a namespace you should -document either the class or namespace. - -
  4. How can I make doxygen ignore some code fragment? - -The new and easiest way is to add one comment block -with a \ref cmdcond "\\cond" command at the start and one comment block -with a \ref cmdendcond "\\endcond" command at the end of the piece of -code that should be ignored. This should be within the same file of course. - -But you can also use Doxygen's preprocessor for this: -If you put -\verbatim -#ifndef DOXYGEN_SHOULD_SKIP_THIS - - /* code that must be skipped by Doxygen */ - -#endif /* DOXYGEN_SHOULD_SKIP_THIS */ -\endverbatim -around the blocks that should be hidden and put: -\verbatim - PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS -\endverbatim -in the config file then all blocks should be skipped by Doxygen as long -as PREPROCESSING = YES. - -
  5. How can I change what is after the \#include in the class documentation? - -In most cases you can use STRIP_FROM_INC_PATH to strip a user defined -part of a path. - -You can also document your class as follows - -\verbatim -/*! \class MyClassName include.h path/include.h - * - * Docs for MyClassName - */ -\endverbatim - -To make doxygen put

    - -\#include \ - - -in the documentation of the class MyClassName regardless of the name of the actual -header file in which the definition of MyClassName is contained. - -If you want doxygen to show that the include file should be included using -quotes instead of angle brackets you should type: -\verbatim -/*! \class MyClassName myhdr.h "path/myhdr.h" - * - * Docs for MyClassName - */ -\endverbatim - -
  6. How can I use tag files in combination with compressed HTML? - -If you want to refer from one compressed HTML file -\c a.chm to another compressed HTML file -called \c b.chm, the -link in \c a.chm must have the following format: -\verbatim - -\endverbatim -Unfortunately this only works if both compressed HTML files are in the same -directory. - -As a result you must rename the generated \c index.chm files for all projects -into something unique and put all .chm files in one directory. - -Suppose you have a project \e a referring to a project \e b using tag file -\c b.tag, then you could rename the \c index.chm for project \e a into -\c a.chm and the \c index.chm for project \e b into \c b.chm. In the -configuration file for project \e a you write: -\verbatim -TAGFILES = b.tag=b.chm:: -\endverbatim -or you can use \c installdox to set the links as follows: -\verbatim -installdox -lb.tag@b.chm:: -\endverbatim - -
  7. I don't like the quick index that is put above each HTML page, what do I do? - -You can disable the index by setting DISABLE_INDEX to YES. Then you can -put in your own header file by writing your own header and feed that to -HTML_HEADER. - -
  8. The overall HTML output looks different, while I only wanted to - use my own html header file - -You probably forgot to include the stylesheet doxygen.css that -doxygen generates. You can include this by putting -\verbatim - -\endverbatim -in the HEAD section of the HTML page. - -
  9. Why does doxygen use Qt? - -The most important reason is to have a platform abstraction for most -Unices and Windows by means of the QFile, QFileInfo, QDir, QDate, -QTime and QIODevice classes. -Another reason is for the nice and bug free utility classes, like QList, -QDict, QString, QArray, QTextStream, QRegExp, QXML etc. - -The GUI front-end doxywizard uses Qt for... well... the GUI! - -
  10. How can I exclude all test directories from my directory tree? - -Simply put an exclude pattern like this in the configuration file: - -\verbatim -EXCLUDE_PATTERNS = */test/* -\endverbatim - -
  11. Doxygen automatically generates a link to the - class MyClass somewhere in the running text. - How do I prevent that at a certain place? - -Put a \% in front of the class name. Like this: \%MyClass. Doxygen will then -remove the % and keep the word unlinked. - -
  12. My favourite programming language is X. Can I still use doxygen? - -No, not as such; doxygen needs to understand the structure of what it reads. -If you don't mind spending some time on it, there are several options: -- If the grammar of X is close to C or C++, then it is probably not too hard to - tweak src/scanner.l a bit so the language is supported. This is done - for all other languages directly supported by doxygen - (i.e. Java, IDL, C#, PHP). -- If the grammar of X is somewhat different than you can write an input - filter that translates X into something similar enough to C/C++ for - doxygen to understand (this approach is taken for VB, Object Pascal, and - Javascript, see http://www.stack.nl/~dimitri/doxygen/download.html#helpers). -- If the grammar is completely different one could write a parser for X and - write a backend that produces a similar syntax tree as is done by - src/scanner.l (and also by src/tagreader.cpp while reading tag files). - -
  13. Help! I get the cryptic message - "input buffer overflow, can't enlarge buffer because scanner uses REJECT" - -This error happens when doxygen's lexical scanner has a rule that matches -more than 256K of input characters in one go. I've seen this happening -on a very large generated file (\>256K lines), where the built-in preprocessor -converted it into an empty file (with \>256K of newlines). Another case -where this might happen is if you have lines in your code with more than -256K characters. - -If you have run into such a case and want me to fix it, you -should send me a code fragment that triggers the message. To work around -the problem, put some line-breaks into your file, split it up into smaller -parts, or exclude it from the input using EXCLUDE. - -
  14. When running make in the latex dir I get "TeX capacity exceeded". Now what? - -You can edit the texmf.cfg file to increase the default values of the -various buffers and then run "texconfig init". - -
  15. Why are dependencies via STL classes not shown in the dot graphs? - -Doxygen is unware of the STL classes, so it does not know that class A relates -to class B in the following example - -\code -#include - -using namespace std; - -class B {}; - -class A -{ - public: - vector m_bvec; -}; -\endcode - -To overcome this problem you could provide the definition of the vector -class to doxygen (by including the file that defines it at the INPUT tag -in the config file). Since STL header files are often messy, a -(possibly) better approach is to include a dummy definition of a vector -class to the input. Here is an example of a dummy STL file for the vector -class: - -\code -namespace std { - /*! STL vector class */ - template class vector { public: T element; }; -} -\endcode - -I'm still looking for someone who can provide me with definitions -for all (relevant) STL classes. - -
  16. Can I configure doxygen from the command line? - -Not via command line options, but doxygen can read from stdin, -so you can pipe things through it. Here's an example how to override an option -in a configuration file from the command line (assuming a unix environment): - -\verbatim -( cat Doxyfile ; echo "PROJECT_NUMBER=1.0" ) | doxygen - -\endverbatim - -If multiple options with the same name are specified then doxygen will use -the last one. To append to an existing option you can use the += operator. - -
  17. How did doxygen get its name? - -Doxygen got its name from playing with the words -documentation and generator. - -\verbatim -documentation -> docs -> dox -generator -> gen -\endverbatim - -At the time I was looking into lex and yacc, where a lot of things start with -"yy", so the "y" slipped in and made things pronounceable -(the proper pronouncement is Docs-ee-gen, so with a long "e"). - -
  18. What was the reason to develop doxygen? - -I once wrote a GUI widget based on the Qt library (it is still available at -http://qdbttabular.sourceforge.net/ and maintained by Sven Meyer). -Qt had nicely generated documentation (using an internal tool which -they didn't want to release) and I wrote similar docs by hand. -This was a nightmare to maintain, so I wanted a similar tool. I looked at -Doc++ but that just wasn't good enough (it didn't support signals and -slots and did not have the Qt look and feel I had grown to like), -so I started to write my own tool... - -
- -\htmlonly -Go to the next section or return to the - index. -\endhtmlonly - -*/ - diff --git a/doc/features.doc b/doc/features.doc deleted file mode 100644 index 871242d..0000000 --- a/doc/features.doc +++ /dev/null @@ -1,97 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page features Features - -\addindex features -
    -
  • Requires very little overhead from the writer of the documentation. - Plain text will do, but for more fancy or structured output HTML tags - and/or some of doxygen's special commands can be used. -
  • Supports C/C++, Java, (Corba and Microsoft) Java, Python, - IDL, C#, Objective-C and to some extent D and PHP sources. -
  • Supports documentation of files, namespaces, packages, classes, - structs, unions, templates, variables, functions, typedefs, enums and - defines. -
  • JavaDoc (1.1), Qt-Doc, and ECMA-334 (C# spec.) compatible. -
  • Automatically generates class and collaboration diagrams in HTML (as clickable - image maps) and \f$\mbox{\LaTeX}\f$ (as Encapsulated PostScript images). -
  • Uses the dot tool of the Graphviz tool kit to generate - include dependency graphs, collaboration diagrams, and - graphical class hierarchy graphs. -
  • Flexible comment placement: Allows you to put documentation in the - header file (before the - declaration of an entity), source file (before the definition of an entity) - or in a separate file. -
  • Generates a list of all members of a class (including any inherited - members) along with their protection level. -
  • Outputs documentation in on-line format (HTML and UNIX man page) and - off-line format (\f$\mbox{\LaTeX}\f$ and RTF) simultaneously - (any of these can be disabled if desired). All formats are optimized for - ease of reading.
    - Furthermore, compressed HTML can be generated from HTML output using - Microsoft's HTML Help Workshop (Windows only) and PDF can be generated - from the \f$\mbox{\LaTeX}\f$ output. -
  • Includes a full C preprocessor to allow proper parsing of conditional - code fragments and to allow expansion of all or part of macros definitions. -
  • Automatically detects public, protected and private sections, as well as - the Qt specific signal and slots sections. Extraction of private class - members is optional. -
  • Automatically generates references to documented classes, files, namespaces - and members. Documentation of global functions, globals variables, - typedefs, defines and enumerations is also supported. -
  • References to base/super classes and inherited/overridden members are - generated automatically. -
  • Includes a fast, rank based search engine to search for strings or words - in the class and member documentation. -
  • You can type normal HTML tags in your documentation. Doxygen will convert - them to their equivalent \f$\mbox{\LaTeX}\f$, RTF, and man-page - counterparts automatically. -
  • Allows references to documentation generated for other projects - (or another part of the same project) in a location independent way. -
  • Allows inclusion of source code examples that are automatically - cross-referenced with the documentation. -
  • Inclusion of undocumented classes is also supported, allowing to quickly - learn the structure and interfaces of a (large) piece of code without - looking into the implementation details. -
  • Allows automatic cross-referencing of (documented) entities with their - definition in the source code. -
  • All source code fragments are syntax highlighted for ease of reading. -
  • Allows inclusion of function/member/class definitions in the documentation. -
  • All options are read from an easy to edit and (optionally) annotated - configuration file. -
  • Documentation and search engine can be transferred to another - location or machine without regenerating the documentation. -
  • Can cope with large projects easily. -
- -Although doxygen can be used in any C or C++ project, -initially it was specifically designed to be used for projects that make -use of Troll Tech's -Qt toolkit. I have tried to make doxygen -`Qt-compatible'. That is: Doxygen can read the documentation contained in -the Qt source code and create a class browser that looks very similar to the -one that is generated by Troll Tech. Doxygen understands the C++ extensions -used by Qt such as signals and slots. - -Doxygen can also automatically generate links to existing documentation -that was generated with Doxygen or with Qt's non-public class browser -generator. For a Qt based project this means that whenever you refer to -members or classes belonging to the Qt toolkit, a link will be generated to -the Qt documentation. This is done independent of where this documentation -is located! - -*/ diff --git a/doc/formulas.doc b/doc/formulas.doc deleted file mode 100644 index be6438c..0000000 --- a/doc/formulas.doc +++ /dev/null @@ -1,107 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page formulas Including formulas - -Doxygen allows you to put \f$\mbox{\LaTeX}\f$ formulas in the -output (this works only for the HTML and \f$\mbox{\LaTeX}\f$ output, -not for the RTF nor for the man page output). To be able to include -formulas (as images) in the HTML documentation, you will also need to -have the following tools installed -
    -
  • \c latex: the \f$\mbox{\LaTeX}\f$ compiler, needed to parse the formulas. - To test I have used the teTeX 1.0 distribution. -
  • \c dvips: a tool to convert DVI files to PostScript files - I have used version 5.92b from Radical Eye software for testing. -
  • \c gs: the GhostScript interpreter for converting PostScript files - to bitmaps. I have used Aladdin GhostScript 8.0 for testing. -
- -There are three ways to include formulas in the documentation. -
    -
  1. Using in-text formulas that appear in the running text. - These formulas should be put between a pair of \\f\$ - commands, so -\verbatim - The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is - \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$. -\endverbatim results in: - - The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is - \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$. -
    -
  2. Unnumbered displayed formulas that are centered on a separate line. - These formulas should be put between \\f[ and \\f] commands. - An example: -\verbatim - \f[ - |I_2|=\left| \int_{0}^T \psi(t) - \left\{ - u(a,t)- - \int_{\gamma(t)}^a - \frac{d\theta}{k(\theta,t)} - \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi - \right\} dt - \right| - \f] -\endverbatim - results in: - \f[ - |I_2|=\left| \int_{0}^T \psi(t) - \left\{ - u(a,t)- - \int_{\gamma(t)}^a - \frac{d\theta}{k(\theta,t)} - \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi - \right\} dt - \right| - \f] -
  3. Formulas or other latex elements that are not in a math - environment can be specified using \\f{environment}, where - \c environment is the name of the \f$\mbox{\LaTeX}\f$ environment, - the corresponding end command is \\f}. Here is an example for an - equation array -\verbatim - \f{eqnarray*} - g &=& \frac{Gm_2}{r^2} \\ - &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\, - \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ - &=& 9.82066032\,\mbox{m/s}^2 - \f} -\endverbatim - which results in: - \f{eqnarray*} - g &=& \frac{Gm_2}{r^2} \\ - &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\, - \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ - &=& 9.82066032\,\mbox{m/s}^2 - \f} -
-For the first two commands one should make sure formulas contain -valid commands in \f$\mbox{\LaTeX}\f$'s math-mode. For the third command -the section should contain valid command for the specific environment. - -\warning Currently, doxygen is not very fault tolerant in recovering -from typos in formulas. It may have to be necessary to remove the -file formula.repository that is written to the html directory to -a rid of an incorrect formula - -\htmlonly -Go to the next section or return to the - index. -\endhtmlonly - -*/ diff --git a/doc/grouping.doc b/doc/grouping.doc deleted file mode 100644 index 6e942ce..0000000 --- a/doc/grouping.doc +++ /dev/null @@ -1,225 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page grouping Grouping - -Doxygen has three mechanisms to group things together. -One mechanism works at a global level, creating a new page -for each group. These groups are called \ref modules "'modules'" in the documentation. -The second mechanism works within a member list of some compound entity, -and is refered to as a \ref memgroup "'member groups'". -For \ref cmdpage "pages" there is a third grouping mechanism referred to -as \ref subpaging "subpaging". - -\section modules Modules - -Modules are a way to group things together on a separate page. You -can document a group as a whole, as well as all individual members. -Members of a group can be files, namespaces, classes, functions, -variables, enums, typedefs, and defines, but also other groups. - -To define a group, you should put the \ref cmddefgroup "\\defgroup" -command in a special comment block. The first argument of the command -is a label that should uniquely identify the group. -The second argument is the name or title of the group as it should appear -in the documentation. - -You can make an entity a member of a specific group by putting -a \ref cmdingroup "\\ingroup" command inside its documentation block. - -To avoid putting \ref cmdingroup "\\ingroup" commands in the documentation -for each member you can also group members together by the -open marker \@{ before the group and the -closing marker \@} after the group. The markers can -be put in the documentation of the group definition or in a separate -documentation block. - -Groups themselves can also be nested using these grouping markers. - -You will get an error message when you use the same group label more than once. -If you don't want doxygen to enforce unique labels, then you can -use \ref cmdaddtogroup "\\addtogroup" instead of -\ref cmddefgroup "\\defgroup". -It can be used exactly like \ref cmddefgroup "\\defgroup", -but when the group has been defined already, then it silently merges the -existing documentation with the new one. -The title of the group is optional for this command, so you can use -\verbatim -/** \addtogroup